最近接收到客户的漏洞提醒,openssl和openssh的漏洞,解决办法就只有升级。linux
~]# ssh -V OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 ~]# rpm -qa | grep openssl openssl-1.0.1e-15.el6.x86_64 ~]# uname -r 2.6.32-431.el6.x86_64 ~]# rpm -qa |grep zlib zlib-1.2.3-29.el6.x86_64 zlib-devel-1.2.3-29.el6.x86_64
升级先后:shell
升级前 | 升级后 | |
---|---|---|
Openssl | Openssl_1.0.1e-fips | openssl-1.0.2j |
Openssh | Openssh_5.3p1 | Openssh-6.9p1 |
为了防止升级openssh过程当中出现问题,ssh链接断开,须要保证链接不能断开,此处使用telnet链接,也可安装别的dropbear等
telnet只容许普通用户登录vim
~]# yum install telnet_server telnet -y ~]# vim /etc/xinetd.d/telnet 将disable项由yes改为no ~]# service xinetd restart 重启后便可链接
源码安装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
因为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 unspecified platform: linux-x86_64 options: 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_ASM OPENSSLDIR: "/usr/local/ssl"
更新openssh前,为了防止ssh链接断开,最好先telnet进服务器,防止意外发生ssh
~]# 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 -V OpenSSH_7.4p1, OpenSSL 1.0.2j 26 Sep 2016
~]# vim /usr/local/myssh/ssh/sshd_config
修改以下配置项:ide