Centos7 openssh升級到7.9p1

weixin_33866037發表於2018-11-05

由於專案構建時間比較長,近期安全檢查發現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不然會出項下面提示


9355552-07cba02813b6a8ec.png

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使用者。


9355552-71fab47a32c0ba4c.png

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*
#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

相關文章