OpenSSH roaming_common.c 堆緩沖區溢出漏洞
緩沖區溢出攻擊是利用緩沖區溢出漏洞所進行的攻擊行動。緩沖區溢出是一種非常普遍、非常危險的漏洞,在各種操作系統、應用軟件中廣泛存在。利用緩沖區溢出攻擊,可以導致程序運行失敗、系統關機、重新啟動等后果。
Openssh MaxAuthTries 限制繞過漏洞(CVE-2015-5600)
OpenSSH sshd mm_answer_pam_free_ctx 釋放后重利 用漏洞(CVE-2015-6564)
OpenSSH ‘x11_open_helper()’函數安全限制繞過漏洞 (CVE-2015-5352)
以上漏洞均來自 openssh 升級openssh服務
注意事項,openssh為遠程連接服務,若處理不好可能導致連接不上主機,所以先搭建Telnet連接。
操作系統信息
SUSE Linux
現有ssh版本
tfw:/tmp/dropbear # ssh -V
OpenSSH_6.6p1, OpenSSL 0.9.8j-fips 07 Jan 2009
tfw:/tmp/dropbear # rpm -qa |grep openssl
openssl-certs-0.9.8h-27.3.1
openssl-0.9.8j-0.26.1
libopenssl0_9_8-0.9.8j-0.26.1
libopenssl0_9_8-32bit-0.9.8j-0.26.1
libopenssl1_0_0-32bit-1.0.0c-17.1
libopenssl1_0_0-1.0.0c-17.1
搭建Telnet放行23端口 參考這篇blog
升級過程詳見OpenSuse Linux11升級Openssh6.7筆記
百度文庫
注意事項
升級后默認root不允許登錄。需要修改配置文件允許root登錄
允許root登錄
vi /etc/ssh/sshd_config
將PermitRootLogin值改yes
centos下升級
參考此篇
有網絡情況下
1、tar zxvf openssh-7.1p1.tar.gz
cd openssh-7.1
./configure –prefix=/usr/local/openssh –sysconfdir=/etc/ssh
知識點:
./configure –prefix=/usr/local/openssh –sysconfdir=/etc/ssh
–sysconfdir=DIR read-only single-machine data [PREFIX/etc] /etc配置文件目錄
prefix 安裝目錄
make
make install
2、如果配置時出現如下環境問題:
configure: error: * zlib.h missing - please install first or check config.log *
使用 yum install openssl openssl-devel -y 安裝相關依賴包
3、配置成功,可以編譯了,如果沒有make環境,用如下命令安裝一下即可
yum install make automake gcc gcc-c++ gcc-g77 -y
4、上面的方法會覆蓋原版本的文件,make install覆蓋/etc/ssh下配置文件時可能會報錯。這時刪掉/etc/ssh下的原配置文件,再make install一次就可以了。
如果使用root遠程無法登錄,修改/etc/ssh/sshd_config
將 PermitRootLogin 參數改為yes。
完成后檢查版本
[root@weixinht openssh-7.3p1]# ssh -V
OpenSSH_7.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
遇到一個問題,剛升級后忘記重啟SSHD服務了,修改了配置文件設置PermitRootLogin值改yes。在機房搗鼓了半天!改配置文件嘗試了各種辦法!
不能偷懶啊!之前應該做備份連接方案的!
很奇怪的是聯通雲主機上#PermitRootLogin yes 是注釋掉的但是也能ROOT登陸!
解決方案:
ssh -V
getenforce
setenforce 0
getenforce
vi /etc/sysconfig/selinux
service sshd restart
setenforce是Linux的selinux防火牆配置命令 執行setenforce 0 表示關閉selinux防火牆。
setenforce命令是單詞set(設置)和enforce(執行)連寫,另一個命令getenforce可查看selinux的狀態。
setenforce 0 #設置SELinux 成為permissive模式
setenforce 1 設置SELinux 成為enforcing模式
——2016年11月1日19:36:18 add————
今天修復一台比較久的機器時候出現找不到SSH的問題。
ssh -V 提示如下
OpenSSL version mismatch. Built against 1000103f, you have 90802f
強行重新編譯后成功。具體參考此篇
升級了zlib后查看版本還是之前的,不知為何
所以編譯的時候指定了 忽略zlib版本號。
沒有處理pam一塊,因為安裝的時候實在麻煩,少各種依賴!
升級完后 /etc/ssh/sshd_config 配置文件中全部被注釋
手動改為
Port 22
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication yes
UsePrivilegeSeparation sandbox
Subsystem sftp /usr/libexec/openssh/sftp-server
重啟命令
/etc/rc.d/init.d/ssh restart
摘要:
補充說明:
如果不想升級ssh,那么只要使用
#./config --prefix=/usr
但是升級完后版全是升上去了,但是sshd -v時,發現sshd顯示的還是原來的openssl版本。
#make
#make test
#make install
#openssh version -a
OpenSSL 1.0.1g 7 Apr 2014
built on: Fri May 23 16:56:53CST2014
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 -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/ssl"
此時去運行sshd -v 或是重啟sshd服務時會提示:
OpenSSL version mismatch. Built against 1000103f, you have 90802f
當現面以上進示時,只能強行重新編譯SSH。
升級SSH
備份原來的ssh版本
#mv /etc/ssh /etc/ssh_old
編譯
#cd openssh-6.6p1
#./configure --prefix=/usr --sysconfdir=/etc/ssh --without-zlib-version-check --with-openssl-includes=/usr/ --with-md5-passwords --mandir=/usr/share/man
#make
#make isntall
#service sshd restart
#sshd -v
OpenSSH_6.6p1, OpenSSL 1.0.1g 7 Apr 2014
usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]
[-E log_file] [-f config_file] [-g login_grace_time]
[-h host_key_file] [-k key_gen_time] [-o option] [-p port]
[-u len]