openssh漏洞上次是說(shuō)linux中一個(gè)bug了,下文我給各位整理一下openssh漏洞修復(fù)方法,希望能對(duì)大家有幫助.
近期有幾臺(tái)主機(jī)上線,上線的主機(jī)在進(jìn)行安全合規(guī)掃描時(shí),發(fā)現(xiàn)如下openssh漏洞,其中有幾個(gè)是陳年老漏洞,主要為CVE-2014-1692漏洞(openssh schnorr.c漏洞)為今天一月份的新漏洞,由于主機(jī)沒(méi)有配置外網(wǎng)連接,而且針對(duì)suse和redhat不同的版本,所以使用用了源碼包編譯升級(jí)openssh版本的方式修復(fù).
一、準(zhǔn)備相關(guān)包
- zlib-1.2.5.tar.bz2
- openssl-1.0.1.tar.gz
- openssh-6.6p1.tar.gz
相關(guān)包已上傳百度云盤(pán)上.
二、準(zhǔn)備其他登錄方式
由于其間有卸載ssh的操作,以免登錄不上主機(jī),可以選擇先配置telnet或者vnc來(lái)進(jìn)行遠(yuǎn)程操作,這里以telnet為例,如下:
- # vim /etc/xinetd.d/telnet
- service telnet
- {
- socket_type = stream
- protocol = tcp
- wait = no
- user = root
- server = /usr/sbin/in.telnetd
- disable = yes
- } //Vevb.com
注,如無(wú)telnet-server包,需要先安裝該包后,再配置以上選項(xiàng),配置完后,重啟xinetd守護(hù)進(jìn)程生效并查看是否有23端口的監(jiān)聽(tīng):
- # service xinetd restart
- # netstat -tunlp
安全起見(jiàn)也可以考慮修改下telnet端口或通過(guò)iptables進(jìn)行源地址指定.
三、程序升級(jí)
1、openssl 包的安裝,代碼如下:
- # tar -zxvf openssl-1.0.1.tar.gz
- # cd openssl-1.0.1
- # ./config -fPIC threads shared
- # make
- # make test
- # make install
- # mv /usr/bin/openssl /usr/bin/openssl.OFF
- # mv /usr/include/openssl /usr/include/openssl.OFF
- //該步驟可能提示無(wú)文件,忽略即可
- # ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
- # ln -s /usr/local/ssl/include/openssl /usr/include/openssl
- //移走原先系統(tǒng)自帶的openssl,將自己編譯產(chǎn)生的新文件進(jìn)行鏈接
注:不能卸載原openssl包,否則會(huì)影響系統(tǒng)的ssl加密庫(kù)文件,除非你可以做兩個(gè)軟連接libcryto和libssl.
配置文件搜索路徑,代碼如下:
- # chmod 755 /usr/local/ssl/lib
- # echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
- # /sbin/ldconfig -v
- # openssl version -a
- OpenSSL 1.0.1 14 Mar 2012
- built on:Fri Mar 16 17:14:50 CST 2012
- platform:linux-x86_64
- options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
- compiler: 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
- OPENSSLDIR: "/usr/local/ssl"
2、卸載原openssh包.
備份啟動(dòng)腳本:# cp /etc/init.d/sshd /root/
停止SSHD服務(wù):# /sbin/service sshd stop
卸載系統(tǒng)里原有Openssh:
- # rpm -qa|grep openssh //查詢(xún)系統(tǒng)原安裝的openssh包,全部卸載。
- # rpm -e openssh --nodeps
- # rpm -e openssh-server --nodeps
- # rpm -e openssh-clients --nodeps
- # rpm -e openssh-askpass
- 或rpm -e --nodeps `rpm -qa |grep openssh`
3、解壓安裝zlib包,代碼如下:
- # tar -jxvf zlib-1.2.5.tar.bz2 //首先安裝zlib庫(kù),否則會(huì)報(bào)zlib.c錯(cuò)誤無(wú)法進(jìn)行
- # cd zlib-1.2.5
- # ./configure
- # make&&make install
4、升級(jí)openssh包,先將將/etc/ssh的文件夾備份,代碼如下:
- # mv /etc/ssh /etc/ssh_bak
- # tar -zxvf openssh-6.6p1.tar.gz
- # ./configure --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl --with-md5-passwords --mandir=/usr/share/man --with-pam
- # make
- # make install
編譯過(guò)程中可能報(bào)如下錯(cuò):
- checking for EVP_sha256... yes
- checking whether OpenSSL has NID_X9_62_prime256v1... yes
- checking whether OpenSSL has NID_secp384r1... yes
- checking whether OpenSSL has NID_secp521r1... yes
- checking if OpenSSL's NID_secp521r1 is functional... yes
- checking for ia_openinfo in -liaf... no
- checking whether OpenSSL's PRNG is internally seeded... yes
- configure: error: PAM headers not found --Vevb.com
如果報(bào)此錯(cuò)誤需要安裝相應(yīng)版本的 pam-devel 包,安裝完再重新編譯即可.
5、啟動(dòng)openssh服務(wù)
編譯安裝好后,可以通過(guò)sshd -d 進(jìn)行驗(yàn)證,如果沒(méi)有報(bào)錯(cuò)就可以重新啟用openssh了,代碼如下:
- # cp -p contrib/redhat/sshd.init /etc/init.d/sshd
- (suse: cp contrib/suse/rc.sshd /etc/init.d/sshd)
- # chmod +x /etc/init.d/sshd
- # chkconfig --add sshd
- # cp sshd_config /etc/ssh/sshd_config (如提示覆蓋,yes回車(chē))
- # cp sshd /usr/sbin/sshd (如提示覆蓋,yes回車(chē))
- (redhat:cp ssh-keygen /usr/bin/ssh-keygen)
通過(guò)下面的命令啟動(dòng)ssh服務(wù),代碼如下:
service sshd start 或 service sshd restart
注:ssh -V //如果看到了新的版本號(hào)就沒(méi)問(wèn)題啦,如果沒(méi)有ssh這條命令,執(zhí)行(redhat、suse: ln -s /usr/local/bin/ssh /usr/bin/ssh).
新聞熱點(diǎn)
疑難解答
圖片精選