1. 程式人生 > 其它 >Linux -- 升級OpenSSH至最新版本。

Linux -- 升級OpenSSH至最新版本。

原因

雲伺服器(Linux) 報了一個漏洞修復 , 提示需要修復一下 . . .

漏洞名稱

OpenSSH許可權提升漏洞(CVE-2021-41617)

漏洞詳情

由於OpenSSH在執行AuthorizedKeysCommand或AuthorizedPrincipalsCommand時未能正確初始化,執行時可能會被設定為以其他使用者的許可權執行。這些指令將繼承 sshd啟動時的組的許可權。根據系統配置的不同,可能會導致獲得意外的許可權,最終導致許可權提升。

修復建議

升級OpenSSH至最新版本

0.0.準備工作.由於升級過程ssh會連線不上,需要先開啟telnet服務,這個一定不要忘記

#開啟Telnet服務
chkconfig telnet on

然後使用另外一臺伺服器,看能不能通過Telnet連線到這臺升級OpenSSH的伺服器.

#比如升級OpenSSH伺服器地址為"X.X.X.X"
telnet X.X.X.X

0.1.準備工作.安裝依賴軟體包

yum install wget gcc -y
yum install -y zlib-devel openssl-devel 
yum install pam-devel libselinux-devel zlib-devel openssl-devel -y

1.0.備份ssh檔案,如果升級出問題,再回滾

cp -r  /etc/ssh   /etc/ssh20211111
cp -r  /etc/pam.d /etc/pam.d20211111
cp -r /etc/init.d/sshd /etc/init.d/sshd20211111
#這個資料夾我的伺服器裡面沒有,所以報錯了,但是我忽略沒有管,繼續往下走就行了→報錯資訊→cp: 無法獲取"/etc/init.d/sshd" 的檔案狀態(stat): 沒有那個檔案或目錄
cp  /usr/bin/ssh /usr/bin/ssh20211111

2.0.下載新版的OpenSSH

#去指定資料夾下下載安裝包 ( 後續還要在此資料夾下解壓檔案,編譯安裝系列操作 )
cd /usr/local/src
#根據自己需要安裝版本 ( 我這裡是安裝的8.6版本 )
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz

3.0.解除安裝舊版OpenSSH

一代新人換舊人...

#檢視已經安裝的OpenSSH相關軟體
rpm -qa | grep openssh
#輸出...
#openssh-7.4p1-21.el7.x86_64
#openssh-server-7.4p1-21.el7.x86_64
#openssh-clients-7.4p1-21.el7.x86_64

#解除安裝舊版本 ( 舊版本名稱大家的都不一樣,具體解除安裝名稱需要根據自己查詢到的名稱進行解除安裝 )
#解除安裝命令模板"rpm -e --nodeps {查到的安裝的軟體名稱}"
rpm -e --nodeps openssh-7.4p1-21.el7.x86_64
rpm -e --nodeps openssh-server-7.4p1-21.el7.x86_64
rpm -e --nodeps openssh-clients-7.4p1-21.el7.x86_64
#應該有命令是可以批量解除安裝的吧...自行探索吧...

4.0.安裝 - 解壓,並切換目錄

#解壓
tar -zxvf openssh-8.6p1.tar.gz
#切換目錄 cd ( change directory )
cd openssh-8.6p1.tar.gz

4.1.安裝 - 執行配置命令

#注意下,配置的路徑後續還需要改,
./configure --prefix=/usr/local/openssh/ --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd

4.2.安裝 - 編譯 & 安裝

#編譯 ( 如果沒有執行上一步"./configure ..."的話,這個編譯步驟是無法執行的 .
make

#安裝
make install

4.3.安裝 - 複製配置檔案

老實說,這一步是我最迷糊的步驟,各種複製,複製的檔案比較多 . . .

#我是直接複製執行的 . . .
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
cp sshd_config /etc/ssh/sshd_config
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
cp ssh-keygen /usr/bin/

4.4.安裝 - 更改配置檔案 ( 共2個檔案需要編輯 )

#第1個需要編輯配置檔案
vim /etc/init.d/sshd

具體修改內容↓
1.
SSHD=/usr/sbin/sshd 改為 SSHD=/usr/local/openssh/sbin/sshd
2.
/usr/sbin/ssh-keygen -A 改為 /usr/local/openssh/bin/ssh-keygen -A
3.
$SSHD $OPTIONS && success || failure 這一行的上面加上 → OPTIONS="-f /etc/ssh/sshd_config"


#第2個需要編輯的配置檔案
vim /etc/ssh/sshd_config

這個好搞,只需要在底部加上2行配置就行了

PasswordAuthentication yes
PermitRootLogin yes

5.0.生成認證

#執行以下兩個命令:提示是否覆蓋按"y",後面直接回車就好
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

6.0.修改許可權

chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_rsa_key

7.0.啟動服務

servie sshd start

8.0.驗證 - 檢視版本

ssh -V
OpenSSH_8.6p1, OpenSSL 1.0.2k-fips  26 Jan 2017

上午安裝完成之後執行ssh -V,記得是報錯了,
然後執行的sshd -V,
下午再次執行ssh -V就可以了. . .
終於成功了 . . .

摘抄文件