该漏洞是由于OpenSSH服务 (sshd) 中的信号处理程序竞争问题,未经身份验证的攻击者可以利用此漏洞在Linux系统上以root身份执行任意代码。目前该漏洞技术细节已在互联网上公开,该漏洞影响范围较大,建议尽快做好自查及防护。
影响版本: 8.5p1 - 9.7p1
大白话:处于8.5p1 - 9.7p1这个版本的SSH,外部攻击者可以随便草你的主机
更新 OpenSSH 到 9.8p1
查看 OpenSSH 版本,显然本站使用的版本在不受影响范围之内
ssh -V OpenSSH_9.2p1 Debian-2+deb12u3, OpenSSL 3.0.13 30 Jan 2024
因为 Debian 12 已经上了最新的修复包,使用
apt
命令即可,其他各大发型版本估计都更新了,使用相应命令,比如yum
,dnf
更新即可。apt update apt upgrade
- 如果你是老版本,则要手动更新
查看最新版本 OpenSSH 源码
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
因为国内可能访问不畅通,这里做了镜像
https://mirror.serv00.net/OpenBSD/OpenSSH/portable/
这里选用的是
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
然后是解压
tar -xzf openssh-9.8p1.tar.gz cd openssh-9.8p1
接着编译
./configure make
编译好之后安装 OpenSSH
sudo make install
因为是编译安装的,与默认路径不一致,需要修改为运行新安装的。
echo 'export PATH=/usr/local/bin:/usr/local/sbin:$PATH' >> ~/.bashrc
重新连接SSH,这时候的版本号就是新的了。
ssh -v OpenSSH_9.8p1, OpenSSL 3.0.13 30 Jan 2024
但是这只是更换了 ssh 命令,服务也要修改为最新的。修改
/etc/systemd/system/sshd.service
,文件中的ExecStartPre
、ExecStart
和ExecReload
行,将/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
确认修改内容:
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
重新加载服务:
sudo systemctl daemon-reload sudo systemctl restart sshd
列出正在运行的SSH进程(确认是否是 /usr/local/sbin/sshd)
ps -ef | grep sshd
注意:以上操作
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
广告
debian12真香