导航菜单

OpenSSH 远程代码执行漏洞(CVE-2024-6387)安全风险
该漏洞是由于OpenSSH服务 (sshd) 中的信号处理程序竞争问题,未经身份验证的攻击者可以利用此漏洞在Linux系统上以root身份执行任意代码。目前该漏洞技术细节已在互联网上公开,该漏洞影响范围较大,建议尽快做好自查及防护。

大白话:处于8.5p1 - 9.7p1这个版本的SSH,外部攻击者可以随便草你的主机

更新 OpenSSH 到 9.8p1

  1. 查看 OpenSSH 版本,显然本站使用的版本在不受影响范围之内

    ssh -V
    OpenSSH_9.2p1 Debian-2+deb12u3, OpenSSL 3.0.13 30 Jan 2024

    openssh_shengji_01.png

  2. 因为 Debian 12 已经上了最新的修复包,使用apt命令即可,其他各大发型版本估计都更新了,使用相应命令,比如yumdnf更新即可。

    apt update
    apt upgrade
  3. 如果你是老版本,则要手动更新
  4. 查看最新版本 OpenSSH 源码

    https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
  5. 因为国内可能访问不畅通,这里做了镜像

    https://mirror.serv00.net/OpenBSD/OpenSSH/portable/
  6. 这里选用的是openssh-9.8p1.tar.gz

    wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
    # wget https://mirror.serv00.net/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
  7. 然后是解压

    tar -xzf openssh-9.8p1.tar.gz
    cd openssh-9.8p1
  8. 接着编译

    ./configure
    make
  9. 编译好之后安装 OpenSSH

    sudo make install
  10. 因为是编译安装的,与默认路径不一致,需要修改为运行新安装的。

    echo 'export PATH=/usr/local/bin:/usr/local/sbin:$PATH' >> ~/.bashrc
  11. 重新连接SSH,这时候的版本号就是新的了。

    ssh -v
    OpenSSH_9.8p1, OpenSSL 3.0.13 30 Jan 2024
  12. 但是这只是更换了 ssh 命令,服务也要修改为最新的。修改/etc/systemd/system/sshd.service,文件中的ExecStartPreExecStartExecReload行,将/usr/sbin/sshd改为/usr/local/sbin/sshd

    sudo sed -i 's|ExecStartPre=/usr/sbin/sshd|ExecStartPre=/usr/local/sbin/sshd|; s|ExecStart=/usr/sbin/sshd|ExecStart=/usr/local/sbin/sshd|; s|ExecReload=/usr/sbin/sshd|ExecReload=/usr/local/sbin/sshd|' /lib/systemd/system/ssh.service
  13. 确认修改内容:

    grep -E 'ExecStartPre|ExecStart|ExecReload' /lib/systemd/system/ssh.service
    ExecStartPre=/usr/local/sbin/sshd -t
    ExecStart=/usr/local/sbin/sshd -D $SSHD_OPTS
    ExecReload=/usr/local/sbin/sshd -t
    ExecReload=/bin/kill -HUP $MAINPID

    openssh_shengji_02.png

  14. 重新加载服务:

    sudo systemctl daemon-reload
    sudo systemctl restart sshd
  15. 列出正在运行的SSH进程(确认是否是 /usr/local/sbin/sshd)

    ps -ef | grep sshd
  16. 注意:以上操作ssh的配置文件就变成了/usr/local/etc/sshd_config,需要更新配置文件内容。把新配置文件删掉,创建链接到/etc/ssh/sshd_config,并加载服务

    sudo rm /usr/local/etc/sshd_config
    sudo ln -s /etc/ssh/sshd_config /usr/local/etc/sshd_config
    sudo systemctl daemon-reload
    sudo systemctl restart sshd