背景node
工做需求:系統漏洞須要升級,拿到需求到解決問題花了3個小時,中間走入誤區,先用測試機的環境沒有解決問題。直接生產機器操做,備份解決問題 。linux
本文主要簡單記錄CentOS 6.6下OpenSSH升級步驟,及一鍵升級腳本。安裝編譯所需工具包
yum install gcc pam-devel zlib-devel服務器
1、升級緣由
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能夠不用升級OpenSSLssh
2、安裝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可否正常登入系統
3、升級OpenSSH
1.備份當前openssh
mv /etc/ssh /etc/ssh.old
mv /etc/init.d/sshd /etc/init.d/sshd.oldrest
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_64orm
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 sshdserver
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 installip
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