升級背景:
項目中使用的系統為CentOS6.8,經過漏洞掃描后發現openssh高危漏洞,具體描述如下:OpenSSH 7.2p2之前版本, sshd/ session.c/ do_setup_env函數存在安全漏洞, 啟用了UseLogin功能且PAM配置為讀取用戶主目錄內的 .pam_environment文件后, 本地用戶通過觸發/bin/login程序構造的環境, 可提升其權限。
很復雜……,話不多說,直接升級到7.4p1版本。
升級過程:
-------升級前的准備:
1.上傳軟件包(openssl-1.0.2k.tar.gz openssh-7.4p1.tar.gz)
2.安裝telnet服務,防止升級出現問題。
yum -y install telnet-server*
3.關閉防火牆,防止telnet無法連接:
service iptables stop && chkconfig iptables off vi /etc/xinetd.d/telnet 將其中disable字段的yes改為no以啟用telnet服務 mv /etc/securetty /etc/securetty.old #允許root用戶通過telnet登錄 service xinetd start #啟動telnet服務 chkconfig xinetd on #避免升級過程中服務器意外重啟后無法遠程登錄系統
4.安裝編譯所需工具包
yum -y install gcc pam-devel zlib-devel
-------升級openssl
#############備份當前ssl############# find / -name openssl
將上條命令找到的文件備份,命令格式如下
#mv 文件名 文件名.old(根據實際結果操作)
備份如下兩個庫文件,因系統內部分工具(如yum、wget等)依賴此庫
cp /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old cp /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old
############卸載當前ssl##############
#rpm -qa | grep openssl ###查詢當前ssl版本 #rpm -e --nodeps 上條命令查詢結果粘貼到此處
############解壓安裝新版本ssl#########
tar -zxvf openssl-1.0.2k.tar.gz cd openssl-1.0.2k ./config --prefix=/usr --openssldir=/etc/ssl --shared zlib make && make test && make install openssl version -a ##查看是否升級成功
--------升級openssh
############備份當前ssh#############
mv /etc/ssh /etc/ssh.old
############卸載當前ssh#############
rpm -qa | grep openssh(查詢結果如下,不一定與實際環境相同) #openssh-clients-5.3p1-111.el6.x86_64 #openssh-server-5.3p1-111.el6.x86_64 #openssh-5.3p1-111.el6.x86_64 #openssh-askpass-5.3p1-111.el6.x86_64
卸載命令如下:
rpm -e --nodeps openssh-5.3p1-111.el6.x86_64 rpm -e --nodeps openssh-server-5.3p1-111.el6.x86_64 rpm -e --nodeps openssh-clients-5.3p1-111.el6.x86_64 rpm -e --nodeps openssh-askpass-5.3p1-111.el6.x86_64 rpm -qa | grep openssh ###查詢是否成功
############安裝前環境配置############
install -v -m700 -d /var/lib/sshd chown -v root:sys /var/lib/sshd
############解壓安裝新版本ssh#########
tar -zxvf openssh-7.4p1.tar.gz cd openssh-7.4p1 ./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
####安裝后環境配置(在編譯目錄執行)####
echo 'X11Forwarding yes' >> /etc/ssh/sshd_config echo "PermitRootLogin yes" >> /etc/ssh/sshd_config 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(如果失敗可用telnet連接啟動服務)
###############安裝成功后操作##############
yum remove telnet-server* -y mv /etc/securetty.old /etc/securetty chkconfig xinetd off service xinetd stop service iptables start chkconfig iptables on
注意:一定要卸載telnet,這個軟件存在危險,別背鍋了……
踩到的坑:
升級途中遇到兩個坑都是因為 /usr/lib64/libcrypto.so.10 這個文件,由於沒有備份這個文件(心急了,運維還是要穩……),導致重啟后系統起不來,很慌……(重啟是因為升級了內核),在啟動頁面按ESC發現卡在缺少這個文件報錯的環境,這個時候用上了運維基礎操作(單用戶模式),進入單用戶模式后從別的機器中拷貝這個文件后重啟正常。
自我反省:
基礎的運維說簡單其實很簡單,說難其實也很難。簡單的是技術,難的是心態。生活中也是這樣,做什么都要全力以赴,切不可覺得無所謂,常在河邊走,哪有不濕鞋……
