OpenSSL "SSL-Death-Alert" 拒绝服务漏洞(CVE-2016-8610)【原理扫描】
1.1下载升级包
当前最新版
openssl
https://www.openssl.org/source/
https://www.openssl.org/source/openssl-1.0.2l.tar.gz
https://www.openssl.org/source/openssl-1.1.0f.tar.gz
openssh
https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/
https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
1.2查看现有环境版本
openssl version OpenSSL 1.0.1e-fips 11 Feb 2013
1.3查看原有安装包
rpm -qa|grep openssl openssl-1.0.1e-57.el6.x86_64 openssl-devel-1.0.1e-57.el6.x86_64
查看依赖情况(主要是libcrypto.so.10 libssl.so.10 这两个文件)
rpm -e openssl-1.0.1e-57.el6.x86_64
查看这2个文件位置
ll `find / -name libcrypto.so.10` lrwxrwxrwx. 1 root root 19 9月 20 18:34 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.1e ll `find / -name libssl.so.10` lrwxrwxrwx. 1 root root 16 9月 20 18:34 /usr/lib64/libssl.so.10 -> libssl.so.1.0.1e
1.4备份现有环境
mv /usr/bin/openssl /usr/bin/openssl.old mv /usr/include/openssl /usr/include/openssl.old
删除原安装包
rpm -e --nodeps openssl-1.0.1e-57.el6.x86_64
1.5解压安装包开始编译安装
(建议一步一步操作,以防有错误发送可以及时发现)
tar xzf openssl-1.0.2l.tar.gz cd openssl-1.0.2l ./config shared zlib-dynamic make make install
生成软连接
rm -rf /usr/local/lib64/libssl.so /usr/lib64/libcrypto.so /usr/local/bin/openssl /usr/bin/openssl /usr/include/openssl /usr/local/lib64/libssl.so /usr/lib64/libssl.so /usr/lib64/libssl.so.10 /usr/lib64/libcrypto.so.10 ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl ln -s /usr/local/ssl/include/openssl /usr/include/openssl ln -s /usr/local/ssl/lib/libcrypto.so /usr/local/lib64/libssl.so ln -s /usr/local/ssl/lib/libssl.so /usr/lib64/libssl.so ln -s /usr/local/ssl/lib/libssl.so /usr/lib64/libssl.so.10 ln -s /usr/local/ssl/lib/libcrypto.so /usr/lib64/libcrypto.so.10 cp /usr/bin/openssl /usr/local/bin/
执行命令查看openssl依赖库版本是否为1.0.1l:
strings /usr/local/lib64/libssl.so |grep OpenSSL OpenSSLDie SSLv3 part of OpenSSL 1.0.2l 25 May 2017 TLSv1 part of OpenSSL 1.0.2l 25 May 2017 DTLSv1 part of OpenSSL 1.0.2l 25 May 2017 OpenSSL 1.0.2l 25 May 2017
在/etc/ld.so.conf文件中写入openssl库文件的搜索路径
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
使修改后的/etc/ld.so.conf生效
ldconfig -v
查看现在openssl的版本是否是升级后的版本
openssl version
接下来
2.1升级openssh
查看现有环境版本
ssh -V
为了防止ssh升级失败造成无法连接,先
2.2安装telent
yum install telnet-server
由于telnet属于xinetd,修改配置文件启用telnet
vim /etc/xinetd.d/telnet disable = no //将yes改为no,则表示允许运行telnet服务,yes表示禁用
#保存退出
#为telnet添加用户(虽然配置文件中指定了root登录,但是由于系统安全加密root登录不了)
useradd telnet_test passwd telnet_test
#开启服务,添加防火墙端口
service xinetd start iptables -I INPUT -p tcp --dport 23 -j ACCEPT service iptables save
2.3备份现有环境
openssh cp -rf /etc/ssh /etc/ssh.bak
删除原有版本
yum remove openssh -y
2.4解压编译安装新版
tar zxvf openssh-7.5p1.tar.gz cd openssh-7.5p1 ./configure -with-ssl-dir=/usr/local/ssl make make install
#添加为服务,并修改设置
cp ./contrib/redhat/sshd.init /etc/init.d/sshd chmod +x /etc/init.d/sshd vim /etc/init.d/sshd SSHD=/usr/sbin/sshd 为 SSHD=/usr/local/sbin/sshd /usr/sbin/ssh-keygen -A 为 /usr/local/bin/ssh-keygen -A
在 $SSHD $OPTIONS && success || failure 这一行上面加上一行 OPTIONS="-f /etc/ssh/sshd_config"
chkconfig --add sshd
#配置允许root用户远程登录
cp sshd_config /etc/ssh/sshd_config vim /etc/ssh/sshd_config
# 修改 PermitRootLogin yes,并去掉注释
#如果有ssh_host_ecdsa_key报错可以从备份文件中恢复或者使用下列命令生成
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" service sshd start
文章评论(0)