一、前言

在项目实施、运维过程中,经常会通过漏洞扫描工具检查发现Open SSH、Open SSL存在高危漏洞,如OpenSSL“心脏出血”漏洞,利用该漏洞,黑客可以获取约30%的https开头网址的用户登录账号密码,其中包括购物、网银、社交、门户等类型的知名网站等。

以及OpenSSH漏洞,如“OpenSSH远程代码执行漏洞CVE-2016-10009”, sshd服务可以利用转发的agent-socket文件,欺骗本机的ssh-agent来加载一个恶意的PKCS#11模块,从而可以远程执行代码,黑客利用漏洞实现远程命令执行,严重情况下可能会导致数据泄露。

通过项目中进行实施总结,对Linux 7.0以上OpenSSH、OpenSSL版本升级过程进行整理,以减少小伙伴SSH版本升级失败进行“避坑”。

Linux 7.0 SSH 版本升级实施技术方案 | 资料_java
Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_02
Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_03


二、实施准备

1.升级规划

由于主机运行业务系统的重要性,升级前检查主机Linux操作系统版本,搭建测试环境进行验证,不可盲目操作,以防导致业务系统不可访问。同时在升级时,要考虑回退方案,开启Telnet服务,确保主机可管理。

Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_04

2.环境检查

检查Linux版本信息

检查Telnet服务是否安装,如没有安装,需准备操作系统ISO介质文件进行安装。

3.介质准备

Open SSH官方网站安装包下载:

登录http://www.openssh.com/portable.html,下载最新版open ssh安装包。

Open SSL官方网站安装包下载:

本文以openssh-7.9p1、openssl-1.0.2n版本升级为例进行介绍。

ssh 登录主机,拷贝Linux 7.0 ISO、openssh-7.9p1.tar.gz、openssl-1.0.2n.tar.gz安装介质到需要安装的机器。

cd /tmp

4.搭建本地yum源

1)、mount ISO镜像文件

mkdir /macmount -o loop /tmp/rhel-server-7.0-x86_64-dvd.iso /mac

2)、配置yum文件

cd /etc/yum.repos.d/vi base.repo

内容如下:

[base]
name=local yum
baseurl=file:///mac
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

3)、检查yum 配置是否正确

yum list

5.安装telnet服务

安装Telnet服务,防止ssh更新时网络断开无法连接:

1)、 安装telnet-server  

yum -y install telnet-server.x86_64

2)、 安装xinetd

yum install xinetd.x86_64

3)、关闭防火墙

systemctl status firewalld.servicesystemctl stop firewalld.service

systemctl disable telnet.socket

4)、启动服务

systemctl start telnet.socket   /启动telnet服务systemctl status telnet.socket   /查看服务状态

#ss  -tnlp | grep 23 /查看侦听端口

5)、安装完成后,将xinetd服务加入开机自启动: 

systemctl enable xinetd.service 

将telnet服务加入开机自启动: 

systemctl enable telnet.socket

6)、Telnet 远程登录测试


三、实施步骤

1、部署配置Open SSL安装包

1)安装openssl 依赖包

yum install perl gcc

2)解压openssl包

cd /tmptar -zxvf openssl-1.0.2n.tar.gz

3)安装openssl

cd openssl-1.0.2n./config sharedmakemake install


Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_05
Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_06

4)配置SSL

mv -f /usr/bin/openssl /usr/bin/openssl.OFF

mv -f /usr/include/openssl /usr/include/openssl.OFF


ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl


echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

/sbin/ldconfig -v

/sbin/ldconfig

openssl version -a >>/tmp/ssh.log

Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_07

5)验证ssl 最新版本OpenSSL 1.0.2n

openssl

version

Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_08

2、部署配置Open SSH安装包

1)解压介质,安装依赖包

cd /tmptar -zxvf openssh-7.9p1.tar.gzyum install -y pam* zlib*

Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_09
Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_10
Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_11

2)配置openssh

cd openssh-7.9p1./configure -prefix=/usr -sysconfdir=/etc/ssh -with-ssl-dir=/usr/local/ssl -with-md5-passwords -mandir=/usr/share/man -with-pam=enable

Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_12

3)删除原ssh信息

rm -rf /etc/ssh/*

4)编译文件

make

make install

Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_13
Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_14

5)SSH参数配置

ssh -V >>/tmp/ssh.log

rm -rf /etc/init.d/sshd

cp -p /tmp/openssh-7.9p1/contrib/redhat/sshd.init /etc/init.d/sshd

cp -p /tmp/openssh-7.9p1/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

chmod +x /etc/init.d/sshd

chkconfig --add sshd

systemctl enable sshd.service


echo 'X11Forwarding yes' >> /etc/ssh/sshd_config 

sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config

sed -i "s/#UsePAM no/UsePAM yes/g" /etc/ssh/sshd_config

service sshd restart


sed -ie '/ulimit -n 20480/d' /etc/profile

sed -ie '/ulimit -n 20480/d' /etc/rc.local

sed -ie '/service sshd restart/d' /etc/rc.local

6)重新登录,确认升级后版本, 升级完成,也可以重启机器测试。

Linux 7.0 SSH 版本升级实施技术方案 | 资料_java_15