RHEL 6.5升级openssl和openssh
最近一次在进行等级保护漏洞扫描时,发现三台Linux服务器存在安全漏洞。漏洞等级共定性为三级,分别为高危、中危、低危。高危是必须进行解决处理的漏洞,中危和低危可暂不处理。因此需要对此三台服务器进行漏洞处理。我们以其中一台Linux服务器进行介绍。
高危漏洞名称如下:
ü OpenSSH J-PAKE授权问题漏洞(CVE-2010-4478)
ü OpenSSH‘hash_buffer’函数缓冲区溢出漏洞(CVE-2014-1692)
ü OpenSSH sshd 安全漏洞 (CVE-2015-8325)
ü OpenSSH sshd 安全漏洞(CVE-2016-6515)
ü OpenSSH X11转发安全绕过漏洞(CVE-2016-1908)
三台服务器都属于专网性质,没有互联网,因此我们在后面步骤中将使用本地yum源。具体操作过程如下:
1、下载升级包:openssh-7.9p1.tar.gz和openssl-1.0.2q.tar.gz,将升级包通过WinSCP工具上传至Linux系统中,这里我们上传至/ssh目录中(/ssh目录通过mkdir命令提前创建好)。
2、查看当前Linux操作系统版本:lsb_release命令提供特定的LSB(Linux Standard Base)和发布版本相关信息,如下图1所示。
l 使用命令:lsb_release –a
l 版本:Red Hat Enterprise Linux Server release 6.5 (Santiago) Release: 6.5
图1 查看Linux版本信息
3、查看openssl和openssh版本。
l使用命令:ssh -V
l版本:OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
4、 挂载ISO镜像光盘,安装编译环境(因业务运行在云上,直接使用VMware虚拟化知识把ISO镜像挂载到虚机即可)。
l 挂载ISO镜像: mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom/
l下面几步将配置本地yum源:因为在安装编译环境时有太多的依赖关系,如果使用传统方式一步一步安装rpm包,实在太麻烦,使用yum安装方式,所有的依赖关系都将自动解决。
l 进入cd /etc/yum.repos.d/,可以看到rhel-source.repo文件,如下图2所示,建议对其进行备份。
图2 查看yum配置文件
l 备份rhel-source.repo:cp rhel-source.repo rhel-source.repo.back
l 使用vi编辑器编辑rhel-source.repo文件:vi rhel-source.repo。如下图3所示。
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file:///mnt/cdrom //路径设置成与你光驱或ISO挂载的路径相同
enabled=1 //enabled后面的值必须修改为1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-source-beta]
name=Red Hat Enterprise Linux $releasever Beta - $basearch - Source
baseurl= file:///mnt/cdrom //路径设置成与你光驱或ISO挂载的路径相同
enabled=1 //enabled后面的值必须修改为1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
图3 编辑yum配置文件
l 使用yum clean all命令清除YUM缓存:yum会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确的方法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all全部清除。
定位到挂载的ISO镜像下的rpm包目录下执行以下命令:
l 安装gcc-4.4.7-4.el6.x86_64.rpm:yum -y install gcc-4.4.7-4.el6.x86_64.rpm
l 安装gcc-c++:yum -y install gcc-c++-4.4.7-4.el6.x86_64.rpm
l 安装zlib-1.2.3:yum -y install zlib-1.2.3-29.el6.x86_64.rpm
l 安装zlib-devel:yum -y install zlib-devel-1.2.3-29.el6.x86_64.rpm
l 安装make:yum -y install make-3.81-20.el6.x86_64.rpm
5、升级openssl:先升级openssl再升级openssh。
l 解压openssl-1.0.2q.tar.gz:tar -zxvf openssl-1.0.2q.tar.gz
l 如下图4所示,进入解压目录:cd openssl-1.0.2q
图4 进入cd openssl-1.0.2q目录
l 配置openssl:./config --prefix=/usr/local/openssl --shared
l 编译安装:make && make install
l 查看/usr/local/openssl/目录是否生成目录bin、include、lib、ssl,如下图5所示:ls /usr/local/openssl/
图5 /usr/local/openssl/目录内容
l 使用vi编辑器,在/etc/ld.so.conf文件最后添加如下内容:/usr/local/openssl/lib
l使ld.so.conf配置文件生效:ldconfig
l 添加OPENSSL环境变量:通过vi编辑器,在/etc/profile文件最后一行添加:
export OPENSSL=/usr/local/openssl/bin
export PATH=$OPENSSL:$PATH:$HOME/bin
l 使用环境生效:source /etc/profile
l 如下图6所示,查看openssl版本号是否已经升级为新的版本:openssl version
Openssl版本号变为:OpenSSL 1.0.2q 20 Nov 2018
图6 查看openssl版本号
至此,openssl已经完成升级。
6、升级openssh:先升级openssl再升级openssh。
l 创建配置文件备份目录:mkdir /etc/sshback
l备份原来的ssh配置文件:mv /etc/ssh/* /etc/sshback/
l备份原来的ssh启用脚本:mv /etc/init.d/sshd /etc/init.d/sshdback
l解压openssh-7.9p1.tar.gz:tar -zxvf openssh-7.9p1.tar.gz
l进入解压目录:cd openssh-7.9p1
l 配置openssh:
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl
l 编译安装:make && make install
l复制启动脚本到/etc/init.d:cp -a contrib/redhat/sshd.init /etc/init.d/sshd
注:contrib/redhat/sshd.init 在openssh-7.9p1.tar.gz的解压目录里。
l 如下图7所示,查看/etc/ssh目录下是否存在配置文件:ls /etc/ssh
Moduli、sshd_config、ssh_host_dsa_key.pub;
ssh_host_ecdsa_key.pub、 ssh_host_ed25519_key.pub、 ssh_host_rsa_key.pub;
ssh_config ssh_host_dsa_key ssh_host_ecdsa_key;
ssh_host_ed25519_key ssh_host_rsa_key。
图7 /etc/ssh目录内容
l 开启允许root管理员登录,修改配置文件:vi /etc/ssh/sshd_config
找到#PermitRootLogin prohibit-password
在下面一行添加PermitRootLogin yes
PermitRootLogin yes
l重启sshd服务:service sshd restart
l如下图8所示,查看ssh版本号是否已经升级为新的版本:ssh –V
升级前版本:OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
升级后版本:OpenSSH_7.9p1, OpenSSL 1.0.2q 20 Nov 2018
图8 查看ssh和ssl版本