一、问题背景

        目前经过安全部门漏洞扫描设备扫描出CentOS系统存在OpenSSH相关漏洞,现修复建议是OpenSSH过低版本升级至9.6p1版本,但是升级过程中其他依赖也需安装,例如OpenSSL、zlib等。

二、下载安装包

        需要下载对应版本安装包后,上传至服务器上(如服务器可以访问互联网,则可以使用wget方式下载)

1、OpenSSH-9.6p1版本

下载地址:Index of /pub/OpenBSD/OpenSSH/portable/

2、 OpenSSL-1.1.1q版本

下载地址:[ 1.1.1 ] - /source/old/1.1.1/index.html

3、zlib 1.3.1版本

下载地址:zlib Home Site

4、 pam-1.1.8-23和pam-devel-1.1.8-23版本

RPM resource pam下载地址:RPM resource pam=

RPM resource pam-devel(x86-64)=

三、安装telnet

        注:在进行openssh升级之前,建议安装telnet服务,以防止在升级过程中一旦出现中断现象,服务器还可以通过telnet方式登录。

1、下载telnet-client、telnet-server、xinetd安装包

注:如服务器可以访问互联网,则可以使用wget方式下载

RPM resource telnetTelnet-client下载地址:RPM resource telnet

Telnet-server下载地址:RPM resource telnet-server(x86-64)

RPM resource xinetdXinetd下载地址:RPM resource xinetd

2、安装telnet-client、telnet-server、xinetd

[root@20240322-1149-test1 ~]# rpm -ivh xinetd-2.3.15-14.el7.x86_64.rpm

[root@20240322-1149-test1 ~]# rpm -ivh telnet-0.17-65.el7_8.x86_64.rpm

[root@20240322-1149-test1 ~]# rpm -ivh telnet-server-0.17-65.el7_8.x86_64.rpm

3、查看是否安装成功

[root@20240322-1149-test1 ~]# rpm -qa | grep telnet

[root@20240322-1149-test1 ~]# rpm -qa | grep xinetd

4、启动telnet依赖的xinetd服务,并查看是否正常启

[root@20240322-1149-test1 ~]# systemctl start xinetd

[root@20240322-1149-test1 ~]# ps -ef | grep xinet

5、编辑telnet文件

如果没有telnet文件也没关系,vim直接创建并编辑即可

[root@20240322-1149-test1 ~]# vim /etc/xinetd.d/telnet

添加:

service telnet

{

flags = REUSE

socket_type = stream

wait = no

user = root

server =/usr/sbin/in.telnetd

log_on_failure += USERID

disable = no

}

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

[root@20240322-1149-test1 ~]# systemctl start telnet.socket

[root@20240322-1149-test1 ~]# systemctl enable telnet.socket

[root@20240322-1149-test1 ~]# systemctl status telnet.socket

7、防火墙放行telnet服务的23端口

[root@20240322-1149-test1 ~]# firewall-cmd --zone=public --add-port=23/tcp --permanent

[root@20240322-1149-test1 ~]# firewall-cmd --reload       #刷新防火墙策略

8、通过telnet登录测试

登录失败,这个为正常现象,因为系统默认禁止root用户使用telnet登录终端,我们在日志中查看登录使用的终端并在/etc/securetty中解除禁止即可

9、 telnet登录问题解决方法

查看被禁止登录的终端

[root@20240322-1149-test1 ~]# tail /var/log/secure

编辑/etc/securetty 将禁止登录的终端添加进来即可

[root@20240322-1149-test1 ~]# vim /etc/securetty

10、再次使用telnet登录测试

登录成功

四、卸载老版本OpenSSH、OpenSSL

        我们升级OpenSSH采用的是卸载主机中老版本的OpenSSH,再安装新版本的OpenSSH,依此来达成升级并解决漏洞的问题。

1、查看系统中安装的OpenSSH、OpenSSL

[root@20240322-1149-test1 ~]# rpm -qa openssh*

[root@20240322-1149-test1 ~]# rpm -qa openssl*

2、备份/etc/pam.d/sshd

[root@20240322-1149-test1 ~]# mv /etc/pam.d/sshd /etc/pam.d/sshd-bak 

3、卸载系统中安装的OpenSSH、OpenSSL

在执行这步时需要确认telnet已经安装并且可以正常通过telnet登录系统

[root@20240322-1149-test1 ~]# rpm -e --nodeps openssh

[root@20240322-1149-test1 ~]# rpm -qa openssh

[root@20240322-1149-test1 ~]# rpm -e --nodeps openssl

[root@20240322-1149-test1 ~]# rpm -qa openssl

五、安装新版本OpenSSH、OpenSSL

1、安装openssl

#解压openssl安装包

[root@20240322-1149-test1 ~]# tar zxvf openssl-1.1.1q.tar.gz

#切换到安装目录

[root@20240322-1149-test1 ~]# cd openssl-1.1.1q/

#进行初始化

[root@20240322-1149-test1 openssl-1.1.1q]# ./config -Wl,-rpath=/usr/lib64 --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --libdir=/usr/lib64

#执行安装

[root@20240322-1149-test1 openssl-1.1.1q]# make -j 4 && make install

#创建软链接

[root@20240322-1149-test1 openssl-1.1.1q]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

#安装完成,查看版本

[root@20240322-1149-test1 openssl-1.1.1q]# openssl version

2、安装zlib

#解压安装包

[root@20240322-1149-test1 ~]# tar zxvf zlib-1.3.1.tar.gz

#进入安装目录

[root@20240322-1149-test1 ~]# cd zlib-1.3.1/

#添加prefix路径

[root@20240322-1149-test1 zlib-1.3.1]# ./configure --prefix=/usr/local/zlib

#编译并安装

[root@20240322-1149-test1 zlib-1.3.1]# make && make install

#写入动态库路径

[root@20240322-1149-test1 zlib-1.3.1]# echo "/usr/local/zlib/lib/" >> /etc/ld.so.conf

[root@20240322-1149-test1 zlib-1.3.1]# ldconfig –v

#查看软链接

[root@20240322-1149-test1 zlib-1.3.1]# ll /lib64/libz.*

#进入编译目录下

[root@20240322-1149-test1 zlib-1.3.1]# cd /usr/local/zlib/lib/

#复制执行目录到/lib64下

[root@20240322-1149-test1 lib]# cp libz.so.1.3.1 /lib64/libz.so.1.3.1

#进入lib64目录下创建软链接

[root@20240322-1149-test1 lib]# cd /lib64

[root@20240322-1149-test1 lib64]# ln -snf libz.so.1.3.1  /lib64/libz.so

[root@20240322-1149-test1 lib64]# ln -snf libz.so.1.3.1  /lib64/libz.so.1

3、安装pam、pam-devel

#将安装包放置在/usr/local下并执行安装命令

[root@20240322-1149-test1 ~]# cd /usr/local/

[root@20240322-1149-test1 ~]# rpm -ivh pam-1.1.8-23.el7.x86_64.rpm

[root@20240322-1149-test1 ~]# rpm -ivh pam-devel-1.1.8-23.el7.x86_64.rpm

4、安装openssh

#解压安装包

[root@20240322-1149-test1 ~]# tar -xzvf openssh-9.6p1.tar.gz

#进入openssh安装目录

[root@20240322-1149-test1 ~]# cd openssh-9.6p1

#编译安装

[root@20240322-1149-test1 openssh-9.6p1]# ./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-pam --with-md5-passwords --with-tcp-wrappers --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib --mandir=/usr/share/man

#执行安装

[root@20240322-1149-test1 openssh-9.6p1]# make && make install

#授权

[root@20240322-1149-test1 openssh-9.6p1]# chmod 600 /etc/ssh/ssh_host_rsa_key

[root@20240322-1149-test1 openssh-9.6p1]# chmod 600 /etc/ssh/ssh_host_ecdsa_key

[root@20240322-1149-test1 openssh-9.6p1]# chmod 600 /etc/ssh/ssh_host_ed25519_key

#相关操作配置

[root@20240322-1149-test1 openssh-9.6p1]# cp -p contrib/redhat/sshd.init /etc/init.d/sshd

[root@20240322-1149-test1 openssh-9.6p1]# chmod +x /etc/init.d/sshd

[root@20240322-1149-test1 openssh-9.6p1]# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

[root@20240322-1149-test1 openssh-9.6p1]# sed -i '/UsePAM no/c\UsePAM yes' /etc/ssh/sshd_config

[root@20240322-1149-test1 openssh-9.6p1]# sed -i '/^Subsystem/c\Subsystem sftp /usr/libexec/sftp-server' /etc/ssh/sshd_config

[root@20240322-1149-test1 openssh-9.6p1]# sed -i '/^SELINUX=enforcing/c\SELINUX=disabled' /etc/selinux/config

[root@20240322-1149-test1 openssh-9.6p1]# mv /etc/pam.d/sshd-bak /etc/pam.d/sshd

#查看更新后版本

[root@20240322-1149-test1 openssh-9.6p1]# ssh –V

#启动sshd服务并设置开机自启

[root@20240322-1149-test1 openssh-9.6p1]# rm -rf /usr/lib/systemd/system/sshd.service

[root@20240322-1149-test1 openssh-9.6p1]# systemctl daemon-reload

[root@20240322-1149-test1 openssh-9.6p1]# systemctl restart sshd

[root@20240322-1149-test1 openssh-9.6p1]# systemctl status sshd

[root@20240322-1149-test1 openssh-9.6p1]# systemctl enable sshd

5、使用ssh登录终端测试

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: