阿里雲=>RHSA-2019:1884-中危: libssh2 安全更新


由於項目構建時間比較長,近期安全檢查發現openssh有漏洞。所以要升級openssh到7.9p1版本。由於ssh用於遠程連接,所以要謹慎操作。

建議生成環境要先做測試,之后再在生產環境升級。

1 前期准備

1.1 依賴安裝

1、 OpenSSL版本:目前OpenSSH7.9不支持OpenSSH1.1.x以上。否則編譯的時候會報錯。

2、 Zlib1.1.4或1.2.1.2或更高版本

3、 gcc:因為編譯需要gcc

4、 openssl-devel:編譯時需要

1.2 注意事項

1、 前期多打開一個xshell窗口。保證連接正常。因為可能出現升級失敗。結束后要確定好再關閉。

2、 備份sshd_config配置文件(方便后期使用或者方便升級失敗使用)

3、 最好關閉防火牆,如不關閉防火牆請開啟ssh需要的端口和telnet需要的端口。如果ssh不是22端口最好打開22端口。因為ssh配置文件默認22端口。所以建議關閉防火牆。

2、升級之后要重建xshell的session不然會出項下面提示


 
 

1 安裝telnet

1.1 安裝telnet

為防止openssh升級失敗。所以安裝telnet。保證openssh升級失敗也可以通過telnet連接服務器,進行恢復操作。並不用去機房。

#yum install -y telnet-server

#yum install -y xinetd 

#systemctl start telnet.socket

#systemctl start  xinetd

默認情況下,系統是不允許root用戶telnet遠程登錄的。如果要使用root用戶直接登錄,需設置如下內容。或者可以添加一個可以登錄的用戶,登錄並su到root用戶。

#echo 'pts/0' >>/etc/securetty #echo 'pts/1' >>/etc/securetty #systemctl restart telnet.socket 

1.2 驗證telnet

確保使用windows或者其他Linux服務器可以telnet到此機器上。並且可以使用root用戶。


 
 

建議開啟telnet和xinetd開機自動啟動,避免reboot后連不上Telnet

systemctl enable xinetd.service

systemctl enable telnet.socket

1 安裝openssh

1.1 下載openssh

Openssh官網地址:https://www.openssh.com/

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

選擇openssh-7.9p1.tar.gz進行下載。並上傳到服務器上。

1.2 卸載舊的ssh

#cp -r /etc/ssh /etc/ssh.old #備份一些之前的文件
#rpm -qa|grep openssh
#rpm -e --nodeps openssh-clients-6.6.1p1-31.el7.x86_64
#rpm -e --nodeps openssh-6.6.1p1-31.el7.x86_64
#rpm -e --nodeps openssh-server-6.6.1p1-31.el7.x86_64
#rpm -qa|grep openssh

如果之前就是源碼安裝的,找到之前的安裝包,在里面執行

#make uninstall

1.3 安裝OpenSSH

1、連接到其他計算機時,OpenSSH作為兩個進程運行。第一個進程是特權進程,並根據需要控制權限的頒發。第二個進程與網絡通信。設置適當的環境需要額外的安裝步驟,這些步驟通過以root用戶身份發出以下命令來執行 :

#install -v -m700 -d /var/lib/sshd #chown -v root:sys /var/lib/sshd #groupadd -g 50 sshd #useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd 

2、解壓安裝

#tar -zxvf openssh-7.9p1.tar.gz
#cd openssh-7.9p1
#./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-privsep-path=/var/lib/sshd
#make

如果報錯
① configure: error: no acceptable C compiler found in $PATH
問題解決
yum install gcc
② configure: error: * zlib.h missing - please install first or check config.log *
問題解決
yum install openssl openssl-devel -y 安裝相關依賴包
3、修改相應文件權限

#chmod 600 /etc/ssh/ssh_host_rsa_key
#chmod 600 /etc/ssh/ssh_host_ecdsa_key
#chmod 600 /etc/ssh/ssh_host_ed25519_key

4、安裝

#make install

5、配置

#install -v -m755 contrib/ssh-copy-id /usr/bin
#install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
#install -v -m755 -d /usr/share/doc/openssh-7.9p1
#install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.9p1

命令解釋:

--sysconfdir=/etc/ssh:這可以防止安裝配置文件 /usr/etc。
--with-md5-passwords:這使得可以使用MD5密碼。
--with-pam:此參數在構建中啟用 Linux-PAM支持。
--with-xauth=/usr/bin/xauth:為X身份驗證設置xauth二進制文件的默認位置。如果將xauth安裝到其他路徑,請更改位置。這也可以sshd_config使用XAuthLocation關鍵字進行控制。如果已安裝Xorg,則可以省略此開關。
--with-kerberos5=/usr:此選項用於在構建中包含Kerberos 5支持。
--with-libedit:此選項為sftp啟用行編輯和歷史記錄功能。

6、根據自身需求改寫配置文件。因為配置文件為初始配置文件。所以和之前的不一樣。可以使用備份配置文件覆蓋。

注意:默認是22端口,但是不能root直接登錄。如果想直接使用root登錄執行以下命令

#echo "PermitRootLogin yes" >> /etc/ssh/sshd_config 

2 開機自啟動

ssh服務必須開機自啟動,不然重啟的時候爆炸。

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

#chmod +x /etc/init.d/sshd

#chkconfig --add sshd

#chkconfig sshd on

#chkconfig --list sshd

#systemctl restart sshd

3 驗證操作

# ssh -V

OpenSSH_7.9p1, OpenSSL 1.0.2k-fips 26 Jan 2017 

使用其他電腦或者其他的xshell等工具連接,驗證要謹慎。

4 回滾操作

如果之前是rpm包安裝的。並且按照以上步驟操作,可以直接以下命令進行回滾

# yum -y install openssh-clients
# yum -y install openssh-server
# yum -y install openssh

5 結束操作

之前的步驟一定要謹慎查看。查看是否可以連接,會不會出現什么問題。

1、 恢復telnet的禁止root登錄特權。如果之前關閉就關閉telnet。

2、 開啟防火牆。並驗證連接。

3、最后再關閉之前開xshell界面。

6 參考文檔

官方文檔:

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/openssh.html



作者:橡皮24
鏈接:https://www.jianshu.com/p/220f7fd908b0
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM