OpenSSH安全漏洞修復版本升級詳解步驟參考

2024年2月6日 23点热度 0人点赞

OpenSSH是SSH(Secure SHell)協議的免費開源實現。SSH協議簇可以用來進行遠程控制,或在計算機之間傳送文件。而實現此功能的傳統方式,如telnet、rcp、ftp、rlogin等都是極為不安全的,並且會使用明文傳送密碼。OpenSSH提供了服務端後臺程序和客戶端工具,用來加密遠程控制和文件傳輸過程中的數據,並由此來代替原來的類似服務。

但是OpenSSH也經常會被爆出一些安全漏洞,我們需要升級OpenSSH版本以修復這些漏洞。

現需要將OpenSSH升級到最新9.6p1版本,Openssl升級到1.1.1版本修復這些漏洞。相關環境:

OpenSSH下載地址:
https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/

Openssl下載地址:
https://www.openssl.org/source/

Zlib下載地址:https://www.zlib.net/

為防止遠程中斷升級前可以多開幾個ssh終端或者采用telnet方式遠程到主機(升級完記得關閉telnet服務),如果可以直接進入終端建議在終端下進行操作。

1.上傳並解壓升級包。

tar -xvf zlib.tar.gz

tar -xvf openssl-1.1.1w.tar.gz

tar -xvf openssh-9.6p1.tar.gz

2.編譯安裝zlib。

cd zlib-1.3.1

./configure --prefix=/usr/local/zlib

make && make install
echo '/usr/local/zlib/lib' >> /etc/ld.so.conf

ldconfig -v

驗證zlib安裝是否成功,要包含include、lib、share三個目錄。

3.編譯安裝openssl。

cd openssl-1.1.1w

./config --prefix=/usr/local/ssl -d shared
make && make install

echo '/usr/local/ssl/lib' >> /etc/ld.so.conf

ldconfig -v

4.升級openssh。

停ssh服務,備份ssh配置文件:

systemctl stop sshd

cp -r /etc/ssh /etc/ssh.bak

cp -r /etc/pam.d /etc/pam.d.bak

查看原openssh版本:

cat /etc/redhat-release

rpm -qa|grep openssh

根據上面查詢結果,卸載系統裡原有Openssh,一般有三個包全部卸載:

rpm -e --nodeps openssh-clients-7.4p1-21.el7.x86_64

rpm -e --nodeps openssh-7.4p1-21.el7.x86_64

rpm -e --nodeps openssh-server-7.4p1-21.el7.x86_64

rpm -qa | grep openssh

編譯安裝openssh:

cd openssh-9.6p1
./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
make && make install

5.sshd_config文件修改。

echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config

echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config

echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config

6.將新的配置復制到指定目錄。

cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config

cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd

cp /usr/local/openssh/bin/ssh /usr/bin/ssh

cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub

7.設置ssh服務開機自啟動。

cp -p contrib/redhat/sshd.init /etc/init.d/sshd

chmod x /etc/init.d/sshd

chkconfig --add sshd

chkconfig sshd on

重啟sshd服務:

systemctl restart sshd

查看sshd服務狀態:

systemctl status sshd -l

驗證ssh版本:

ssh -V

8.重啟服務器,測試ssh能否登錄服務器成功。

reboot