技术分享第二波之Openssl&Openssh升级

2020-02-04 09:45:00 2点赞 8收藏 0评论

上一篇我们分享了SAMBA共享的安装与简单配置,今天与大家探讨一下如何升级Openssl、Openssh。PS:升级有风险,操作需谨慎!

前言

工作中经常遇到各种漏洞扫描,最终扫描报告各种漏洞简直惨不忍睹。其中Openssl、Openssh漏洞较为常见,因此为了应用系统的安全,及时升级Openssl、Openssh版本还是很有必要的,下面就介绍下如何进行操作。

第一章 适用范围

本文档适用于以下操作系统下的 OpenSSH 软件升级操作:

○ CentOS 5
○ CentOS 6

第二章 需求

2.1 系统环境需求

在安装前,请确认系统上已经安装了以下软件包:

○ gcc
○ pam-devel
○ zlib-devel

○ perl(5 版本,OpenSSL 1.0.2j 在配置编译参数时,需要此软件)

2.2 权限需求

更新 OpenSSH 软件需要 root 用户权限。

2.3 操作环境需求

在 SHELL 内执行以下命令,可将 SHELL 语言切换至英文:

技术分享第二波之Openssl&Openssh升级

注意:在更新 OpenSSH 软件时,可能造成远程连接中断,如发生远程中断,需在 服务器控制台进行操作。

3.1 下载软件源代码包

OpenSSH 软件依赖于 OpenSSL 软件,因此,需从官方网站下载以下源代码包:

技术分享第二波之Openssl&Openssh升级

3.2 上传软件源代码包

将软件源代码包上传至服务器的 /root 目录下。

使用 root 用户登录服务器,执行以下命令查看文件是否已经上传至指定位置:

ll /root

如下,显示结果中包含 openssh-7.4p1.tar.gz 、 openssl-1.0.2j.tar.gz 则表示已上传 至指定位置。

技术分享第二波之Openssl&Openssh升级

3.3 编译 OpenSSL 软件

3.3.1 解压缩源代码

使用 root 用户登录服务器,执行以下命令解压 OpenSSL 源代码压缩包:

cd /root

tar zxf openssl-1.0.2j.tar.gz

3.3.2 配置编译参数

进入解压后的 OpenSSL 软件源代码目录:

cd /root/openssl-1.0.2j

执行以下命令配置编译参数:
./config --openssldir=/usr/local/grczs/openssl-1.0.2j -fPIC zlib

技术分享第二波之Openssl&Openssh升级

3.3.3 编译依赖文件

执行以下命令编译依赖文件:

make depend

执行完毕后,如显示以下字样,并且无提示报错,即表示编译完成:

技术分享第二波之Openssl&Openssh升级


3.3.4 编译二进制文件

执行以下命令编译 OpenSSL 二进制文件:

make

编译完成后,如显示以下字样,并且无提示报错,即表示编译完成:
make[2]: Leaving directory `/root/openssl-1.0.2j/test'
make[1]: Leaving directory `/root/openssl-1.0.2j/test'
making all in tools...
make[1]: Entering directory `/root/openssl-1.0.2j/tools'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/root/openssl-1.0.2j/tools'

执行以下命令测试编译结果:

make test

执行完毕后,如显示以下字样,并且无提示报错,即表示测试完成

技术分享第二波之Openssl&Openssh升级


3.3.5 安装软件包

执行以下命令安装编译后的软件包:

make install

执行完毕后,如显示以下字样,并且无提示报错,即表示安装完成

技术分享第二波之Openssl&Openssh升级


执行以下命令检查安装后的 OpenSSL 软件版本:

/usr/local/grczs/openssl-1.0.2j/bin/openssl version

执行完毕后,如显示以下字样,即表示新的 OpenSSL 软件版本已安装完毕:

[root@localhost openssl-1.0.2j]# /usr/local/grczs/openssl-1.0.2j/bin/openssl version OpenSSL 1.0.2j 26 Sep 2016

3.4 编译 OpenSSH 软件

3.4.1 解压缩源代码

使用 root 用户登录服务器,执行以下命令解压 OpenSSH 源代码压缩包:

cd /root

tar zxf openssh-7.4p1.tar.gz

3.4.2 配置编译参数

进入解压后的 OpenSSL 软件源代码目录:

cd /root/openssh-7.4p1

执行以下命令配置编译参数:

技术分享第二波之Openssl&Openssh升级

执行完毕后,需仔细检查输出结果:

1、是否已链接至正确的 OpenSSL 库(输出结果中含有 "OpenSSL 1.0.2j 26 Sep 2016" 字样):

2、是否已指向正确的 OpenSSL 目录(输出结果中含有 "/usr/local/grczs/openssl-1.0.2j" 字样):

3.4.3 编译二进制文件

执行以下命令编译 OpenSSH 二进制文件:

make

3.4.4 安装软件包

执行以下命令安装编译后的软件包:

make install

执行完毕后,如显示以下字样,并且无提示报错,即表示安装完成:

技术分享第二波之Openssl&Openssh升级


执行以下命令检查安装后的 OpenSSH 软件版本:

/usr/local/grczs/openssh-7.4p1/sbin/sshd -V

执行完毕后,如显示 "OpenSSH_7.4p1, OpenSSL 1.0.2j 26 Sep 2016" 字样,即表示 新的 OpenSSH 软件版本已安装完毕:

[root@localhost openssh-7.4p1]# /usr/local/grczs/openssh-7.4p1/sbin/sshd -V unknown option -- V
OpenSSH_7.4p1, OpenSSL 1.0.2j 26 Sep 2016

3.5 更新 OpenSSH 配置文件权限

使用 root 用户登录服务器,执行以下命令更新 OpenSSH 服务配置文件权限:

[root@localhost openssh-7.4p1]# /usr/local/grczs/openssh-7.4p1/sbin/sshd -V unknown option -- V
OpenSSH_7.4p1, OpenSSL 1.0.2j 26 Sep 2016

chmod 600 /usr/local/grczs/openssh-7.4p1/etc/ssh/*

chmod 644 /usr/local/grczs/openssh-7.4p1/etc/ssh/*.pub

chmod 644 /usr/local/grczs/openssh-7.4p1/etc/ssh/ssh_config
执行完毕后,执行以下命令检查文件权限:
ll /usr/local/grczs/openssh-7.4p1/etc/ssh

3.6 测试 OpenSSH 服务

3.6.1 修改新版本的配置文件

将 /usr/local/grczs/openssh-7.4p1/etc/ssh/sshd_config 文件的内容替换为以下:

Port 62222
PidFile /var/run/sshd-7.4p1.pid
AuthorizedKeysFile .ssh/authorized_keys
Subsystem sftp /usr/local/grczs/openssh-7.4p1/libexec/sftp-server

3.6.2 手动启动新版本的 SSH 服务

执行以下命令启动新版本的 OpenSSH 服务,监听在 62222 端口:

/usr/local/grczs/openssh-7.4p1/sbin/sshd

执行以下命令查看是否已经启动服务并监听在 62222 端口: netstat -antulp | grep LISTEN | grep 62222

执行完毕后,如显示类似以下结果,即表示服务启动正常:

[root@localhost ssh]# netstat -antulp | grep LISTEN | grep 62222
tcp 0 0 0.0.0.0:62222 0.0.0.0:* LISTEN 28247/sshd
tcp 0 0 :::62222 :::* LISTEN 28247/sshd

执行以下命令停止新版本的 OpenSSH 服务:

/etc/rc.d/init.d/sshd-7.4p1.init stop

执行以下命令查看是否已经停止服务:
netstat -antulp | grep LISTEN | grep 62222
执行完毕后,如不显示任何结果,即表示服务停止成功。

3.8 替换 sshd 服务脚本

3.8.1 修改新版本的配置文件

将 /usr/local/grczs/openssh-7.4p1/etc/ssh/sshd_config 文件内的 "Port 62222" 修改 为 "Port 22"。

3.8.2 替换 SSH 服务

使用 root 用户新建一个 ssh 会话,在新打开的会话里,依次执行以下命令:

service sshd stop
mv /etc/rc.d/init.d/sshd /etc/rc.d/init.d/sshd.bak
mv /etc/rc.d/init.d/sshd-7.4p1.init /etc/rc.d/init.d/sshd
service sshd start

执行以下命令查看是否已经启动服务并监听在 22 端口:

netstat -antulp | grep LISTEN | grep 22

执行完毕后,如显示类似以下结果,即表示服务启动正常:
[root@localhost ssh]# netstat -antulp | grep LISTEN | grep 62222
tcp 0 0 0.0.0.0:62222 0.0.0.0:* LISTEN 28247/sshd
tcp 0 0 :::62222 :::* LISTEN 28247/sshd


总结

总体来说升级过程并不复杂,但生产环境中需要一定要注意备份,按步骤一步步进行,以免出现故障。最后祝大家都能顺利升级!

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
8
扫一下,分享更方便,购买更轻松