Centos 8.0 升级 OpenSSH 到 9.3
近日有安全提示:OpenSSH XMSS Key 解析整数溢出漏洞。
XMSS中使用的签名方案是有状态的,这意味着密钥随时间而变化,此过程需要考虑以前保存的“状态”(如果有)。负责处理XMSS保存的“状态”的函数会由于整数溢出漏洞而导致内存破坏。任何可以解析私有XMSS密钥的OpenSSH函数都容易受到攻击。
披露时间:2019-10-09 00:00:00 CVE编号:CVE-2019-16905
修复方案
升级OpenSSH至8.1及以上版本
需确认机器已安装的软件包中不存在低版本openssh组件,如可通过执行命令:rpm -qa | grep openssh
查看组件版本。
准备工作
安装编译所需依赖软件包:
yum install -y wget gcc pam-devel libselinux-devel zlib-devel openssl-devel
下载 OpenSSH 安装包上传至服务器或 wget
直接下载
cd /usr/local/src
wget -O openssh.tar.gz https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz
备份配置文件 一般卸载的时候都会把配置文件以sshd_config.rpmsave
的方式另存一份,但是/etc/pam.d/sshd
这个配置文件并没有另存,所以建议都备份一下。
cp /etc/ssh/sshd_config sshd_config.backup
cp /etc/pam.d/sshd sshd.backup
删除低版本OpenSSH的的rpm包
rpm -e --nodeps `rpm -qa | grep openssh`
安装openssh
解压
tar -zxvf openssh.tar.gz
cd openssh-9.3p1
编译配置
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
编译安装
make && make install
配置
调整文件权限
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
复制配置文件
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
还原配置文件
mv ../sshd.backup /etc/pam.d/sshd
mv ../sshd_config.backup /etc/ssh/sshd_config
添加添加自启服务ssh到开机启动项
chkconfig --add sshd
chkconfig sshd on
重启服务
systemctl restart sshd
验证结果
查看下安装结果:
ssh -V
运行结果
OpenSSH_9.3p1, OpenSSL 1.1.1k FIPS 25 Mar 2021
到此,升级基本完成。安全起见不要关闭SSH窗口,新增一个SSH连接,看看能否正常登录。如果不能登录,可以根据 sshd 的日志进行配置调整。
清理源代码
rm -rf /usr/local/src/openssh*
参考链接:https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/INSTALL
本文基于《CentOS 8 升级 OpenSSH 8.4》进行修改后发布,感谢原作者的分享。