CentOS 5.8升級OpenSSH,OpenSSL到最新版

因業務系統安全要求須要升級OpenSSH版本到最新版。原有CentOS 5.8系統自帶版本以下。html

[root@localhost ~]# lsb_release -a
LSB Version:	:core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:pri
nting-4.0-noarchDistributor ID:	CentOS
Description:	CentOS release 5.8 (Final)
Release:	5.8
Codename:	Final
[root@localhost ~]# ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

升級版本:node

通過屢次驗證最終肯定使用ssh最新版本openssh-7.3p1和openssl 0.9.8的最終版本openssl-0.9.8zg(CentOS 5.8安裝openssl的1.x版本有不少問題,不建議使用)。並且openssh-7.3p1最低要求openssl 0.9.8f。vim

openssl-0.9.8zg並不涉及OpenSSL CVE-2014-0160 漏洞 (心臟出血漏洞)。目前有漏洞的版本有: 1.0.1-1.0.1f(包含1.0.1f)以及 1.0.2-beta。參考:https://segmentfault.com/a/1190000000461002segmentfault

安裝編譯環境安全

yum -y install gcc openssl-devel pam-devel rpm-build

步驟1:開啓telnet服務已確保ssh升級失敗能夠控制主機bash

安裝並開啓telnet服務。服務器

[root@localhost ~]# yum install -y xinetd telnet-server
[root@localhost ~]# vim /etc/xinetd.d/krb5-telnet 
# default: off
# description: The kerberized telnet server accepts normal telnet sessions, \
#              but can also use Kerberos 5 authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream        
        wait            = no
        user            = root
        server          = /usr/kerberos/sbin/telnetd
        log_on_failure  += USERID
        disable         = no #修改disable爲no,默認爲yes,即禁用telnet服務。修改成no,即表示啓用telnet服務
}
[root@localhost ~]# service xinetd restart
[root@localhost ~]# netstat -tnlp | grep :23
tcp        0      0 0.0.0.0:23                  0.0.0.0:*                   LISTEN      -

Telnet是不能以root直接登錄的,須要提早創建一個普通用戶並設置密碼。以普通用戶登陸後再su切換root,SSH升級成功後,記得關閉telnet服務。session

[root@localhost ~]# useradd meng
[root@localhost ~]# passwd meng

經過其餘服務器測試telnet登陸保證可使用。確保防火牆容許telnet服務,即打開23端口。dom

[root@localhost ~]# telnet 192.168.1.10
Trying 192.168.1.10...
Connected to 192.168.1.10 (192.168.1.10).
Escape character is '^]'.
    localhost.localdomain (Linux release 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012) (2)
login: meng
Password:

一切就緒,準備開始。ssh

步驟2:安裝新版openssl

生成openssl-0.9.8zg RPM包

[root@localhost x86_64]# cd /opt
[root@localhost x86_64]# wget https://www.openssl.org/source/openssl-0.9.8zg.tar.gz
[root@localhost x86_64]# cp openssl-0.9.8zg.tar.gz /usr/src/redhat/SOURCES/
[root@localhost x86_64]# tar xvf openssl-0.9.8zg.tar.gz
[root@localhost x86_64]# cp openssl-0.9.8zg/openssl.spec /usr/src/redhat/SPECS/
[root@localhost x86_64]# rpmbuild -bb /usr/src/redhat/SPECS/openssl.spec
[root@localhost x86_64]# cd /usr/src/redhat/RPMS/x86_64/
[root@localhost x86_64]# ls openssl* -l
-rw-r--r-- 1 root root 1279018 Nov  6 01:01 openssl-0.9.8zg-1.x86_64.rpm
-rw-r--r-- 1 root root  113834 Nov  6 01:01 openssl-debuginfo-0.9.8zg-1.x86_64.rpm
-rw-r--r-- 1 root root 2237915 Nov  6 01:01 openssl-devel-0.9.8zg-1.x86_64.rpm
-rw-r--r-- 1 root root  607823 Nov  6 01:01 openssl-doc-0.9.8zg-1.x86_64.rpm

安裝openssl,安裝時須要使用--nodeps選項,不然會報不少軟件包的依賴錯誤「libcrypto.so.6 is needed by (installed) openldap-2.3.43-3.el5.i386」等等。

rpm --nodeps -Uvh openssl-0.9.8zg-1.i386.rpm openssl-devel-0.9.8zg-1.i386.rpm

安裝後會致使yum等沒法使用,提示「libcrypto.so.0.9.8 is not a symbolic link」或「libssl.so.6 is not a symbolic link」。須要執行如下命令增長連接庫的軟連接。

ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.6
ln -s /usr/lib/libssl.so.0.9.8 /usr/lib/libssl.so.6
ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib64/libcrypto.so.6
ln -s /usr/lib/libssl.so.0.9.8 /usr/lib64/libssl.so.6

此時執行ssh -V會提示「ssh: symbol lookup error: ssh: undefined symbol: FIPS_mode」錯誤。繼續安裝ssh新版本便可。

步驟3:安裝新版openssh

下載並編譯openssh RPM包。下載地址:http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/,選擇最新版下載。

[root@localhost ~]# cd /opt
[root@localhost ~]# yum -y install libX11-devel libXt-devel gtk2-devel
[root@localhost ~]# wget http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.3p1.tar.gz
[root@localhost ~]# tar zxvf openssh-7.3p1.tar.gz
[root@localhost ~]# cp openssh-7.3p1/contrib/redhat/openssh.spec /usr/src/redhat/SPECS/
[root@localhost ~]# cp openssh-7.3p1.tar.gz /usr/src/redhat/SOURCES/
[root@localhost ~]# cd /usr/src/redhat/SPECS
[root@localhost ~]# perl -i.bak -pe 's/^(%define no_(gnome|x11)_askpass)\s+0$/$1 1/' openssh.spec
[root@localhost ~]# rpmbuild -bb openssh.spec
[root@localhost ~]# cd /usr/src/redhat/RPMS/x86_64
[root@localhost x86_64]# ls openssh-* -l
-rw-r--r-- 1 root root 737241 Nov  6 01:41 openssh-7.3p1-1.x86_64.rpm
-rw-r--r-- 1 root root  43458 Nov  6 01:41 openssh-askpass-7.3p1-1.x86_64.rpm
-rw-r--r-- 1 root root  22868 Nov  6 01:41 openssh-askpass-gnome-7.3p1-1.x86_64.rpm
-rw-r--r-- 1 root root 933212 Nov  6 01:41 openssh-clients-7.3p1-1.x86_64.rpm
-rw-r--r-- 1 root root  16799 Nov  6 01:41 openssh-debuginfo-7.3p1-1.x86_64.rpm
-rw-r--r-- 1 root root 456630 Nov  6 01:41 openssh-server-7.3p1-1.x86_64.rpm
[root@localhost x86_64]# rpm -Uvh openssh-7.3p1-1.x86_64.rpm openssh-askpass-7.3p1-1.x86_64.rpm openssh-server-7.3p1-1.x86_64.rpm openssh-clients-7.3p1-1.x86_6
4.rpm

安裝後查看版本。

[root@localhost x86_64]# ssh -V
OpenSSH_7.3p1, OpenSSL 0.9.8zg 11 Jun 2015

新版本安裝後默認禁止root遠程登陸須要修改sshd配置文件。修改後重啓ssh服務。

[root@localhost x86_64]# vim /etc/ssh/sshd_config
#LoginGraceTime 2m
PermitRootLogin yes  #去掉註釋
#StrictModes yes
#MaxAuthTries 6
[root@localhost x86_64]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

測試遠程登陸,yum等。遠程登陸成功後關閉telnet服務。

若是還有其餘服務器須要升級。直接安裝RPM便可。

[root@localhost opt]# ls
openssh-askpass-gnome-7.3p1-1.x86_64.rpm  openssh-server-7.3p1-1.x86_64.rpm       openssl-devel-0.9.8zg-1.x86_64.rpm
openssh-7.3p1-1.x86_64.rpm          openssh-clients-7.3p1-1.x86_64.rpm        openssl-0.9.8zg-1.x86_64.rpm            openssl-doc-0.9.8zg-1.x86_64.rpm
openssh-askpass-7.3p1-1.x86_64.rpm  openssh-debuginfo-7.3p1-1.x86_64.rpm      openssl-debuginfo-0.9.8zg-1.x86_64.rpm
[root@localhost opt]# rpm --nodeps -Uvh openssl*
Preparing...                ########################################### [100%]
   1:openssl                ########################################### [ 25%]
   2:openssl-debuginfo      ########################################### [ 50%]
   3:openssl-devel          ########################################### [ 75%]
   4:openssl-doc            ########################################### [100%]
[root@localhost opt]# ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.6
[root@localhost opt]# ln -s /usr/lib/libssl.so.0.9.8 /usr/lib/libssl.so.6
[root@localhost opt]# ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib64/libcrypto.so.6
[root@localhost opt]# ln -s /usr/lib/libssl.so.0.9.8 /usr/lib64/libssl.so.6
[root@localhost opt]# rpm --nodeps -Uvh openssh-*
Preparing...                ########################################### [100%]
   1:openssh                ########################################### [ 17%]
   2:openssh-askpass        ########################################### [ 33%]
   3:openssh-askpass-gnome  ########################################### [ 50%]
   4:openssh-clients        ########################################### [ 67%]
   5:openssh-debuginfo      ########################################### [ 83%]
   6:openssh-server         ########################################### [100%]
[root@localhost opt]# vim /etc/ssh/sshd_config 
#PermitRootLogin prohibit-password #禁用
PermitRootLogin yes #容許root經過密碼登陸
[root@localhost opt]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
[root@localhost opt]# ssh -V
OpenSSH_7.3p1, OpenSSL 0.9.8zg 11 Jun 2015

RPM包下載地址:連接:http://pan.baidu.com/s/1eR7438e 密碼:ugii

本文參考如下blog,通過親自測試整理。

http://blog.chinaunix.net/uid-6984-id-5120601.html

http://hxl2009.blog.51cto.com/779549/1035652

相關文章
相關標籤/搜索