客户一台安装了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
准备折腾下OpenSSL,貌似我的比较老旧了。
小伙写的不错
现在开的VPS一般都可以不用手动升级了。
CentOS6的源已经不维护更新版本修复漏洞了,只能手动升级,CentOS7确实可以自动升级的