前段时间因为要修复openssh的漏洞,官方说法是升级openssh,所以就选择了升级到 openssh-7.5p1 ,升级openssh连带要升级openssl。
漏洞信息:
Openssh MaxAuthTries限制绕过漏洞(CVE-2015-5600)
OpenSSH 远程权限提升漏洞(CVE-2016-10010)
操作系统:
CentOS-7-x86_64-Minimal-1611
软件包:
openssh-7.5p1.tar.gz
openssl-1.0.2l.tar.gz
(openssl不可以选用1.1.X 版本,否则openssh编译时会报错)
关闭selinux
vim /etc/sysconfig/selinux
修改 SELINUX=disabled
一、升级之前最好先把telnet开起来,防止意外导致ssh无法连接
yum install -y telnet-server
yum install -y xinetd
systemctl enable xinetd.service
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd
默认情况下,系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,需设置如下内容:
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
service xinetd restart ####重启服务
验证登录:
cmd:
如下图示,登录成功。
二、升级openssl
升级前的版本
上传程序包到服务器
安装依赖包:
yum -y install pam-devel.x86_64 zlib-devel.x86_64
卸载旧版程序:
rpm -e --nodeps `rpm -qa|grep openss`
解压缩:
tar -zxvf openssl-1.0.2l.tar.gz
进入解压路径:
cd openssl-1.0.2l
编译安装:
./config --prefix=/usr --shared && make && make install
创建软链接:
ln -s /usr/lib64/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10
ln -s /usr/lib64/libssl.so.1.0.0 /usr/lib64/libssl.so.10
验证版本信息:
openssl version -a
openssl升级完成。
三、升级openssh
备份旧ssh配置文件 /etc/ssh :
mv /etc/ssh/ /home/ssh-bak
解压:
tar -zxvf openssh-7.5p1.tar.gz
进入解压路径:
cd openssh-7.5p1
编译安装:
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
make && make install
复制pam的头文件:
cp contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
(这里的pam其实是没有启用的,所以这一步可以省略,在sshd_config中如果开启pam会出现无法连接的情况,这个问题有待研究)
复制启动脚本:
cp contrib/redhat/sshd.init /etc/init.d/sshd
设置开机启动:
chkconfig sshd on
编辑ssh配置文件:
vim /etc/ssh/sshd_config
取消注释 PasswordAuthentication yes
验证版本信息:
ssh -V
重启ssh服务
service sshd restart
会发现连接不上,这个问题是selinux修改要生效需要重启机器
重启机器后连接成功
升级完成