升级openssl和openssh
最近接收到客户的漏洞提醒,openssl和openssh的漏洞,解决办法就只有升级。
升级前环境
~]# ssh -VOpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013~]# rpm -qa | grep opensslopenssl-1.0.1e-15.el6.x86_64~]# uname -r2.6.32-431.el6.x86_64~]# rpm -qa |grep zlibzlib-1.2.3-29.el6.x86_64zlib-devel-1.2.3-29.el6.x86_64
升级前后:
升级前 | 升级后 | |
---|---|---|
Openssl | Openssl_1.0.1e-fips | openssl-1.0.2j |
Openssh | Openssh_5.3p1 | Openssh-6.9p1 |
升级前准备
为了防止升级openssh过程中出现问题,ssh连接断开,需要保证连接不能断开,此处使用telnet连接,也可安装别的dropbear等
telnet只允许普通用户登陆~]# yum install telnet_server telnet -y~]# vim /etc/xinetd.d/telnet将disable项由yes改成no~]# service xinetd restart重启后即可连接
操作过程
一、安装zlib
源码安装openssh、openssl,为了避免zlib库文件版本过低,同时编译安装zlib库
~]# tar xf zlib-1.2.7.tar.gz~]# cd zlib-1.2.7~]# ./configure --shared...Checking for return value of vsnprintf()... Yes.Checking for attribute(visibility) support... Yes.**Looking for a four-byte integer type... Found.** //这个是由于zlib并非使用的标准autotools,没有考虑交叉编译的情况,这个错误是执行测试程序导致的,用于检测32bit整型是int还是long还是别的,该错误无关紧要,可以忽略~]# make && make test~]# make install
二、安装openssl
由于openssh依赖于openssl库,所以在安装openssh前要先安装openssl库
~]# tar xf openssl-1.0.2j.tar.gz~]# cd openssl-1.0.2j~]# ./config shared //默认安装路径(/usr/local/ssl)~]# make && make test //测试没报错,继续往下执行~]# make install备份及软链接命令:~]# mv /usr/bin/openssl{,_bak}~]# mv /usr/include/openssl{,_bak}~]# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl~]# ln -s /usr/local/ssl/include/openssl /usr/include/openssl搜索出可共享的动态链接库,进而创建出动态装入程序(ld.so)所需的连接和缓存文件,让刚安装的openssl动态链接库为系统所共享。~]# sed -i '1 i /usr/local/ssl/lib' /etc/ld.so.conf //在文件行首添加新安装的openssl~]# ldconfig //加载查看版本:~]# openssl version -a**OpenSSL 1.0.2j 26 Sep 2016**built on: reproducible build, date unspecifiedplatform: linux-x86_64options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASMOPENSSLDIR: "/usr/local/ssl"
三、安装openssh
更新openssh前,为了防止ssh连接断开,最好先telnet进服务器,防止意外发生
~]# mkdir /usr/local/myssh/ssh -p //安装在自己新建的目录里~]# tar xf openssh-7.4p1.tar.gz~]# cd openssh-7.4p1~]# ./configure --prefix=/usr/local/myssh --sysconfdir=/usr/local/myssh/ssh --with-ssl-dir=/usr/local/ssl --with-privsep-path=/var/myempty --with-privsep-user=sshd --with-zlib --with-ssl-engine --with-md5-passwords --disable-etc-default-login~]# make && make install备份及软链接命令:~]# mv /etc/init.d/sshd{,_bak}~]# cp -a contrib/redhat/sshd.init /etc/init.d/sshd //拷贝启动脚本~]# chmod u+x /etc/init.d/sshd~]# mv /usr/sbin/sshd{,_bak}~]# ln -s /usr/local/myssh/sbin/sshd /usr/sbin/sshd //sshd命令~]# mv /usr/bin/ssh-keygen{,_bak}~]# ln -s /usr/local/myssh/bin/ssh-keygen /usr/bin/ssh-keygen //老的ssh-keygen默认没有-A参数,如果不链接,就会有提示信息“ssh-keygen: illegal option -- A”~]# mv /usr/bin/ssh{,_bak}~]# mv /usr/local/myssh/查看版本:~]# ssh -VOpenSSH_7.4p1, OpenSSL 1.0.2j 26 Sep 2016
修改配置文件,并检验升级是否成功
~]# vim /usr/local/myssh/ssh/sshd_config
修改如下配置项:
- PermitRootLogin yes //允许root用户登陆