CVE-2024-6387对OpenSSH的漏洞解决方案与防护措施

修补方案

1.升级 OpenSSH 到最新版本

要有效解决此漏洞,请升级到最新的 OpenSSH 版本,其中包括必要的修复程序。保持 OpenSSH 安装最新对于安全和防范已知漏洞至关重要。官方已发布最新版本修复该漏洞,请受影响客户将Openssh更新到安全版本:OpenSSH > 9.8p1。

一键升级脚本:

bash 复制代码
#!/bin/bash

setenforce 0
# 安装依赖
yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel

cd /opt/oneopenssh
# 下载并解压 OpenSSH 包
tar zxvfp openssh-9.8p1.tar.gz 
cd openssh-9.8p1

# 配置、编译并安装 OpenSSH
./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr
make && make install

# 配置 SSH
echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config
echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config

# 备份并替换系统默认的 SSH 配置和二进制文件
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
mv /usr/bin/ssh /usr/bin/ssh.bak
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
mv /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak
cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub

# 修改 systemd 配置并重启 SSH 服务
sed -i "s/Type\=notify/Type\=simple/g" /usr/lib/systemd/system/sshd.service
systemctl daemon-reload && systemctl restart sshd

# 验证是否升级成功
ssh -V

2.实施临时解决方法

如果无法立即升级,您可以通过在 OpenSSH 配置文件中将 LoginGraceTime 参数设置为 0 来降低风险。这样可以防止未经身份验证的会话保持打开状态并被利用。但是,如果所有连接插槽都被占用,此设置可能会导致拒绝服务。

bash 复制代码
#!/bin/bash

# 检查是否具有root权限
if [ "$(id -u)" -ne 0 ]; then
    echo "此脚本需要root权限,请使用sudo或以root用户运行。"
    exit 1
fi

# 配置文件路径
SSHD_CONFIG="/etc/ssh/sshd_config"

# 备份当前配置文件
cp "$SSHD_CONFIG" "${SSHD_CONFIG}.bak"

# 更新LoginGraceTime参数
if grep -q "^LoginGraceTime" "$SSHD_CONFIG"; then
    sed -i "s/^LoginGraceTime.*/LoginGraceTime 0/" "$SSHD_CONFIG"
else
    echo "LoginGraceTime 0" >> "$SSHD_CONFIG"
fi

# 重启SSH服务
systemctl restart sshd

# 验证是否成功
if systemctl status sshd | grep -q "active (running)"; then
    echo "SSH服务已成功重启,并且LoginGraceTime参数已设置为0。"
else
    echo "SSH服务重启失败,请检查配置文件和服务状态。"
fi

3.通过使用seccomp(安全计算模式)

添加额外的安全层,可以进一步减轻风险。seccomp限制了sshd进程可以执行的系统调用,从而限制了攻击面并减少了利用不安全函数(如syslog())的可能性。实现seccomp确保即使触发了漏洞,攻击者执行任意代码的能力也会显著受限。通过遵循这些缓解策略,您可以保护系统免受此漏洞的影响,并增强OpenSSH配置的整体安全性。

结论

CVE-2024-6387(又名 RegreSSHion)是基于 glibc 的 Linux 系统上 OpenSSH 服务器 (sshd) 中的信号处理程序争用条件漏洞。此漏洞的严重等级为"高"(CVSS 8.1),并可能导致具有 root 权限的未经身份验证的远程代码执行 (RCE)。

Reference:

1\]CVE-2024-6387: https://nvd.nist.gov/vuln/detail/CVE-2024-6387

相关推荐
问简17 分钟前
ubuntu24 主题经验
ubuntu
左手厨刀右手茼蒿18 分钟前
Linux 内核中的块设备驱动:从原理到实践
linux·嵌入式·系统内核
一个天蝎座 白勺 程序猿19 分钟前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
杨云龙UP20 分钟前
从0到1快速学会Linux操作系统(基础),这一篇就够了!
linux·运维·服务器·学习·ubuntu·centos·ssh
HXQ_晴天22 分钟前
Ubuntu 设置中文输入法
linux·运维·ubuntu
Dovis(誓平步青云)23 分钟前
《Linux 信号入门:搞懂 “进程通信的紧急电话” 到底怎么用(初篇)》
linux·运维·服务器
左手厨刀右手茼蒿24 分钟前
Linux 内核中的模块机制:从加载到卸载
linux·嵌入式·系统内核
0vvv034 分钟前
删除wsl环境下的Ubuntu系统
linux·运维·ubuntu
@土豆38 分钟前
Ubuntu 22.04 运行 Filebeat 7.11.2 崩溃问题分析及解决文档
linux·数据库·ubuntu
C++ 老炮儿的技术栈1 小时前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt