首頁 > 軟體

CentOS 6.6升級OpenSSH到最新版本7.5.p1

2020-06-16 17:15:19

本文主要簡單記錄CentOS 6.6下OpenSSH升級步驟,及一鍵升級指令碼。安裝編譯所需工具包
yum install gcc pam-devel zlib-devel

一、升級原因
7.4以下openssh版本存在嚴重漏洞:
1.OpenSSH 遠端許可權提升漏洞(CVE-2016-10010) 
2.OpenSSH J-PAKE授權問題漏洞(CVE-2010-4478) 
3.Openssh MaxAuthTries限制繞過漏洞(CVE-2015-5600) 
OpenSSL>=1.0.1可以不用升級OpenSSL

二、安裝telnet服務
1.安裝軟體
1 # yum -y install telnet-server* telnet

2.啟用telnet服務
# vi /etc/xinetd.d/telnet
將其中disable欄位的yes改為no以啟用telnet服務
# mv /etc/securetty /etc/securetty.old    #允許root使用者通過telnet登入
# service xinetd start                    #啟動telnet服務
# chkconfig xinetd on                    #使telnet服務開機啟動,避免升級過程中伺服器意外重新啟動後無法遠端登入系統

3.測試telnet能否正常登入系統
三、升級OpenSSH
1.備份當前openssh
mv /etc/ssh /etc/ssh.old
mv /etc/init.d/sshd /etc/init.d/sshd.old

2.解除安裝當前openssh
# rpm -qa | grep openssh
openssh-clients-5.3p1-104.el6.x86_64
openssh-server-5.3p1-104.el6.x86_64
openssh-5.3p1-104.el6.x86_64
openssh-askpass-5.3p1-104.el6.x86_64
# rpm -e --nodeps openssh-5.3p1-104.el6.x86_64
# rpm -e --nodeps openssh-server-5.3p1-104.el6.x86_64
# rpm -e --nodeps openssh-clients-5.3p1-104.el6.x86_64
# rpm -e --nodeps openssh-askpass-5.3p1-104.el6.x86_64
# rpm -qa | grep openssh
注意:解除安裝過程中如果出現以下錯誤
[root@node1 openssh-7.5p1]# rpm -e --nodeps openssh-server-5.3p1-104.el6.x86_64 
error reading information on service sshd: No such file or directory
error: %preun(openssh-server-5.3p1-104.el6.x86_64) scriptlet failed, exit status 1
解決方法:
# rpm -e --noscripts openssh-server-5.3p1-104.el6.x86_64

3.openssh安裝前環境設定
# install -v -m700 -d /var/lib/sshd
# chown -v root:sys /var/lib/sshd
當前系統sshd使用者已經存在的話以下不用操作
# groupadd -g 50 sshd
# useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd

4.解壓openssh_7.5p1原始碼並編譯安裝
# tar -zxvf openssh-7.5p1.tar.gz
# cd openssh-7.5p1
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd
# make
# make install

5.openssh安裝後環境設定
# 在openssh編譯目錄執行如下命令
# 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.5p1
# install -v -m644    INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.5p1
# ssh -V              #驗證是否升級成功

6.啟用OpenSSH服務
# 在openssh編譯目錄執行如下目錄
# echo 'X11Forwarding yes' >> /etc/ssh/sshd_config
# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config  #允許root使用者通過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
# service sshd restart

注意:如果升級操作一直是在ssh遠端對談中進行的,上述sshd服務重新啟動命令可能導致對談斷開並無法使用ssh再行登入(即ssh未能成功重新啟動),此時需要通過telnet登入再執行sshd服務重新啟動命令。

7.重新啟動系統驗證沒問題後關閉telnet服務
# mv /etc/securetty.old /etc/securetty
# chkconfig  xinetd off
# service xinetd stop
如需還原之前的ssh設定資訊,可直接刪除升級後的設定資訊,恢復備份。
# rm -rf /etc/ssh
# mv /etc/ssh.old /etc/ssh

相關文件可以到Linux公社資源站下載:

------------------------------------------分割線------------------------------------------

免費下載地址在 http://linux.linuxidc.com/

使用者名稱與密碼都是www.linuxidc.com

具體下載目錄在 /2017年資料/5月/8日/CentOS 6.6升級OpenSSH到最新版本7.5.p1/

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割線------------------------------------------

OpenSSH 升級至目前最新7.5版本遇到的一些坑

openssh upgrade to latest version

最近公司的系統被客戶那邊的一套掃描漏洞的裝置掃出了關於 openssh 的幾個漏洞,大概看了一下主要是因為 openssh 當前版本為 5.3,版本低了,本來覺得是個小問題,我自己的 distribution 是 centos 6.x, yum 最新的 openssh 也只是 5.3,沒辦法只能到 rpm 官網找新的包,找到最新的是 6.4,然後通過 yum localinstall 升級了,沒想到第二天客戶反映還存在 openssh 漏洞,要一個沒有才能對外開放 22 埠。 懵逼,沒辦法,只能去openssh 官網找最新的 release,最新版本是 7.5,安裝過程中遇到了一系列的坑,就不一一述說了,為了幫助大家避免這些坑,特記錄下來僅供參考。

ssh 升級步驟

安裝

cd /root/
mkdir ssh_upgrade && cd ssh_upgrade

上傳openssh安裝包

rz 安裝包 

檢視當前openssh版本

ssh -V     

解除安裝原有openssh

yum remove openssh -y    

安裝 gcc、openssl和zlib

yum install gcc openssl-devel zlib-devel
tar zxvf openssh-7.5p1.tar.gz
cd openssh-7.5p1
./configure
make && make install

拷貝ssh服務檔案

cp ./contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd

修改SSHD服務檔案

vim /etc/init.d/sshd
修改以下內容
SSHD=/usr/sbin/sshd 為 SSHD=/usr/local/sbin/sshd
/usr/sbin/ssh-keygen -A 為 /usr/local/bin/ssh-keygen -A 
儲存退出

加入系統服務

chkconfig --add sshd

檢視系統啟動服務是否增加改項

chkconfig --list |grep sshd

sshd               0:off    1:off    2:on    3:on    4:on    5:on    6:off 

允許root使用者遠端登入

cp sshd_config /etc/ssh/sshd_config
vim /etc/ssh/sshd_config 修改 PermitRootLogin yes,並去掉註釋

設定允許root使用者遠端登入

這一操作很重要!很重要!很重要!重要的事情說三遍,因為openssh安裝好預設是不執行sshd_config檔案的,所以即使在sshd_config中設定允許root使用者遠端登入,但是不加上這句命令,還是不會生效!

vim /etc/init.d/sshd
在 ‘$SSHD $OPTIONS && success || failure’這一行上面加上一行 ‘OPTIONS="-f /etc/ssh/sshd_config"’
儲存退出

重新啟動 

service sshd start  

更多OpenSSH相關內容可以檢視以下的有用連結: 

Ubuntu Server 13.10系統中安裝設定OpenSSH http://www.linuxidc.com/Linux/2014-02/96953.htm

Ubuntu安裝遠端登入OpenSSH服務 http://www.linuxidc.com/Linux/2014-02/97218.htm

CentOS 6下OpenSSH 5.3升級至7步驟記錄 http://www.linuxidc.com/Linux/2016-11/137166.htm

OpenSSH普通使用者無法登入的幾種情況的解決方法 http://www.linuxidc.com/Linux/2012-05/59457.htm

通用執行緒: OpenSSH 金鑰管理,第 1 部分理解 RSA/DSA 認證 http://www.linuxidc.com/Linux/2011-08/39871.htm

Linux下升級 OpenSSH  http://www.linuxidc.com/Linux/2017-03/142411.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-05/143568.htm


IT145.com E-mail:sddin#qq.com