客户一台安装了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
复制