OpenSSH 资源管理错误漏洞(CVE-2021-28041)

OpenSSH 资源管理错误漏洞(CVE-2021-28041)

漏洞描述:

OpenSSH(OpenBSD Secure Shell)是Openbsd计划组的一套用于安全访问远程计算机的连接工具。 该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他 网络级的攻击。 OpenSSH before 8.5 存在安全漏洞,攻击者可利用该漏洞在遗留操作系统上不受 约束的代理套接字访问。

解决办法:

升级OpenSSH至最新版本(8.6p1)

注意:升级OpenSSH前,需要先升级OpenSSL版本

准备工作,安装telnet,避免升级失败后无法ssh登录

yum -y install telnet-server.x86_64  //telnet服务器
yum list | grep telnet-server  //telnet客户端(可不安装)
yum list | grep xinetd //xinetd守护进程

#配置开机启动
systemctl enable xinetd.service
systemctl enable telnet.socket

#启动服务
systemctl start telnet.socket
systemctl start xinetd

#查看端口,看到23端口已打开
netstat -ntlp

#开启防火墙允许访问23端口(没开防火墙跳过此步骤)
firewall-cmd --add-port=23/tcp --permanent
firewall-cmd --reload

#默认root无法远程访问,修改/etc/securetty
vi /etc/securetty
在末尾添加
pts/0
pts/1

测试使用telnet登录服务器

遇到的问题:

我的xinetd端口一直挂在tcp6上的端口23上

可以在/etc/xinetd.d/telnet文件中修改

service telnet
{
            flags = REUSE
            socket_type = stream
            wait = no
            user = root
            bind = 0.0.0.0
            server = /usr/sbin/in.telnetd
            log_on_failure += USERID
            disable = no  #改为 no 或者注释这一行
}

下载OpenSSH

下载地址:https://mirrors.tuna.tsinghua.edu.cn/pub/OpenBSD/OpenSSH/portable/

由于在博主的地址没找到下载地址,所以我手动在清华镜像中找了一个,手动下载上传上去的

#进入要下载的目录
cd /usr/local/src/
#手动上传
#解压
tar -zxvf openssh-8.6p1.tar.gz

编译安装

#进入目录
[root@172-15-4-5 src]# cd openssh-8.6p1

#编译
[root@172-15-4-5 openssh-8.6p1]#  ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/lib64 --without-hardening
#查看结果,输出为0代表正常
[root@172-15-4-5 openssh-8.6p1]# echo $?
0

过程中遇到问题 configure: error: PAM headers not found

yum -y install pam-devel

安装

[root@172-15-4-5 openssh-8.6p1]# make

#查看结果,输出为0代表正常
[root@172-15-4-5 openssh-8.6p1]# echo $?
0

[root@172-15-4-5 openssh-8.6p1]# make install

#查看结果,输出为0代表正常
[root@172-15-4-5 openssh-8.6p1]# echo $?
0

配置SSH文件

#允许root账户登录
[root@localhost openssh-8.6p1]# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
[root@localhost openssh-8.6p1]# grep "^PermitRootLogin"  /etc/ssh/sshd_config      
PermitRootLogin yes

[root@localhost openssh-8.6p1]# echo "UseDNS no" >> /etc/ssh/sshd_config
[root@localhost openssh-8.6p1]# grep  "UseDNS"  /etc/ssh/sshd_config    
UseDNS no

#复制文件到系统服务目录
[root@localhost openssh-8.6p1]# cp -a contrib/redhat/sshd.init /etc/init.d/sshd
[root@localhost openssh-8.6p1]# cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

#添加执行权限
[root@localhost openssh-8.6p1]# chmod +x /etc/init.d/sshd

#添加服务,配置开机启动
[root@localhost openssh-8.6p1]# chkconfig --add sshd
[root@localhost openssh-8.6p1]# systemctl enable sshd
[root@localhost openssh-8.6p1]# chkconfig sshd on

#原来的服务移走,否走有时重启后ssh服务起不来
[root@localhost openssh-8.6p1]# mv /usr/lib/systemd/system/sshd.service  /home/

测试验证

[root@localhost openssh-8.4p1]# /etc/init.d/sshd restart
Restarting sshd (via systemctl):                           [  OK  ]

#查看端口
[root@localhost openssh-8.4p1]# netstat -ntlp
#22端口正常即可

#可以通过systemctl start/stop/restart 启动/停止/重启sshd服务
#查看版本
[root@localhost openssh-8.4p1]# ssh -V
OpenSSH_8.6p1, OpenSSL 1.1.1f  31 Mar 2020

关闭telnet

[root@172-15-4-5 src]# systemctl disable xinetd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/xinetd.service.
[root@172-15-4-5 src]# systemctl stop xinetd.service
[root@172-15-4-5 src]# systemctl disable telnet.socket
Removed symlink /etc/systemd/system/sockets.target.wants/telnet.socket.
[root@172-15-4-5 src]# systemctl stop telnet.socket

再次使用telnet就不能再登录了。
再次漏扫,漏洞消除!

参考博客:https://blog.csdn.net/lhrm0213/article/details/117565350

posted @ 2023-08-01 10:24  小学程序员  阅读(1070)  评论(0编辑  收藏  举报