1. 程式人生 > 其它 >centos7離線升級openssh到8.0,解決舊版openssh安全掃描漏洞

centos7離線升級openssh到8.0,解決舊版openssh安全掃描漏洞

技術標籤:openssh

背景:安全掃描,掃描出ssh高危漏洞OpenSSH使用者列舉(CVE-2018-15473)【POC】,解決辦法是將OpenSSH升級到7.7或更高版本。

首先登入伺服器檢查各個包

rpm -qa | grep telnet
rpm -qa | grep pam
rpm -qa | grep zlib
rpm -qa | grep xinetd

如果沒有,則安裝依賴包

所有所需的依賴包,放在網盤裡了,大家自提:

連結: https://pan.baidu.com/s/1D6-rOKQa6wRB1y8UBpILAQ 提取碼: pqxh

安裝依賴包

rpm -Uvh telnet-0.17-65.el7_8.x86_64.rpm
rpm -Uvh telnet-server-0.17-65.el7_8.x86_64.rpm
rpm -Uvh pam-1.1.8-23.el7.x86_64.rpm
rpm -Uvh pam-devel-1.1.8-23.el7.x86_64.rpm
rpm -Uvh zlib-1.2.7-18.el7.x86_64.rpm
rpm -Uvh zlib-devel-1.2.7-18.el7.x86_64.rpm
rpm -Uvh xinetd-2.3.15-14.el7.x86_64.rpm

關閉selinux

這一步影響我很久,這很關鍵

#vim /etc/selinux/config

將selinux設定為disable

SELINUX=disabled

這一步之後一定要重啟reboot,不然安裝後也登不上去

rpm -ivh --force cpp-4.8.5-39.el7.x86_64.rpm
rpm -ivh --force libgcc-4.8.5-39.el7.x86_64.rpm
rpm -ivh --force libgomp-4.8.5-39.el7.x86_64.rpm
rpm -ivh --force libstdc++-4.8.5-39.el7.x86_64.rpm

rpm -ivh --force libstdc++-devel-4.8.5-39.el7.x86_64.rpm
rpm -ivh --force gcc-4.8.5-39.el7.x86_64.rpm
rpm -ivh --force gcc-c++-4.8.5-39.el7.x86_64.rpm

啟動xinetd

systemctl start xinetd
systemctl status xinetd

注意:這裡我比較膽子大,沒用啟動telnet服務,若保險一點可以先啟動telnet服務,這樣可以通過telnet登入

安裝zlib

1.解壓安裝
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib-1.2.11 -share
make && make install
ln -s /usr/local/zlib-1.2.11 /usr/local/zlib
2.將zlib動態函式庫載入到快取記憶體中
echo "/usr/local/zlib-1.2.11/lib" >> /etc/ld.so.conf
ldconfig -v

安裝openssl

1.解壓安裝
tar zxvf openssl-1.0.2m.tar.gz
cd openssl-1.0.2m
./config shared zlib-dynamic --prefix=/usr/local/openssl-1.0.2m --with-zlib-lib=/usr/local/zlib-1.2.11/lib --with-zlib-include=/usr/local/zlib-1.2.11/include
make && make install
ln -s /usr/local/openssl-1.0.2m /usr/local/openssl
2.將openssl工具集路徑加入到path路徑中
echo "/usr/local/openssl-1.0.2m/lib" >> /etc/ld.so.conf   
ldconfig -v
3.檢視版本是否正確
openssl version -a

安裝openssh

1.解壓安裝
tar -xzvf openssh-8.0p1.tar.gz
cd openssh-8.0p1
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-pam --with-md5-passwords --with-tcp-wrappers --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib --mandir=/usr/share/man 
make && make install
2.配置
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
sed -i '/UsePAM no/c\UsePAM yes' /etc/ssh/sshd_config
cp -p contrib/redhat/sshd.init /etc/init.d/sshd 
chmod +x /etc/init.d/sshd 
sed -i '/^Subsystem/c\Subsystem sftp /usr/libexec/sftp-server' /etc/ssh/sshd_config
sed -i '/^SELINUX=enforcing/c\SELINUX=disabled' /etc/selinux/config
setenforce 0
3.檢視版本
sshd -v
測試sshd能否登陸
如果不能登入,執行全路徑啟動ssh
/usr/sbin/sshd -p 22

若啟動報錯

執行賦權 chmod 600 /etc/ssh/ssh_host_ecdsa_key

同樣的報錯哪個就這樣賦哪個檔案的許可權

最後一步


設定sshd開機自啟動
chkconfig --add sshd 
chkconfig sshd on 
chkconfig --list sshd