openssh漏洞修复
近期有几台主机上线,上线的主机在进行安全合规扫描时,发现如下openssh漏洞。其中有几个是陈年老漏洞,主要为CVE-2014-1692漏洞(openssh schnorr.c漏洞)为今天一月份的新漏洞。由于主机没有配置外网连接,而且针对suse和redhat不同的版本,所以使用用了源码包编译升级openssh版本的方式修复。
一、准备相关包
zlib-1.2.5.tar.bz2
openssl-1.0.1.tar.gz
openssh-6.6p1.tar.gz
相关包已上传百度云盘上。
二、准备其他登录方式
由于其间有卸载ssh的操作,以免登录不上主机,可以选择先配置telnet或者vnc来进行远程操作,这里以telnet为例,如下:
1# vim /etc/xinetd.d/telnet
2service telnet
3{
4 socket_type = stream
5 protocol = tcp
6 wait = no
7 user = root
8 server = /usr/sbin/in.telnetd
9 disable = yes
10}
注,如无telnet-server包,需要先安装该包后,再配置以上选项。
配置完后,重启xinetd守护进程生效并查看是否有23端口的监听:
1# service xinetd restart
2# netstat -tunlp
安全起见也可以考虑修改下telnet端口或通过iptables进行源地址指定 。
三、程序升级
1、openssl 包的安装
1# tar -zxvf openssl-1.0.1.tar.gz
2# cd openssl-1.0.1
3# ./config -fPIC threads shared
4# make
5# make test
6# make install
7# mv /usr/bin/openssl /usr/bin/openssl.OFF
8# mv /usr/include/openssl /usr/include/openssl.OFF
9//该步骤可能提示无文件,忽略即可
10# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
11# ln -s /usr/local/ssl/include/openssl /usr/include/openssl
12//移走原先系统自带的openssl,将自己编译产生的新文件进行链接
注:不能卸载原openssl包,否则会影响系统的ssl加密库文件,除非你可以做两个软连接libcryto和libssl 。
配置文件搜索路径:
1# chmod 755 /usr/local/ssl/lib
2# echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
3# /sbin/ldconfig -v
4# openssl version -a
5OpenSSL 1.0.1 14 Mar 2012
6built on: Fri Mar 16 17:14:50 CST 2012
7platform: linux-x86_64
8options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
9compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
10OPENSSLDIR: "/usr/local/ssl"
2、卸载原openssh包
1备份启动脚本 # cp /etc/init.d/sshd /root/
2停止SSHD服务 # /sbin/service sshd stop
3卸载系统里原有Openssh
4# rpm -qa|grep openssh //查询系统原安装的openssh包,全部卸载。
5# rpm -e openssh --nodeps
6# rpm -e openssh-server --nodeps
7# rpm -e openssh-clients --nodeps
8# rpm -e openssh-askpass
9或rpm -e --nodeps `rpm -qa |grep openssh`
3、解压安装zlib包
1# tar -jxvf zlib-1.2.5.tar.bz2 //首先安装zlib库,否则会报zlib.c错误无法进行
2# cd zlib-1.2.5
3# ./configure
4# make&&make install
4、升级openssh包
先将将/etc/ssh的文件夹备份:
1# mv /etc/ssh /etc/ssh_bak
2# tar -zxvf openssh-6.6p1.tar.gz
3# ./configure --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl --with-md5-passwords --mandir=/usr/share/man --with-pam
4# make
5# make install
编译过程中可能报如下错:
1checking for EVP_sha256... yes
2checking whether OpenSSL has NID_X9_62_prime256v1... yes
3checking whether OpenSSL has NID_secp384r1... yes
4checking whether OpenSSL has NID_secp521r1... yes
5checking if OpenSSL's NID_secp521r1 is functional... yes
6checking for ia_openinfo in -liaf... no
7checking whether OpenSSL's PRNG is internally seeded... yes
8configure: error: PAM headers not found
如果报此错误需要安装相应版本的 pam-devel 包。安装完再重新编译即可 。
5、启动openssh服务
编译安装好后,可以通过sshd -d 进行验证,如果没有报错就可以重新启用openssh了
1# cp -p contrib/redhat/sshd.init /etc/init.d/sshd
2(suse: cp contrib/suse/rc.sshd /etc/init.d/sshd)
3# chmod +x /etc/init.d/sshd
4# chkconfig --add sshd
5# cp sshd_config /etc/ssh/sshd_config (如提示覆盖,yes回车)
6# cp sshd /usr/sbin/sshd (如提示覆盖,yes回车)
7(redhat:cp ssh-keygen /usr/bin/ssh-keygen)
通过下面的命令启动ssh服务:service sshd start 或 service sshd restart
注:ssh -V //如果看到了新的版本号就没问题啦!如果没有ssh这条命令,执行(redhat、suse: ln -s /usr/local/bin/ssh /usr/bin/ssh)
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/openssh-schnorr/3930.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.