文档章节

CentOS 5.8升级OpenSSH,OpenSSL到最新版

m_lm
 m_lm
发布于 2016/11/06 02:59
字数 1437
阅读 609
收藏 1

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

[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

升级版本:

经过多次验证最终确定使用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并不涉及OpenSSL CVE-2014-0160 漏洞 (心脏出血漏洞)。目前有漏洞的版本有: 1.0.1-1.0.1f(包含1.0.1f)以及 1.0.2-beta。参考:https://segmentfault.com/a/1190000000461002

安装编译环境

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

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

安装并开启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服务。

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

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

[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: 

一切就绪,准备开始。

步骤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 /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

© 著作权归作者所有

共有 人打赏支持
m_lm
粉丝 0
博文 15
码字总数 4659
作品 0
哈尔滨
Redhat 6.7 x64升级SSH到OpenSSH_7.4p1文档

导语 Redhat企业级系统的6.7版自带SSH版本为OpenSSH_5.3p1, 基于审计和安全性需求,建议将其升级到最新的OpenSSH版本,当前官网最新版本为7.4p1. 本文档将详细介绍OpenSSH升级的完整步骤。需...

bz_z
2017/06/12
0
0
Centos 6.3 openssh升级

Centos 6.3 openssh升级(安全漏洞修复) 方法/步骤 注意:先多开几个crt客户端,就算过程中ssh安装失败,也还可以操作服务器,不会中断 1 准备 (1)下载安装包 https://www.openssl.org/so...

独一无二zz
06/29
0
0
ssh不能登陆了,openssl库冲突

平常没咋注意(不知道什么操作),今天不能ssh登陆centos了。 在服务端排查,说是“starting sshd: OpenSSL version mismatch.Built against”,唉,openssl冲突了。上网搜了一下,尝试了重新...

张旭0512
2014/03/13
0
0
OpenSSH升级到最新版本(openssh-7.7p1.tar.gz)

OpenSSH升级到最新版本(openssh-7.7p1.tar.gz) 1############################################################### 查看升级前的环境 [root@localhost zlib-1.2.11]# cat /etc/redhat-re......

shangshanyang
06/02
0
0
RedHat 7编译升级OpenSSL、OpenSSH及NTP

上篇分享了RedHat 6.5编译安装升级OpenSSL、OpenSSH及NTP的博文,这篇来测试一下RedHat 7.2编译安装升级OpenSSL、OpenSSH及NTP,主要过程基本一致,不过openssh略有不同。上篇博文请见:RedHa...

jianlong1990
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
25分钟前
2
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
32分钟前
1
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
42分钟前
16
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
1
0
区块链技术中的那些能商用的企业级应用

WEPOWER是一家立陶宛初创企业,旨在改变可再生电力项目的付费方式。WePower公司创始人Nick Martyniuk表示,政府统一收购价的存在推动了全球风能与太阳能市场的发展。因此,他的公司希望帮助那...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部