■ 新疆 趙修文
編者按:筆者在進行漏洞掃描時發(fā)現(xiàn)系統(tǒng)存在不少漏洞,需要進行系統(tǒng)升級。本文筆者介紹了如何升級OpenSSH最新版的詳細步驟。
局域網(wǎng)服務(wù)器安裝CentOS 6.8 Final,OpenSSH為5.3,當在進行本地安全漏洞掃描時,發(fā)現(xiàn)全部為OpenSSH漏洞。為杜絕安全隱患,需要將OpenSSH升級到最新版。
當前CentOS最新版為8.1,OpenSSH最新版為8.2,操作系統(tǒng)和軟件較該服務(wù)器的版本都有了很大的變化,升級時依賴關(guān)系也會變得更復(fù)雜,甚至可能造成嚴重沖突;另一方面,作為生產(chǎn)系統(tǒng),要保持系統(tǒng)持續(xù)可用,因此優(yōu)先考慮采用tarball方式升級。
使用tarball包安裝前一定要查閱INSTALL、README及相關(guān)的NOTES文件,了解安裝的先決條件,確保安裝順利,少走彎路,有問題可查看FAQ文件。另外升級前一定要做好備份并進行模擬,升級時詳細記錄過程。
1.下載Open SSH(https://ww w.openssh.org/),當前最新為8.2p1,解壓后查看INSTALL文件,得知安裝需要滿足以下條件:C編譯器;Zlib 1.1.4或1.2.1.2,或更高版本;lib crypto(LibreSSL或Open SSL 1.0.1以上,或1.1.0g以上,或任何1.1.1版本)。
2.下載Zlib(https://zlib.net/),當前最新版為zlib-1.2.11。
3.下載OpenSSL(https://www.openssl.org/source/),當前最新版本為openssl-1.1.1g,查看INSTALL文件,除上述要求外,OpenSSL還需要:Perl 5.10.0以上;perl模塊Text::Template,以及其他的一些要求。
4.下載Perl(http://www.cpan.org/src/),當前最新版為perl-5.30.2,由于該服務(wù)器perl為5.10.1,可以不下載。
5.下載Perl模塊Text::Template(https://meta cpan.org/或http://search.cpan.org/),由于openssl-1.1.1g源碼中包含了此模塊,可以不下載。
查看服務(wù)器上沒有安裝gcc,可用CentOS 6.8 ISO文件或光盤作yum源進行安裝,這是最方便的安裝方式,yum會解決所有依賴關(guān)系。注:正確配置后,如果提示無法聯(lián)網(wǎng)不能安裝gcc,請刪除文件/etc/yum.repos.d/CentOS-Media.repomount-o loop/root/CentOS-6.8-x86_64-bin-DVD1.iso/mnt/iso //掛載
cp -pr/etc/yum.repos.d//etc/yum.repos.d.bak //備份yum配置
vi/etc/yum.repos.d/CentOS-Media.repo //編輯配置文件并保存
改為:baseurl=file:///mnt/iso///yum源url
enabled=1 //啟用該軟件倉庫
yum clean all//清除yum緩存目錄
yum makecache //重建yum倉庫元數(shù)據(jù)
yum install gcc//安裝gcc
zlib用于壓縮和解壓縮功能,執(zhí)行以下命令安裝,zlib默認安裝在/usr/local/lib。提示:編譯安裝軟件,應(yīng)確保每一步?jīng)]有錯誤(測試除外),再進行下一步操作。
tar -xvf zlib-1.2.11.ta r.gz //解壓
cd zlib-1.2.11
//改變目錄至解壓后的目錄
./configure
//編譯前的配置
make
//編譯
make test
//測試
make install
//安裝
后續(xù)其他軟件的編譯安裝均按此步驟進行,后續(xù)只列出配置步驟(config或configure),其余步驟省略。
使用perl --version查看該服務(wù)器Perl版本是5.10.1,符合要求,但在編譯openssl-1.1.1g后,進行測試時有2項錯誤,但安裝使用均沒有問題,查看編譯目錄中的錯誤信息(ls test/recipes/| grep err),未查明測試失敗原因。若有疑慮,可以編譯安裝最新版的perl5.30.2,整個過程不會報任何錯誤。
./Configure -des-Dprefix=/usr/local/perl-5.30.2
export PATH=/usr/local/perl-5.30.2/bin:$PATH //使新版perl成為默認命令
echo " export PATH=/usr/local/perl-5.30.2/bin:$PATH " >>~/.bash//寫入文件
perl -v //查看版本為v5.30.2
-des接受默認參數(shù),-Dprefix指定安裝目錄。
由于OpenSSL是一個底層軟件,有很多應(yīng)用依賴此軟件,因此將其安裝在非默認目錄,防止影響系統(tǒng)其它應(yīng)用。另外OpenSSL 1.1.1版本均存在安全漏洞,其他版本也不再更新,建議升級到1.1.1g。
./config --prefix=/opt/openssl --openssldir=/opt/openssl/ssl
echo '/opt/openssl/lib'>>/etc/ld.so.conf //將庫文件搜索路徑添加到配置文件中,實現(xiàn)自動加載庫,也可使用LD_LIBRARY_PATH環(huán)境變量
ldconfig //重新加載庫文件搜索路徑
export PATH=/opt/openssl/bin/:$PATH //使新版openssl成為默認命令
echo " export PATH=/opt/openssl/bin/:$PATH " >>~/.bash//寫入文件
openssl version -a //查看openssl版本號為OpenSSL 1.1.1g
· --prefix指定openssl的安裝目錄,--openssldir指定OpenSSL配置文件安裝目錄。
若服務(wù)器不在本地,卸載OpenSSH之前一定要先安裝配置Telnet服務(wù)器或?qū)⑿戮幾g的OpenSSH安裝在其他位置,而不刪除系統(tǒng)原有OpenSSH,防止無法連接服務(wù)器。
注意:卸載完成后,如果不重啟服務(wù)器或主動斷開連接,此連接仍可用,但可能會出現(xiàn)超時無法連接(根據(jù)服務(wù)器和客戶端配置而定)。由于OpenSSH不是底層軟件,系統(tǒng)和其他軟件不依賴此軟件,因此可以卸載。
mkdir/etc/ssh.old
cp -pr/etc/ssh/*/etc/ssh.old///備份系統(tǒng)openssh
rpm -e `rpm -qa |grep openssh` //卸載系統(tǒng)openssh
rm -rf/etc/ssh //刪除系統(tǒng)原有的配置
./configure --prefix=/opt/ssh --sysconfdir=/etc/ssh --with-ssl-dir=/opt/openssl
ln -s/opt/ssh/bin/ssh/usr/bin //創(chuàng)建新編譯ssh軟鏈接
ln -s/opt/ssh/bin/ssh-keygen/usr/bin///創(chuàng)建ssh-keygen軟鏈接
ssh -V //查看Open SSH版本為8.2p1
--prefix指定安裝目錄,--sysconfdir指定配置文件安裝目錄,--with-ssl-dir=DIR指定LibreSSL/OpenSSL庫的安裝目錄。
cp contrib/redhat/sshd.init/etc/init.d/sshd //復(fù)制源碼中的配置文件
chkconfig --add sshd//添加sshd服務(wù)
chkconfig sshd on//設(shè)置sshd服務(wù)開機自啟
ln -s/opt/ssh/sbin/sshd /usr/sbin///創(chuàng)建sshd軟鏈接
vi/etc/ssh/sshd_config //修改配置文件,去掉以下5行注釋符#,并將prohibit-password修改為yes(默認配置禁止密碼登錄),最后保存退出。
Port 22
ListenAddress 0.0.0.0
PermitRootLogin prohibit-password
AuthorizedKeysFile.ssh/authorized_keys
PasswordAuthenticati
on yes
service sshd start//啟動sshd服務(wù)
至此,OpenSSH 8.2升級完畢。提示:服務(wù)自啟腳本可以在http://www.linux fromscratch.org/blfs/下載,并使用make install-sshd命令安裝;應(yīng)禁止root遠程登錄,關(guān)閉Banner,使用密匙驗證的方式等(比密碼驗證方式更為安全),可提高系統(tǒng)的安全性,具體參見官網(wǎng)OpenSSH配置;如需使用Linux-PAM支持SSH,需進行配置,SSH僅使用PAM檢查密碼,如果已經(jīng)關(guān)閉密碼驗證方式,則不需要安裝配置PAM。
1.安裝Text::Template模塊。若要安裝該Perl模塊,可按照如下指令安裝。
perl Makefile.PL INS TALL_BASE=/usr/local/perl-5.30.2/
//創(chuàng)建Makefile文件并指定安裝位置
export PERL 5LIB=/usr/local/perl-5.30.2/lib/
//將模塊搜索路徑加入@INC數(shù)組
echo " expor t PERL5LIB=/usr/local/perl-5.30.2/lib/" >>~/.bash
//寫入文件
perldoc -l Text::Templa te
//驗證模塊是否安裝成功,無輸出表示沒有安裝
如果連接互聯(lián)網(wǎng),使用CPAN工具安裝Perl模塊最方便。
2.SSH客戶端連接問題。OpenSSH升級完成后,在使用SSH客戶端軟件連接服務(wù)器時,若提示“Key exchange failed.No compatible key exchange method…”,說明key交換方法不兼容,需要使用較新版本的客戶端軟件即可連接。
3.若軟件安裝后,查不到幫助信息,請編輯/etc/man.config,將該軟件man目錄的路徑加入此配置文件。