漏洞简介及影响范围
OpenSSH 远程代码执行漏洞(CVE-2024-6387)是影响 OpenSSH 服务器的一个高危安全漏洞,允许未经身份验证的远程攻击者在受影响的 Linux 系统上以 root 身份执行任意代码。这个严重的安全问题是由信号处理程序中存在的条件竞争问题引起的,具体影响范围包括 OpenSSH < 4.4p1(未更新历史漏洞补丁)和 8.5p1 <= OpenSSH < 9.8p1 的版本。该漏洞的细节和技术利用方法已经在互联网上公开,导致其危害性大大增加。
修复建议
针对这一漏洞,受影响的用户应尽快进行自查并采取相应的防护措施。最直接的修复方法是升级至 OpenSSH 的最新版本(9.8p1 及以上),通过官方的源码编译安装或通过编译RPM包进行更新至最新版本即可。
- 升级前准备
1.1升级须知:
- 提前计划升级时间:
- 提前计划升级时间,确保在服务器维护期间进行操作,以避免影响业务运行。
- 通知相关应用运维负责人和用户,明确升级计划。
- 升级过程可能发生的情况:
- 服务中断:升级期间,SSH 服务可能会中断。确保运维人员知晓,并计划好应对措施。
- 配置变更:新版本的 SSH 可能引入一些配置变更,需明确原配置检查升级后修改对应配置。
- 兼容性问题:某些旧版本的 SSH 客户端可能与新版本的 SSH 服务不兼容。
- 测试:
- 在生产环境操作之前,建议先在测试环境中进行升级测试。确保升级过程顺利,没有意外情况。
- 回滚计划:
- 准备好回滚计划,以防升级失败或出现严重问题,发现有影响到业务应用运行及时进行快照恢复。
1.2安装包准备:
1. 明确需要升级到的版本和对应依赖包版本并下载相应安装包,如open ssh 9.8测试可用版本为openssh9.8p1、zlib1.3、openssl1.1.1w
Openssh离线安装包和依赖包下载地址:
openssh 下载地址
https://www.openssh.com/openbsd.html
zlib下载地址
https://zlib.net/fossils/
openssl下载地址
https://www.openssl.org/source/
- 升级过程参考
Ps:升级前请先确保已申请云主机快照并已完成快照
2.1 部署包准备
#准备部署包放在/opt目录下或自行创建软件包目录
zlib-1.3.tar.gz
openssl-1.1.1w.tar.gz
openssh-9.8p1.tar.gz
2.2 zlib部署
#创建升级临时目录,目录名可自行创建
cd /opt/
tar xzvf zlib-1.3.tar.gz
cd ./zlib-1.3
./configure --prefix=/usr/local/zlib
make
make install
#验证zlib安装是否成功,要包含include、lib、share三个目录。
ls /usr/local/zlib
#新建并编辑配置文件:
vim /etc/ld.so.conf.d/zlib.conf
#加入如下内容后保存退出
/usr/local/zlib/lib
#刷新库文件,加载刚才编译安装的zlib生成的库文件
ldconfig -v
#查看zlib是否部署成功
ldconfig -p|grep zlib
2.3 SSL部署
cd /opt/
tar zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w/
mkdir /usr/local/openssl
./config --prefix=/usr/local/openssl
ls /usr/local/openssl
make && make install
#检查编译安装结果
ls /usr/local/openssl
#配置OpenSSL
#备份
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
#卸载老版本软连接
unlink /usr/lib64/libssl.so
#配置新软连接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
#配置文件
echo ‘/usr/local/openssl/lib’ >> /etc/ld.so.conf
#刷新库文件
ldconfig -v
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
#检查OpenSSL升级是否成功
openssl version
2.4 SSH部署
#备份
cp /etc/ssh/sshd_config sshd_config.backup
cp /etc/pam.d/sshd sshd.backup
#包解压
cd /opt
tar -zxvf openssh-9.8p1.tar.gz
cd openssh-9.8p1/
#编译配置:
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/openssl --without-hardening --without-openssl-header-check
#编译安装:
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
#配置开机自启
chkconfig --add sshd
chkconfig sshd on
#修改配置防止无法登录堡垒机
1、vim /etc/ssh/sshd_config
2、添加:
HostKeyAlgorithms rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519,ssh-rsa
3、重启ssh服务
systemctl restart sshd
#查看下升级结果:
#查看主机客户端版本
ssh -V
#查看主机服务版本
sshd -V