客户一台安装了CentOS6的公网Web服务器被上级单位定期巡检扫出了SSL漏洞和SSH漏洞,所以尝试升级并且以本文作为记录。

升级前的准备工作

SSH升级过程中会导致SSH链接断开,所以需要接显示器操作或者开启Telnet才行。
而升级SSL过程中可能会导致错误,需要做好备份。

开启服务器telnet

1、安装telnet客户端和服务器
检查是否安装了telnet客户端和服务器

# rpm -qa|grep telnet
#

如上说明没有安装telnet客户端和服务器软件,运行以下命令进行安装

安装客户端:# yum install telnet
安装服务器:# yum install telnet-server

2、启动telnet服务
telnet服务默认情况下是关闭的,我们需要修改配置文件/etc/xinetd.d/telnet,

# vi /etc/xinetd.d/telnet

将最后一行中的disable的值由yes修改为no

# service  xinetd restart # 重启xinet服务

3、新建普通用户用于telnet登录
CentOS默认禁止root用户通过telnet登录,而且开放root登录非常危险,所以直接新建一个普通用户登录即可。

备份

备份OpenSSL

# mkdir -p /root/usr/openssl
# mkdir -p /root/usr/include/
# cp /usr/bin/openssl /root/usr/openssl
# cp -r /usr/include/openssl /root/usr/include/openssl

备份OpenSSH

#mv /etc/ssh /etc/ssh_old

下载新版本程序

1、OpenSSL下载地址

https://www.openssl.org/source/

2、OpenSSH 下载地址

https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

3、本次更新时选择的版本为OpenSSL1.02n和OpenSSH7.6p1

升级OpenSSL

1、升级前版本

# openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013
built on: Wed Mar 22 21:43:28 UTC 2017
platform: linux-x86_64
options:  bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/etc/pki/tls"
engines:  dynamic

2、解压源码包

# tar zxvf openssl-1.0.2n.tar.gz

3、编译OpenSSL

# cd openssl-1.0.2n
# ./config --prefix=/usr --openssldir=/etc/pki/tls --shared

PS: 要加上shared参数,否则在升级ssh时会报错,报错的信息可能有多种
1.) configure: error: Can't find recent OpenSSL libcrypto (see config.log for details)
2.) OpenSSL version mismatch.
3.) checking OpenSSL header version... not found

# make
# make test
# make install

4、升级后版本信息

[root@s12 openssl-1.0.2n]# openssl version -a
OpenSSL 1.0.2n  7 Dec 2017
built on: reproducible build, date unspecified
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/etc/pki/tls"

升级OpenSSH

1、升级前版本

# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013

2、解压源码包

# tar zxvf openssh-7.6p1.tar.gz

3、编译OpenSSH

# ./configure --prefix=/usr --sysconfdir=/etc/ssh --without-zlib-version-check --with-openssl-includes=/usr/ --with-md5-passwords --mandir=/usr/share/man
# make
# make isntall
# service sshd restart

4、升级后版本信息

[root@s12 ~]# ssh -V
OpenSSH_7.6p1, OpenSSL 1.0.2n  7 Dec 2017

问题处理

1、You need Perl 5

Operating system: x86_64-whatever-linux2
You need Perl 5.

解决办法:

# yum install perl

2、make[1]: gcc: Command not found
解决办法:

yum install gcc automake autoconf libtool make

3 、configure: error: zlib.h missing - please install first or check config.log
解决办法:

# yum install zlib-devel