CentOS7.9升级OpenSSH7.4到OpenSSL-8.8p1总结

CentOS7.9升级OpenSSH7.4到OpenSSL-8.8p1总结

 升级方法参考:https://www.cnblogs.com/nmap/p/10779658.html

 

本次测试所用系统环境:

 CentOS7.9升级OpenSSH7.4到OpenSSL-8.8p1总结 

系统当前OpenSSH和OpenSSL版本:

 CentOS7.9升级OpenSSH7.4到OpenSSL-8.8p1总结

 

 

通过第三方漏洞扫描,检测出OpenSSH存在漏洞,以下是扫描报告中高危漏洞列表:

CentOS7.9升级OpenSSH7.4到OpenSSL-8.8p1总结

 

 

但是升级OpenSSH后做漏扫,漏洞仍然存在。当时的升级方法参照的是B站视频。

(升级方法基本参照B站视频:https://www.bilibili.com/video/BV1Fr4y1Q7L4),于是升级OpenSSL.

 

下载OpenSSH和OpenSSL:

OpenSSL官网:https://www.openssl.org/

OpenSSH官网:http://www.openssh.com/

https://ftp.openssl.org/source/

https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/

本次升级测试使用的是以下版本:

openssh-8.8p1.tar

openssl-1.1.1m.tar

 

升级之前请自行配置好yum源,通过yum源安装可以自动处理一些软件包之间的依赖关系,个人建议通过yum安装。

 

1、安装telnet(如果升级失败ssh中断会导致升级失败,以telnet方式登录,协议为telnet,端口23)

[root@localhost ~]# yum install xinetd -y

[root@localhost ~]#

[root@localhost ~]# yum install telnet-server -y

[root@localhost ~]#

[root@localhost ~]# yum install telnet -y

[root@localhost ~]#

以上配置telent服务端和xinetd必须安装,至于telnet客户端根据自己需要安装即可,如果本地想要使用telnet命令连接其他机器就需要安装,如果只作为服务端需要别人连接自己既可以不用安装客户端。

 

2、配置telnet

以下表格中的配置仅供参考,本次测试使用的环境该目录下没有此文件,故跳过该步骤。

参考:https://www.cnblogs.com/nmap/p/10779658.html

 

3、配置telnet登录的终端类型,在/etc/securetty文件末尾增加一些pts终端,这样通过telnet方式使用rootz才能登录

[root@localhost ~]# vi /etc/securetty

[root@localhost ~]#

[root@localhost ~]# tail -5 /etc/securetty

xvc0

pts/0

pts/1

pts/2

pts/3

[root@localhost ~]#

 

4、启动telnet服务,并设置开机自动启动

[root@localhost ~]# systemctl enable xinetd

[root@localhost ~]#

[root@localhost ~]# systemctl enable telnet.socket

Created symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/sys                                   temd/system/telnet.socket.

[root@localhost ~]#

[root@localhost ~]# systemctl start telnet.socket

[root@localhost ~]#

[root@localhost ~]# systemctl start xinetd

[root@localhost ~]#

 

另:查看防火墙状态,防火墙开启的话,也无法通过telnet方式登录

(1)设置开机启用防火墙:systemctl enable firewalld.service

(2)设置开机禁用防火墙:systemctl disable firewalld.service

(3)启动防火墙:systemctl start firewalld

(4)关闭防火墙:systemctl stop firewalld

(5)检查防火墙状态:systemctl status firewalld 

 

5、查看端口状态,端口是否打开

[root@localhost ~]# netstat -lntp | grep 23

tcp6       0      0 :::23                   :::*              LISTEN      1/systemd                                    

[root@localhost ~]#

 

6、使用telnet方式登录测试,能正常登录后再开始下一步操作

 

7、安装依赖包

升级需要几个组件,有些是和编译相关的

[root@localhost ~]# yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel            

[root@localhost ~]#

[root@localhost ~]# yum install -y pam* zlib*

[root@localhost ~]#

 

8、上传openssh-8.8p1.tar.gz  openssl-1.1.1m.tar.gz到指定目录,根据个人喜好随便放,不影响安装

新建文件夹存放安装包:

[root@localhost ~]# mkdir /home/itc/update

[root@localhost update]# ls

openssh-8.8p1.tar.gz  openssl-1.1.1m.tar.gz

 

解压文件:

[root@localhost update]# tar -zxvf openssl-1.1.1m.tar.gz

 

查看当前系统默认的版本,等会升级完毕对比下:

[root@localhost ~]# openssl version

OpenSSL 1.0.2k-fips  26 Jan 2017

[root@localhost ~]#

 

9、安装升级OpenSSL

备份下面两个文件或目录:

[root@localhost ~]# mv /usr/bin/openssl /usr/bin/openssl_bak

[root@localhost ~]# mv /usr/include/openssl /usr/include/openssl_bak

 

/usr/bin/openssl和/usr/include/openssl是当前系统默认版本的安装文件

 

10、编译安装新版本的OpenSSL

 

[root@localhost ~]# cd /home/itc/update/openssl-1.1.1m/

 

配置、编译、安装3个命令一起执行:

[root@localhost openssl-1.1.1m]# ./config shared && make && make install

 

注:Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure–help输出详细的选项列表。

其中,prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share。

 

下面两个文件或目录做软连接:

[root@localhost ~]# ln -s /usr/local/bin/openssl /usr/bin/openssl

[root@localhost ~]# ln -s /usr/local/inclued/openssl /usr/include/openssl

 

更新动态链接库数据,加载新配置:

[root@localhost lib]# echo "/usr/local/lib64" >> /etc/ld.so.conf

 

注:此目录/usr/local/lib64,在测试的时候参考网上的文章该目录是/usr/local/ssl/lib,但是在我当前环境下查看该目录为空,该命令如果未执行成功的话,查看版本号仍然是原版本。

 

重新加载动态链接库:

[root@localhost lib]# /sbin/ldconfig

 

查看版本号:

[root@localhost lib]# openssl version

OpenSSL 1.1.1m  14 Dec 2021

 

11、安装OpenSSH

进入安装包存放目录并解压

[root@localhost lib]# cd /home/itc/update

[root@localhost update]# ls

openssh-8.8p1.tar.gz  openssl-1.1.1m  openssl-1.1.1m.tar.gz

[root@localhost update]#

[root@localhost update]# tar -zvxf openssh-8.8p1.tar.gz

 

删除原先ssh的配置文件和目录:

[root@localhost openssh-8.8p1]# rm -rf /etc/ssh/*

 

配置、编译、安装:

[root@localhost openssh-8.8p1]# ./configure --prefix=/usr/ --sysconfdir=/etc/ssh  --with-ssl-dir=/usr/local/lib64 --with-zlib --with-md5-passwords --with-pam && make && make install

 

注意:/usr/local/lib64此目录对应动态链接库的目录,目录不对的话,命令执行中会报错。

 

从解压包中拷贝以下文件到目标位置:

(/etc/init.d/sshd和/etc/pam.d/sshd.pam应该是用新文件替换原文件,升级之前为查看该目录,请自行测试)

[root@localhost openssh-8.8p1]# cp -a contrib/redhat/sshd.init /etc/init.d/sshd

[root@localhost openssh-8.8p1]# cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

[root@localhost openssh-8.8p1]#

[root@localhost openssh-8.8p1]# chmod +x /etc/init.d/sshd

[root@localhost openssh-8.8p1]#

[root@localhost openssh-8.8p1]# chkconfig --add sshd

[root@localhost openssh-8.8p1]#

[root@localhost openssh-8.8p1]# systemctl enable sshd

[root@localhost openssh-8.8p1]#

 

把原先的systemd管理的sshd文件删除或者移走或删除,不移走的话影响重启sshd服务

[root@localhost ~]# mv /usr/lib/systemd/system/sshd.service /home/itc/update

 

设置sshd服务开机启动

[root@localhost ~]# chkconfig sshd on

 

测试启停服务:

[root@localhost ~]# /etc/init.d/sshd restart

Restarting sshd (via systemctl):                           [  OK  ]

 

[root@localhost ~]# netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2666/dnsmasq

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      103157/sshd: /usr/s

tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1206/cupsd

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1821/master

tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      10334/sshd: root@pt

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      718/rpcbind

tcp6       0      0 :::22                   :::*                    LISTEN      103157/sshd: /usr/s

tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd

tcp6       0      0 ::1:631                 :::*                    LISTEN      1206/cupsd

tcp6       0      0 ::1:25                  :::*                    LISTEN      1821/master

tcp6       0      0 ::1:6010                :::*                    LISTEN      10334/sshd: root@pt

tcp6       0      0 :::111                  :::*                    LISTEN      718/rpcbind

[root@localhost ~]#

 

[root@localhost ~]# /etc/init.d/sshd stop

Stopping sshd (via systemctl):                             [  OK ]

[root@localhost ~]#

[root@localhost ~]# netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2666/dnsmasq

tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1206/cupsd

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1821/master

tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      10334/sshd: root@pt

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      718/rpcbind

tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd

tcp6       0      0 ::1:631                 :::*                    LISTEN      1206/cupsd

tcp6       0      0 ::1:25                  :::*                    LISTEN      1821/master

tcp6       0      0 ::1:6010                :::*                    LISTEN      10334/sshd: root@pt

tcp6       0      0 :::111                  :::*                    LISTEN      718/rpcbind

 

[root@localhost ~]# /etc/init.d/sshd start

Starting sshd (via systemctl):                             [  OK  ]

[root@localhost ~]#

[root@localhost ~]# netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2666/dnsmasq

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      103242/sshd: /usr/s

tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1206/cupsd

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1821/master

tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      10334/sshd: root@pt

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      718/rpcbind

tcp6       0      0 :::22                   :::*                    LISTEN      103242/sshd: /usr/s

tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd

tcp6       0      0 ::1:631                 :::*                    LISTEN      1206/cupsd

tcp6       0      0 ::1:25                  :::*                    LISTEN      1821/master

tcp6       0      0 ::1:6010                :::*                    LISTEN      10334/sshd: root@pt

tcp6       0      0 :::111                  :::*                    LISTEN      718/rpcbind

[root@localhost ~]#

 

查看版本:

[root@localhost ~]# ssh -V

OpenSSH_8.8p1, OpenSSL 1.1.1m  14 Dec 2021

[root@localhost ~]#

 

至此,升级顺利完成,再次做漏洞扫描,未发现漏洞。但是再次用root用户通过SSH登录提示Access denied,该问题正在处理中,暂未解决。

上一篇:Rabbit在Centos7上的安装教程


下一篇:MacOS下使用C语言基于openssl库进行RSA加密解密