实现前提
公司服务器需要进行安全测评,扫描漏洞的设备扫出了关于 openssh 漏洞,主要是因为 openssh的当前版本为5.3,版本低了,而yum最新的openssh也只是5.3,没办法只能到 rpm 官网找新的包,找到最新的是 6.4,然后通过 yum localinstall 升级了,但是安全部门反映还存在 openssh 漏洞,没办法只能去openssh官网找最新的release,安装版本是 7.7!
升级原因
7.4以下版本openssh版本存在严重漏洞:
1.OpenSSH 远程权限提升漏洞(CVE-2016-10010)
2.OpenSSH J-PAKE授权问题漏洞(CVE-2010-4478)
3.Openssh MaxAuthTries限制绕过漏洞(CVE-2015-5600)
OpenSSL>=1.0.1可以不用升级OpenSSL
升级前操
为避免升级过程中ssh异常,造成连接断开而无法继续操作服务器,故先留条后路,部署telnet;操作如下:
# yum -y install telnet-server* telnet
# vi /etc/xinetd.d/telnet (将其中disable字段的yes改为no以启用telnet服务)
# mv /etc/securetty /etc/securetty.old #允许root用户通过telnet登录
# service xinetd start
# chkconfig xinetd on
# 部署完毕后,用telnet测试登陆服务器;
升级操作
笔者将升级内容做成了脚本,在服务器上执行以下脚本,即可实现openssh的版本升级,脚本如下:
# cat upte_openssh.sh
#!/bin/bash # by kazihuo. wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.7p1.tar.gz mv /etc/ssh /etc/ssh.old mv /etc/init.d/sshd /etc/init.d/sshd.old yum -y remove openssh openssh-server openssh-clients openssh-askpass install -v -m700 -d /var/lib/sshd chown -v root:sys /var/lib/sshd groupadd -g 50 sshd useradd -c ‘sshd PrivSep‘ -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd tar -axf openssh-7.7p1.tar.gz cd openssh-7.7p1 yum -y install pam-devel gcc pam-devel zlib-devel ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd make && make install install -v -m755 contrib/ssh-copy-id /usr/bin install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1 install -v -m755 -d /usr/share/doc/openssh-7.7p1 install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.7p1 ssh -V echo ‘X11Forwarding yes‘ >> /etc/ssh/sshd_config echo "PermitRootLogin yes" >> /etc/ssh/sshd_config cp -p contrib/redhat/sshd.init /etc/init.d/sshd chmod +x /etc/init.d/sshd chkconfig --add sshd chkconfig sshd on service sshd restart
版本验证
# ssh -V
OpenSSH_7.7p1, OpenSSL 1.0.2k-fips 26 Jan 2017
哦……成功了耶!
原文地址:https://www.cnblogs.com/kazihuo/p/9670188.html