专注一件事
致力于让运维变得更简单、更高效、更快速。

Centos7解决php: error while loading shared libraries: libonig.so.2报错

IT运维狗阅读(118)

1、故障背景:
CentOS7 执行yum -y update 命令升级系统后,起初测试正常,在执行“php -V”测试报如下错误:

2、多方查找资料后,执行如下命令:

ln -s /usr/lib64/libonig.so /usr/lib64/libonig.so.2

最后重启PHP后,故障解决。

NGINX禁用TLS1.0和TLS1.1使网站更安全

IT运维狗阅读(614)

一、为什么要禁用 TLS1.0、TLS1.1:

SSL 由于以往发现的漏洞,已经被证实不安全。而 TLS1.0 与 SSL3.0 的区别实际上并不太多,并且 TLS1.0 可以通过某些方式被强制降级为 SSL3.0。

由此,支付卡行业安全标准委员会(PCI SSC)强制取消了支付卡行业对 TLS 1.0 的支持,同时强烈建议取消对 TLS 1.1 的支持。

苹果、谷歌、微软、Mozilla 也发表了声明,将于 2020 年初放弃对 TLS 1.1 和 TLS 1.0 的支持。其原因是这两个版本使用的是过时的算法和加密系统,经发现,这些算法和系统是十分脆弱的,比如 SHA-1 和 MD5。它们也缺乏像完美的前向保密性这样的现代特征,并且容易受到降级攻击的影响。

二、在NGINX上禁用TLS1.0、TLS1.1:

编辑NGINX配置文件,原配置文件为:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:

去掉 TLSv1 TLSv1.1 后如下:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:

保存并重新启动NGINX使改动生效。

三、访问 https://myssl.com 检测是否修改成功,成功后评级为A+,如下图:

CentOS 开启SSH双因素认证,增强SSH登录安全

IT运维狗阅读(1061)

一、双因素身份认证介绍
双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统。双因素认证是一种采用时间同步技术的系统,采用了基于时间、事件和密钥三变量而产生的一次性密码来代替传统的静态密码。每个动态密码卡都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证时动态密码卡与服务器分别根据同样的密钥,同样的随机参数(时间、事件)和同样的算法计算了认证的动态密码,从而确保密码的一致性,从而实现了用户的认证。因每次认证时的随机参数不同,所以每次产生的动态密码也不同。由于每次计算时参数的随机性保证了每次密码的不可预测性,从而在最基本的密码认证这一环节保证了系统的安全性。

二、实现目的和方法
在SSH登录服务器时,不仅要输入用户名和密码,还要输入动态验证码,验证通过后登录成功。以下采用Google Authenticator进行开启双因素身份认证。

三、安装过程
1、首先安装时钟同步服务Chrony,以保证时间准确(在系统时间生成动态口令的其中一个主要因素,需要保持终端设备和服务器的系统时间一致,才能生成正确的动态口令),安装Chrony请参考:《CentOS 7利用chrony搭建NTP时钟服务器(替代ntp)
2、安装编译所需依赖组件

yum install -y git automake libtool pam-devel

3、从GitHub上下载Google Authenticator模块

git clone https://github.com/google/google-authenticator-libpam.git

4、安装编译Google Authenticator模块

[root@Cnitdog ~]# cd google-authenticator-libpam/
[root@Cnitdog google-authenticator-libpam]# ./bootstrap.sh
[root@Cnitdog google-authenticator-libpam]# ./configure
[root@Cnitdog google-authenticator-libpam]# make && make install
[root@Cnitdog google-authenticator-libpam]cp /usr/local/lib/security/pam_google_authenticator.so /lib64/security/

5、修改PAM文件,开启SSH登录时调用google-authenticator模块

vi /etc/pam.d/sshd

增加如下命令:

auth required pam_google_authenticator.so no_increment_hotp noskewadj

参数介绍:

no_increment_hotp #确保计数器不会因失败尝试而递增
noskewadj #不自动调整时间偏差
nullok #如果用户尚未设置OTP,则允许用户在没有OTP的情况下登录
echo_verification_code #默认情况下,PAM模块在用户输入验证码时不会回显验证码。

6、编辑 /etc/ssh/sshd_config 文件

vi /etc/ssh/sshd_config 

修改如下内容:

ChallengeResponseAuthentication yes #启用其它认证
UsePAM yes #启用UsePAM模块
PasswordAuthentication yes #允许密码认证

四、开始启用双因素认证保护SSH
1、运行google-authenticator 命令生成一个新的密钥

[root@Cnitdog ~]# google-authenticator
Do you want authentication tokens to be time-based (y/n) y #是否想做一个基于时间的令牌,这里选择 y
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@test%3Fsecret%3DSLZTXLFJ5KT5TWMP%26issuer%3Dtest
 #此处为二维码,使用手机端Google Authenticator进行扫描
 #此处为二维码,使用手机端Google Authenticator进行扫描
 #此处为二维码,使用手机端Google Authenticator进行扫描
 #此处为二维码,使用手机端Google Authenticator进行扫描
 #此处为二维码,使用手机端Google Authenticator进行扫描                                                                                                                                                                                                                       
Your new secret key is: ********
Your verification code is ****** #此处填写手机生成的数字验证码
Your emergency scratch codes are:
  ********
  ********
  ********
  ********
#以上5个代码是紧急代码,务必牢记,这是在你的动态口令无法使用的情况下使用的,记住,用一个失效一个。后期可以登陆上去后,重新生成!

Do you want me to update your "/root/.google_authenticator" file (y/n) y 
#是否更新你的google认证文件,第一次设置,一定要选择 y


Do you want to disallow multiple uses of the same authentication 
token? This restricts you to one login about every 30s, but it increases 
your chances to notice or even prevent man-in-the-middle attacks (y/n) y 
#是否禁止口令多用,为防止中间人欺骗。这里选择 y

By default, tokens are good for 30 seconds. In order to compensate for 
possible time-skew between the client and the server, we allow an extra 
token before and after the current time. If you experience problems 
with poor time synchronization, you can increase the window from its default 
size of +-1min (window size of 3) to about +-4min (window size of 
17 acceptable tokens).Do you want to do so? (y/n) y 
#默认情况,1个口令的有效期是30s,这里是为了防止主机时间和口令客户端时间不一致,设置的误差,根据具体需求,可以选择y,也可选n。

If the computer that you are logging into isn't hardened against brute-force 
login attempts, you can enable rate-limiting for the authentication module. 
By default, this limits attackers to no more than 3 login attempts every 30s. 
Do you want to enable rate-limiting (y/n) y 
#是否打开尝试次数限制,默认情况,30s内不得超过3次登陆测试,防止别人暴力破解。这里选择 y 

五、使用SSH登录工具进行登录。(以下采用putty登录演示)

FOG Project网络克隆系统安装和搭建

IT运维狗阅读(1724)

FOG Project官方地址:https://fogproject.org

FOG Project系统是一个免费的开源计算机网络克隆和管理解决方案系统,与传统的Ghost有很大的不同,如果您是计算机维护管理人员,当有大量机器需要同时部署上线的时候FOG Project是一个可以大大提高工作效率的系统,支持windows、linux等操作系统,包括引导方式也支持UEFI方式进行引导,下面先介绍如何进行安装FOG Project。

一、操作系统和FOG Project下载:

1、FOG Project支持Redhat、CentOS、Debian、Ubuntu等主流操作系统(以下用CentOS 7为例)
2、首先安装git服务,以便从GitHub进行同步FOG Project项目

yum -y install git

3、从GitHub下载FOG Project

git clone https://github.com/fogproject/fogproject.git fog_stable/

二、安装FOG Project
1、进入FOG Project文件夹

cd fog_stable/bin

2、开始安装FOG Project

./installfog.sh

3、相关设置如下图

三、安装完成

1、初始化

2、登录页

默认账户:fog

默认密码:password

四、常见问题

1、很多朋友在安装的时候会卡在如下图这一步:

主要是因为无法下载到以下2个文件,或者在国内下载很慢很慢:

https://fogproject.org/binaries1.5.7.zip

https://fogproject.org/binaries1.5.7.zip.sha256

解决办法:

可以离线先下载后,进入fog_stable目录下建立一个tmp文件夹,将以上两个文件传入后在进行安装即可解决此问题。

推荐是先下载后直接先上传至服务器,这样安装的时候就可以直接完成了。

FOG Project官方此问题解决链接:

https://forums.fogproject.org/topic/13314/failed-to-download-kernel-init-and-fog-client-binaries

 

Windows 2019服务器使用自带“照片查看器”查看图片

IT运维狗阅读(1245)

由于OA服务器存在大量的图片附件,有时备份处理和归档后要进行打开确认,但是windows 2019默认打开方式是画图,不是很方便,以下就是改为用照片查看器查看图片的方法:

1、使用win+R快捷键快速打开运行,输入regedit打开注册表:

2、在注册表中找到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations

3、在右侧新建字符串项:

4、例如新建两项.jpg 和.png值都为:PhotoViewer.FileAssoc.Tiff

5、设置完成后就可以使用照片查看器查看.jpg 和.png的图片了。

CentOS7 配置防火墙firewall

IT运维狗阅读(1049)

1、查看防火墙服务状态

systemctl status firewalld

2、查看防火墙的状态

firewall-cmd --state

3、开启、重启、关闭、firewalld.service服务,禁止开机启动firewalld.service服务

开启firewalld.service服务:

systemctl start firewalld.service

重启firewalld.service服务:

systemctl restart firewalld.service

关闭firewalld.service服务:

systemctl stop firewalld.service

禁止firewalld.service服务开机启动:

systemctl disable firewalld

开启firewalld.service服务开机启动:

systemctl enable firewalld

4、查看防火墙规则

firewall-cmd --list-all 

5、查询、开放、关闭端口

查询80端口是否开放:

firewall-cmd --query-port=22/tcp

查询SSH服务是否开放:

firewall-cmd --query-service=ssh

防火墙开放8080端口:

firewall-cmd --permanent --add-port=8080/tcp

防火墙移除8080端口:

firewall-cmd --permanent --remove-port=8080/tcp

重启防火墙(修改配置后要重启防火墙):

firewall-cmd --reload

6、配置参数解释

firwall-cmd:#是Linux提供的操作firewall的一个工具;
--permanent:#表示设置为持久;
--add-port:#标识添加的端口。

7、防火墙配置文件目录位置
系统配置目录:

/usr/lib/firewalld/services

用户配置目录:

/etc/firewalld/

CentOS 7利用chrony搭建NTP时钟服务器(替代ntp)

IT运维狗阅读(1588)

chrony介绍:

在Windows或Linux服务器的运行时,在内网系统中时间需要相对的精确才能保证服务不出差错,例如AD、DNS、LVS、HA等,都需要后台的服务器之间保持时间的同步。CentOS7中默认安装的是chrony,而CentOS6中使用的是NTP。本篇文章介绍的是在CentOS7环境下搭建chrony时钟同步服务器。

chrony相较于ntp服务,chrony服务有如下几点优势:

1、更快的同步只需要数分钟而非数小时时间,从而最大程度的减少时间和频率误差,这对于并非全天运行的台式计算机或系统而言非常有用;
2、能够更好的响应时间频率的快速变化,这对于具备不稳定时钟的虚拟机或导致时钟频率反生变化的节能技术而言非常有用;
3、在初始同步后,它并不会停止时钟,以防对需要系统时间保持单调的程序造成影响;
4、在应对临时非对称延迟时,(例如,大规模下载造成链接饱和时)提供了更好的稳定性;
5、无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟。

安装过程:

1、关闭系统防火墙和开机启动防火墙:

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

2、关闭系统SELinux服务:
手动关闭:
编辑 vi /etc/selinux/config 将SELINUX修改为disabled,如下图:

命令关闭:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

以上2种方法均为永久关闭SELinux方法,都需要重启后生效。
重启系统:reboot
查看SELinux状态:sestatus

3、进行安装chrony服务:(系统默认安装,如若未安装,请执行以下命令安装chrony)

yum install chrony -y 

4、启动chrony并设置开机自动启动:

systemctl enable chronyd.service
systemctl restart chronyd.service
systemctl status chronyd.service

5、设置时区:

timedatectl set-timezone Asia/Shanghai

6、编辑chrony配置文件,设置上游时钟服务器地址:
vi /etc/chrony.conf
注释掉默认服务器地址,修改服务器地址为阿里的授时服务器。

以下是配置文件:

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server  ntp.aliyun.com iburst #此处为修改的阿里的授时服务器。

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16 #指定一台主机、子网,或者网络允许或拒绝连接到时钟服务器的机器。

# Serve time even if not synchronized to a time source.
#local stratum 10

# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking
                             

配置完成后重启服务:

systemctl restart chronyd.service

查看时间同步源:

chronyc sources -v

查看时间同步源状态:

chronyc sourcestats -v

校准时间服务器:

chronyc tracking

至此,我们需求的一台内网时间服务器已经配置完毕。

Nginx设置禁止使用IP访问,仅允许使用域名访问

IT运维狗阅读(1585)

需求:
在服务器使用中,禁止使用IP地址直接访问服务器上的站点,仅允许使用域名进行访问,好处是防止恶意解析影响服务器上本身正常网站访问。

修改方法有两种,请大家根据需要进行修改。

方法1:
修改配置文件nginx.conf,在server段里插入正则,代码如下:

listen 80;

server_name www.cnitdog.com;

if ($host != 'www.cnitdog.com')

{

return 403;

}

方法2:

修改配置文件nginx.conf,添加一个server,新加的server(注意是新增,并不是在原有的server基础上修改)代码如下:

server {

listen 80 default;

server_name _;
return 403;

}

原来server里面插入:

listen 80;

server_name www.cnitdog.com;

以上两种方法任选其一即可,修改后记得重启nginx服务,重启后可以发现直接使用IP地址访问会跳转到403错误。

Windows 2019 安装图解

IT运维狗阅读(1069)

windows server 2019已经发布一段时间了,下面简单说一下安装过程。

1、准备一个空白U盘(容量8G以上),写入windows server 2019操作系统,U盘写入工具推荐使用 Rufus ,写入成功,启动后如下:

2、选择下一步后点击开始安装,测试使用可以选择“我没有产品密钥进行下一步”;

3、选择安装版本,注意要选择带有“桌面体验”字样的进行安装,否则没有桌面;

4、选择“自定义:仅安装Windows(高级)”然后下一步;

5、根据需要选择新建分区后进行下一步安装;

6、安装完成后系统自动重启,设置符合复杂度的密码进行登录后完成;

7、至此,windows server 2019操作系统安装完成,后续我们会介绍一系列windows相关的服务搭建,例如:IIS、DHCP、DNS、AD等,敬请期待!