原因
雲服務器(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就可以了. . .
終於成功了 . . .
