Linux -- 升級OpenSSH至最新版本。
阿新 • • 發佈:2021-11-06
原因
雲伺服器(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
就可以了. . .
終於成功了 . . .