解决 openSSH 漏洞实验

  1. 漏洞验证与影响评估

查看当前 OpenSSH 版本

ssh -V

检查系统发行版

cat /etc/os-release | grep -i “openeuler”
• 确认系统版本是否在受影响范围(8.5p1 <= OpenSSH < 9.8p1)
• 梳理暴露在公网的 SSH 服务列表(netstat -tulnp | grep :22)


2. 官方补丁升级(推荐方案)
2.1 通过 openEuler 官方源升级# 更新系统仓库元数据
sudo dnf clean all && sudo dnf makecache

查看可升级的 openssh 包

sudo dnf list updates openssh*

执行安全更新(自动升级到社区已验证的安全版本)

sudo dnf update openssh-server openssh-clients openssh-askpass


2.2 手动编译安装(适用于定制化环境)

下载 OpenSSH 9.8p1 源码包

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz

验证数字签名

gpg --verify openssh-9.8p1.tar.gz.sig

编译安装(保留原有配置文件)

./configure --prefix=/usr --sysconfdir=/etc/ssh
make && sudo make install

解压源码包(必须解压到独立目录)

tar -zxvf openssh-9.8p1.tar.gz
cd openssh-9.8p1 # 关键步骤:进入解压后的目录

此时再执行 configure

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssldir=/usr/lib64/openssl


3. 临时缓解措施(无法立即升级时)
3.1 配置加固

修改/etc/ssh/sshd_config

echo “UseLogin no” | sudo tee -a /etc/ssh/sshd_config

限制并发会话(需 systemd 支持)

sudo sed -i ‘s/^#MaxSessions.*/MaxSessions 2/’ /etc/ssh/sshd_config

禁用非关键功能

sudo sshd -T | grep -E “(gssapiauth|pam|kerberos)” # 识别非必要模块


3.2 网络层防护

使用 firewalld 限制 SSH 源 IP

sudo firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source
address=“192.168.1.0/24” service name=“ssh” accept’

启用 TCP Wrapper 双重防护

echo “sshd : ALL EXCEPT 10.0.0.0/8” | sudo tee -a /etc/hosts.deny


4. 漏洞修复验证

检查服务状态

systemctl status sshd --no-pager -l

版本确认

/usr/sbin/sshd -V | grep -i “openssh”

模拟攻击检测(使用社区 PoC 工具)

python3 sshd_exploit_check.py --target 127.0.0.1


5. 深度安全加固
5.1 增强型防护(结合 openEuler 特性)

启用 SecComp 沙箱

sudo grep -q “UsePAM yes” /etc/ssh/sshd_config || echo “UsePAM yes” | sudo tee
-a /etc/ssh/sshd_config

应用 SELinux 策略增强

sudo semanage port -a -t ssh_port_t -p tcp 22

内核级防护(需要 kernel 5.10+)

sudo sysctl -w kernel.kptr_restrict=2


5.2 持续监控方案

部署 auditd 监控 SSH 进程

sudo auditctl -w /usr/sbin/sshd -p warx -k sshd_monitor

分析 SSH 暴力破解日志

sudo ausearch -k sshd_monitor | aureport -i -f


6. 应急响应预案

  1. 服务回滚:预先备份旧版 RPM 包(sudo rpm -qa --root=/backup openssh*)
  2. 取证分析:使用 maldump 工具采集 SSH 进程内存快照
  3. 横向隔离:通过 CNAPP 平台标记受影响实例并限制网络策略

技术要点说明

  1. 漏洞原理:该漏洞源于 sshd 的 SIGALRM 信号处理函数未正确处理异步竞争条件,攻
    击者可通过快速连续发送特定数据包触发内存破坏。
  2. openEuler 特性利用:
    • 使用增强版 Linux 内核(CVE-2024-XXXXX 补丁已合并至 openEuler 5.10.0-
    60.36.0.59 内核)
    • 通过 iSula 容器化 SSH 服务实现进程级隔离
  3. 国密算法替代方案:对于有合规要求的场景,可启用商密 SSH:
    sudo sshd -o HostKeyAlgorithms=+ecdsa-sha2-nistp256 -o KexAlgorithms=+ecdh-sha2-
    nistp256
    image
1 个赞