CentOS 5.8升级OpenSSH,OpenSSL到最新版

前端之家收集整理的这篇文章主要介绍了CentOS 5.8升级OpenSSH,OpenSSL到最新版前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

因业务系统安全要求需要升级OpenSSH版本到最新版。原有CentOS 5.8系统自带版本如下。

  1. [root@localhost ~]# lsb_release -a
  2. 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
  3. nting-4.0-noarchDistributor ID: CentOS
  4. Description: CentOS release 5.8 (Final)
  5. Release: 5.8
  6. Codename: Final
  7. [root@localhost ~]# ssh -V
  8. OpenSSH_4.3p2,OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

升级版本:

经过多次验证最终确定使用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。

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

安装编译环境

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

步骤1:开启telnet服务已确保ssh升级失败可以控制主机

安装并开启telnet服务。

  1. [root@localhost ~]# yum install -y xinetd telnet-server
  2. [root@localhost ~]# vim /etc/xinetd.d/krb5-telnet
  3. # default: off
  4. # description: The kerberized telnet server accepts normal telnet sessions,\
  5. # but can also use Kerberos 5 authentication.
  6. service telnet
  7. {
  8. flags = REUSE
  9. socket_type = stream
  10. wait = no
  11. user = root
  12. server = /usr/kerberos/sbin/telnetd
  13. log_on_failure += USERID
  14. disable = no #修改disable为no,默认为yes,即禁用telnet服务。修改为no,即表示启用telnet服务
  15. }
  16. [root@localhost ~]# service xinetd restart
  17. [root@localhost ~]# netstat -tnlp | grep :23
  18. tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN -

Telnet是不能以root直接登陆的,需要提前建立一个普通用户并设置密码。以普通用户登录后再su切换root,SSH升级成功后,记得关闭telnet服务。

  1. [root@localhost ~]# useradd meng
  2. [root@localhost ~]# passwd meng

通过其他服务器测试telnet登录保证可以使用。确保防火墙允许telnet服务,即打开23端口。

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

一切就绪,准备开始。

步骤2:安装新版openssl

生成openssl-0.9.8zg RPM包

  1. [root@localhost x86_64]# cd /opt
  2. [root@localhost x86_64]# wget https://www.openssl.org/source/openssl-0.9.8zg.tar.gz
  3. [root@localhost x86_64]# cp openssl-0.9.8zg.tar.gz /usr/src/redhat/SOURCES/
  4. [root@localhost x86_64]# tar xvf openssl-0.9.8zg.tar.gz
  5. [root@localhost x86_64]# cp openssl-0.9.8zg/openssl.spec /usr/src/redhat/SPECS/
  6. [root@localhost x86_64]# rpmbuild /usr/src/redhat/SPECS/openssl.spec
  7. [root@localhost x86_64]# cd /usr/src/redhat/RPMS/x86_64/
  8. [root@localhost x86_64]# ls openssl* -l
  9. -rw-r--r-- 1 root root 1279018 Nov 6 01:01 openssl-0.9.8zg-1.x86_64.rpm
  10. -rw-r--r-- 1 root root 113834 Nov 6 01:01 openssl-debuginfo-0.9.8zg-1.x86_64.rpm
  11. -rw-r--r-- 1 root root 2237915 Nov 6 01:01 openssl-devel-0.9.8zg-1.x86_64.rpm
  12. -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”等等。

  1. 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”。需要执行以下命令增加链接库的软链接

  1. ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.6
  2. ln -s /usr/lib/libssl.so.0.9.8 /usr/lib/libssl.so.6
  3. ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib64/libcrypto.so.6
  4. 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

下载并编译opensshRPM包。下载地址:http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/,选择最新版下载。

  1. [root@localhost ~]# cd /opt
  2. [root@localhost ~]# yum -y install libX11-devel libXt-devel gtk2-devel
  3. [root@localhost ~]# wget http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.3p1.tar.gz
  4. [root@localhost ~]# tar zxvf openssh-7.3p1.tar.gz
  5. [root@localhost ~]# cp openssh-7.3p1/contrib/redhat/openssh.spec /usr/src/redhat/SPECS/
  6. [root@localhost ~]# cp openssh-7.3p1.tar.gz /usr/src/redhat/SOURCES/
  7. [root@localhost ~]# cd /usr/src/redhat/SPECS
  8. [root@localhost ~]# perl -i.bak -pe 's/^(%define no_(gnome|x11)_askpass)\s+0$/$1 1/' openssh.spec
  9. [root@localhost ~]# rpmbuild -bb openssh.spec
  10. [root@localhost ~]# cd /usr/src/redhat/RPMS/x86_64
  11. [root@localhost x86_64]# ls openssh-* -l
  12. -rw-r--r-- 1 root root 737241 Nov 6 01:41 openssh-7.3p1-1.x86_64.rpm
  13. -rw-r--r-- 1 root root 43458 Nov 6 01:41 openssh-askpass-7.3p1-1.x86_64.rpm
  14. -rw-r--r-- 1 root root 22868 Nov 6 01:41 openssh-askpass-gnome-7.3p1-1.x86_64.rpm
  15. -rw-r--r-- 1 root root 933212 Nov 6 01:41 openssh-clients-7.3p1-1.x86_64.rpm
  16. -rw-r--r-- 1 root root 16799 Nov 6 01:41 openssh-debuginfo-7.3p1-1.x86_64.rpm
  17. -rw-r--r-- 1 root root 456630 Nov 6 01:41 openssh-server-7.3p1-1.x86_64.rpm
  18. [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
  19. 4.rpm

安装后查看版本。

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

新版本安装后默认禁止root远程登录需要修改sshd配置文件修改后重启ssh服务。

  1. [root@localhost x86_64]# vim /etc/ssh/sshd_config
  2. #LoginGraceTime 2m
  3. PermitRootLogin yes #去掉注释
  4. #StrictModes yes
  5. #MaxAuthTries 6
  6. [root@localhost x86_64]# service sshd restart
  7. Stopping sshd: [ OK ]
  8. Starting sshd: [ OK ]

测试远程登录,yum等。远程登录成功后关闭telnet服务。

如果还有其他服务器需要升级。直接安装RPM即可。

  1. [root@localhost opt]# ls
  2. 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
  3. 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
  4. 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
  5. [root@localhost opt]# rpm --nodeps -Uvh openssl*
  6. Preparing... ########################################### [100%]
  7. 1:openssl ########################################### [ 25%]
  8. 2:openssl-debuginfo ########################################### [ 50%]
  9. 3:openssl-devel ########################################### [ 75%]
  10. 4:openssl-doc ########################################### [100%]
  11. [root@localhost opt]# ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.6
  12. [root@localhost opt]# ln -s /usr/lib/libssl.so.0.9.8 /usr/lib/libssl.so.6
  13. [root@localhost opt]# ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib64/libcrypto.so.6
  14. [root@localhost opt]# ln -s /usr/lib/libssl.so.0.9.8 /usr/lib64/libssl.so.6
  15. [root@localhost opt]# rpm --nodeps -Uvh openssh-*
  16. Preparing... ########################################### [100%]
  17. 1:openssh ########################################### [ 17%]
  18. 2:openssh-askpass ########################################### [ 33%]
  19. 3:openssh-askpass-gnome ########################################### [ 50%]
  20. 4:openssh-clients ########################################### [ 67%]
  21. 5:openssh-debuginfo ########################################### [ 83%]
  22. 6:openssh-server ########################################### [100%]
  23. [root@localhost opt]# vim /etc/ssh/sshd_config
  24. #PermitRootLogin prohibit-password #禁用
  25. PermitRootLogin yes #允许root通过密码登录
  26. [root@localhost opt]# service sshd restart
  27. Stopping sshd: [ OK ]
  28. Starting sshd: [ OK ]
  29. [root@localhost opt]# ssh -V
  30. 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

猜你在找的CentOS相关文章