文章目錄
- 一、升級背景
- 二、環境信息
- 三、注意事項
- 四、升級步驟
- 五、故障處理
- 六、版本回退
通過綠盟漏洞掃描工具檢測OpenSSH 安全漏洞CVE-2021-28041,現公司要求修復。
二、環境信息
操作系統:Centos7.9.2009
openssh:OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
openssl:OpenSSL 1.0.2k-fips 26 Jan 2017
三、注意事項
1、檢查防火牆或selinux是否關閉。
2、更新前一定要多開1個或1個以上ssh終端,一旦更新失敗當前shell終端是無法操作的,也就無法進行版本回退。
3、升級前一定要對ssh進行備份,避免更新失敗時能回滾。
4、升級前一定要提前在測試環境驗證,運行一段時間,確認沒有問題才可在生產環境進行更新操作。
5、對於生產環境主機數量比較多時,建議先在1台或幾台服務器上更新,運行一段時間,確認沒有問題再執行批量更新操作。
總結:對於以上需要注意的內容,建議大家務必重視,小心謹慎總沒錯的。
四、升級步驟
# 1、升級准備
cd /opt && wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz
# 2、安裝依賴軟件包
yum install gcc -y
yum install -y zlib-devel openssl-devel
yum install pam-devel libselinux-devel zlib-devel openssl-devel -y
# 3、備份ssh(非常重要,請嚴格執行)
mv /etc/ssh /etc/ssh.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak
# 4、編譯安裝
cd /opt && tar -zxvf openssh-8.6p1.tar.gz
chown root.root /opt/openssh-8.6p1 -R
cd /opt/openssh-8.6p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam \
--with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
make && make install
# 5、授權
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
# 6、復制配置文件並設置允許root用戶遠程登錄
cd /opt/openssh-8.6p1
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod u+x /etc/init.d/sshd
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak
# 7、修改ssh配置
vim /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
UseDNS no
UsePAM yes
# 8、設置開機自啟
chkconfig --add sshd
chkconfig sshd on
# 9、重啟ssh服務
systemctl daemon-reload
systemctl restart sshd
# 10、驗證
[root@lvs-keepalived-02 ~]# ssh -V
OpenSSH_8.6p1, OpenSSL 1.0.2k-fips 26 Jan 2017
如下圖所示則表示編譯成功 - 五、故障處理
現象:centos7升級ssh7.4到8.6版本后,ssh連接不穩定,時斷時續,systemctl status sshd查看服務狀態為activating(start),查看/var/log/message里不斷提示sshd.service holdoff time over,scheduling restart
如下圖所示: - 原因:/usr/lib/systemd/system/sshd.service 與 systemd不兼容
處理辦法:
[root@localhost ~]# cd /usr/lib/systemd/system
[root@localhost system]# mv sshd.service sshd.service.bak
[root@localhost system]# systemctl daemon-reload
# 重啟前執行
1、sshd -t 檢查下配置有沒有問題
2、/var/log/message里sshd有沒有繼續報錯
# 以上正常后重啟
systemctl restart sshd
如下圖所示則表示服務正常 - 六、版本回退
回滾前: - 回滾操作:
-