OpenSSH 漏洞补丁更新笔记
- 相关背景
- OpenSSH 8.8 以后版本弃用RSA 以及影响
- centos 更新openssh9.7p1
- 通过rpm包进行安装
- Ubuntu更新openssh-9.5p1
- 前置条件
- 下载的源码包导入服务器后操作
相关背景
客户通过第三方扫漏工具发现服务器centos8和Ubuntu22.04有OpenSSH 相关高危漏洞
扫出以下漏洞:
OpenSSH 输入验证错误漏洞(CVE-2019-16905)
OpenSSH 操作系统命令注入漏洞(CVE-2020-15778)
OpenSSH 安全漏洞(CVE-2021-41617)
OpenSSH 代码问题漏洞(CVE-2023-38408)
OpenSSH 信息泄露漏洞(CVE-2020-14145)
OpenSSH 授权问题漏洞(CVE-2021-36368)
加固建议
若您不需要使用该应用或服务,请关闭该应用或服务即可。
目前厂商已经发布了升级补丁以修复这个安全问题,截止2023年10月17日,建议升级到到当前最新的版本9.5,或后续更高版本。
Linux系统请在以下页面进行下载:
http://www.openssh.com/portable.html
其他版本系统请到厂商主页下载最新版本:
http://www.openssh.com/
OpenSSH 8.8 以后版本弃用RSA 以及影响
https://www.openssh.com/txt/release-8.8
OpenSSH 弃用 RSA 签名主要是因为 RSA 签名算法的安全性在现代密码学标准中已经开始受到一些质疑。
OpenSSH 8.8 版本开始建议用户使用 ECDSA 或 Ed25519 签名算法,而不是 RSA。这样做可以提高系统的安全性,并且通常不会影响到用户的使用。
OpenSSH 8.8 版本中弃用 RSA 签名对安全性的影响是很小的,因为 RSA 签名仍然被广泛支持和使用,而且通常不会在短期内完全淘汰。
可能需要更新配置:如果您的 OpenSSH 配置中明确指定了使用 RSA 签名算法,您可能需要更新配置以使用推荐的 ECDSA 或 Ed25519 签名算法。您可以编辑 OpenSSH 的配置文件(通常是 /etc/ssh/sshd_config),将 HostKeyAlgorithms 和 PubkeyAcceptedKeyTypes 指定为 ECDSA 和 Ed25519,以确保使用这些更现代的签名算法。
兼容性考虑:尽管 OpenSSH 8.8 弃用了 RSA 签名,但由于 RSA 仍然被广泛使用,因此这个变化不太可能导致大规模的兼容性问题。但是,如果您的系统与使用 RSA 签名的旧客户端或服务端有交互,可能需要进行一些调整和测试,以确保兼容性。
centos 更新openssh9.7p1
通过rpm包进行安装
请大佬同事对源码包构建成rpm包后进行安装
文件在文章最上面
#上传rpm包至服务器后解压
unzip x86_64.zip
yum install ./openssh-server-9.7p1-1.el8.x86_64.rpm ./openssh-clients-9.7p1-1.el8.x86_64.rpm ./openssh-9.7p1-1.el8.x86_64.rpm
#备份/etc/ssh
cp -a /etc/ssh /etc/ssh.bak
#删除历史ssh_host相关配置,重启后会自动生成
rm -rf /etc/ssh/ssh_host_*
systemctl enable sshd
systemctl restart sshd
更新完成后,在单开个终端测试登录是否正常
远程工具重新登录可能出现以下提示点OK即可
重启服务器进行验证
如是堡垒机连接,因sshd更新,导致无法远程连接,需要删除堡垒机内服务器资源,重新添加可解决该问题
Ubuntu更新openssh-9.5p1
前置条件
从相关网站下载源码包,我下载的openssh-9.5p1.tar.gz
http://www.openssh.com/portable.html
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
下载的源码包导入服务器后操作
tar -zxvf openssh-9.5p1.tar.gz
cd openssh-9.5p1
预配置,会提示需要pam,不确定不安装pam是否有影响,未测试。
./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-pam --with-ssl-dir=/usr/local
安装pam
apt-get install -y libpam-pwquality
编译安装
make && make install
修改默认配置,避免无法登录服务器
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
备份历史配置文件,并替换
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
修改sshd服务
# modify Type=notify to Type=simple
sed -i "s/Type\=notify/Type\=simple/g" /etc/systemd/system/sshd.service
更新完看到sshd 是disabled
故更新完成后对sshd服务重启,并添加开机自启,以及检查
systemctl daemon-reload
systemctl enable sshd
systemctl restart sshd
systemctl list-unit-files --type=service | grep enabled
查看ssh版本是否更新
ssh -V
单开个终端进行远程连接测试,如异常还可进行调整
重启服务器再次登录验证