0


CVE-2024-6387&Open SSH漏洞彻底解决举措(含踩坑内容)

一、漏洞名称

OpenSSH 远程代码执行漏洞(CVE-2024-6387)

二、漏洞概述

Open SSH是基于SSH协议的安全网络通信工具,广泛应用于远程服务器管理、加密文件传输、端口转发、远程控制等多个领域。近日被爆出存在一个远程代码执行漏洞,由于Open SSH服务器端程序存在竞争条件缺陷,未经身份验证的攻击者可利用该漏洞在Linux系统上以root身份远程执行代码,可全面接管系统、安装恶意软件、篡改、删除或窃取系统数据,创建后门等。受影响版本为8.5p1<=version<9.8p1。目前Open SSH官方已发布新版本完成漏洞修复。(更新链接:https://www.openssh.com/releasenotes.html)

三、缓解措施

自行百度,关闭ssh、 允许特定用户访问等

四、修复建议

建议升级OpenSSH至安全版本,彻底解决。

各位老板不要着急、这里有坑,假如服务器Openssh>=1.1.1那么恭喜直接升级Openssh即可。

由于本人服务器版本是OpenSSL 1.0.2k-fips在升级过程中卸载、重装服务经过多次尝试最终等已解决。

踩坑一:

OpenSSL 1.0.2k-fips版本,升级条件Openssh需大于1.1.1,否则升级提示Open SSH版本低

踩坑二:

升级OpenSSL 成功后,openssl verison与 ssh -V 结果下的openssl版本不一致问题,导致升级OpenssH也已失败告终。至此请看正文解决办法,一路到底升级成功。

4.1、查看服务器OpenSSL版本配置
openssl version
[root@localhost ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017
4.2、查看升级服务器OpenSSL版本

ssh -V

[root@localhost ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
4.3、查看服务器版本
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

给大家看下云服务器版本基于CentOS 7.6版本升级

4.4、最终目标

先试试先版本,由于升级成功了下次在升级至OpenSSH 9.8p1

OpenSSH 7.4p1 -> OpenSSH 9.3p1

OpenSSL 1.0.2k-fips -> OpenSSL 3.1.2
4.4、版本直通车链接
OpenSSL官网地址:https://www.openssl.org/

OpenSSH官网地址:https://www.openssh.com/
4.5、小心驶得万年船

telnet安装以防万一具体安装请看上一篇文章、由于本人已尝试升级顺利暂未发现升级失败现象,各位看官可大胆尝试。无误后升级生产环境

4.6、自我安慰一下

数据备份一下,虽然升级成功了,没有导致服务器链接不上的可能。

mv /usr/bin/openssl /usr/bin/openssl.old
mv /etc/ssh /etc/ssh.old
mkdir /usr/bin/bak
cp -arpf /usr/bin/{cp,sftp,ssh,ssh-add,ssh-agent,ssh-keygen,ssh-keyscan} /usr/bin/bak/
cp -arpf /usr/sbin/sshd /usr/sbin/sshd.bak
cp -arpf /etc/sysconfig/sshd /etc/sysconfig/sshd.bak
cp -arpf /etc/pam.d/sshd /etc/pam.d/sshd.bak

五、奏是个干升级openssl

5.1、下载OpenSSL、OpenSSH、zlib
创建download文件夹(根据自己喜好)
wget https://www.openssl.org/source/openssl-3.1.2.tar.gz --no-check-certificate
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz
wget http://www.zlib.net/zlib-1.3.1.tar.gz

[root@yfvyy5b2on3knb8q ~]# cd download/

[root@yfvyy5b2on3knb8q download]# ll -a
total 18528
drwxr-xr-x   5 root root      4096 Jul  9 18:24 .
dr-xr-x---.  5 root root      4096 Jul 10 08:06 ..
drwxr-xr-x   7 1000  1000    20480 Jul  9 18:41 openssh-9.3p1
-rw-r--r--   1 root root   1856839 Mar 16  2023 openssh-9.3p1.tar.gz
drwxrwxr-x  24 root root      4096 Jul  9 18:33 openssl-3.1.2
-rw-r--r--   1 root root  15560427 Jan 22 19:24 openssl-3.1.2.tar.gz
drwxr-xr-x  14  501 games     4096 Jul  9 18:25 zlib-1.3.1
-rw-r--r--   1 root root   1512791 Jan 23 03:53 zlib-1.3.1.tar.gz
5.2、解压
tar xvf openssh-9.3p1.tar.gz
tar xvf openssl-3.1.2.tar.gz
tar xvf zlib-1.3.1.tar.gz
5.3、安装依赖
yum install gcc
yum install gcc-c++ 
yum install perl 
yum install perl-IPC-Cmd
yum install pam 
yum install pam-devel
5.4 、安装升级zlib
cd zlib-1.3.1
./configure --prefix=/usr/local/zlib-1.3.1 
make  && make install
5.5、安装升级openssl
cd openssl-3.1.2
./config --prefix=/usr/local/openssl-3.1.2 make && make install 
echo '/usr/local/openssl-3.1.2/lib64' >> /etc/ld.so.conf 
ln -s /usr/local/openssl-3.1.2/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl-3.1.2/include/openssl /usr/include/openssl 
ll -s /usr/bin/openssl 
ll -s /usr/include/openssl
ln -s /usr/local/openssl-3.1.2/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/openssl-3.1.2/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
ldconfig -v 

5.6、查看版本

openssl version
[root@yfvyy5b2on3knb8q download]# openssl version
OpenSSL 3.1.2 1 Aug 2023 (Library: OpenSSL 3.1.2 1 Aug 2023)

六、升级openssh

cd openssh-9.3p1
6.1、编译、验证测试环境
./configure --prefix=/usr/local/openssh-9.3p1 --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl-3.1.2 --with-zlib=/usr/local/zlib-1.3.1 --without-hardening
make && make install
6.2、安装
make && make install
6.3、数据备份
cp -arpf /usr/local/openssh-9.3p1/bin/scp /usr/bin/
cp -arpf /usr/local/openssh-9.3p1/bin/sftp /usr/bin/
cp -arpf /usr/local/openssh-9.3p1/bin/ssh /usr/bin/
cp -arpf /usr/local/openssh-9.3p1/bin/ssh-add /usr/bin/
cp -arpf /usr/local/openssh-9.3p1/bin/ssh-agent /usr/bin/
cp -arpf /usr/local/openssh-9.3p1/bin/ssh-keygen /usr/bin/
cp -arpf /usr/local/openssh-9.3p1/bin/ssh-keyscan /usr/bin/
cp -arpf /usr/local/openssh-9.3p1/sbin/sshd /usr/sbin/sshd
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak
  1. ./configure --prefix=/usr/local/openssh-9.3p1 --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl-3.1.2 --with-zlib=/usr/local/zlib-1.3.1 --without-hardening- ./configure 脚本是大多数开源软件项目(特别是使用GNU Autotools构建的项目)提供的配置脚本,用于准备软件的编译环境。它会检查系统环境,确定哪些功能可以被支持,并根据用户提供的选项(通过命令行参数)来定制编译过程。- --prefix=/usr/local/openssh-9.3p1 指定了软件安装后的根目录。在这个例子中,所有的安装文件(可执行文件、库文件、配置文件等)都会被安装在/usr/local/openssh-9.3p1目录下。这有助于将不同版本的软件安装到不同的目录,以避免冲突。- --sysconfdir=/etc/ssh 指定了配置文件(如sshd_config)的存放目录。即使软件的主体安装在--prefix指定的目录下,配置文件仍可以存放在系统的标准配置目录中,方便管理和维护。- --with-pam 启用了PAM(Pluggable Authentication Modules)支持。PAM提供了一种灵活的方式来认证用户,允许管理员通过模块来配置不同的认证机制。- --with-ssl-dir=/usr/local/openssl-3.1.2 指定了OpenSSL的安装目录。OpenSSL是一个强大的安全套接字层(SSL)和传输层安全性(TLS)协议的实现,OpenSSH依赖它来提供加密功能。- --with-zlib=/usr/local/zlib-1.3.1 指定了zlib的安装目录。zlib是一个广泛使用的数据压缩库,OpenSSH使用它来提高数据传输的效率。- --without-hardening 禁用了编译时的强化选项(如果有的话)。这些强化选项通常用于提高软件的安全性,但在某些情况下,由于兼容性问题或特定的部署需求,可能会选择禁用它们。
  2. make && make install- make 命令根据Makefile(由./configure脚本生成)中的指令编译软件。它会自动处理编译过程中所需的依赖关系和编译顺序。- && 是一个Shell命令操作符,用于连接两个命令,仅当第一个命令成功执行(即返回状态为0)时,才会执行第二个命令。- make install 命令将编译好的软件安装到前面./configure脚本指定的位置(在这个例子中是/usr/local/openssh-9.3p1)。这包括可执行文件、库文件、配置文件等。
6.4、启动sshd
systemctl daemon-reload
systemctl enable sshd.socket
sshd -t
systemctl restart sshd
6.5、查看版本
[root@yfvyy5b2on3knb8q openssh-9.3p1]# openssl version
OpenSSL 3.1.2 1 Aug 2023 (Library: OpenSSL 3.1.2 1 Aug 2023)
[root@yfvyy5b2on3knb8q openssh-9.3p1]# ssh -V
OpenSSH_9.3p1, OpenSSL 3.1.2 1 Aug 2023
[root@yfvyy5b2on3knb8q openssh-9.3p1]# uname -a
Linux yfvyy5b2on3knb8q 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@yfvyy5b2on3knb8q openssh-9.3p1]#

最后不要着急,由于sshd发生了变化,需要特别注意,需要更改配置

vim  /etc/ssh/sshd_config
 Port 22

 PermitRootLogin yes

Port 22 
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
6.6、无误后关闭telnet服务,没有安装telnet
systemctl stop telnet.socket
systemctl disable telnet.socket
systemctl stop xinetd
systemctl disable xinetd

openssl版本高于1.1.1直接升级openssh即可!

根据步骤6执行替换高版本即可!

标签: 安全 网络

本文转载自: https://blog.csdn.net/weixin_43372364/article/details/140314046
版权归原作者 securitor 所有, 如有侵权,请联系我们删除。

“CVE-2024-6387&Open SSH漏洞彻底解决举措(含踩坑内容)”的评论:

还没有评论