已修复openssh 安全漏洞(cve-2023-38408)
前言:
在出现openssh 安全漏洞(cve-2023-38408) 漏洞的时候最简单就是升级openSSH服务到9.+。
本文将会详细介绍如何升级到openSSH9.+,以及升级前,升级过程中,升级后要注意的事项。
本实验的操作系统为: OpenEuler22.04.
升级前准备工作
通过命令查看目前系统的ssh和sshd版本:
[root@localhost ~]# ssh -VOpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Nov 2023
注意:由于ssh是远程连接服务器的功能,在j进行下面操作升级openssh前,请打开多个连接会话使用 top
保持链接,如升级失败,可通过已连接的会话进行回滚操作。
开始升级
1. 安装操作系统依赖包:
yum install -y telnet gcc zlib-devel
2. 下载软件包
openssl下载地址:/source/old/index.html
openssh下载地址:Index of /pub/OpenBSD/OpenSSH/portable/
3. 编译升级
3.1 编译升级openssl-3.5.0-beta1
进入到openssl-3.5.0-beta1tar.gz文件所在的目录,执行编译安装命令:
tar -xzvf openssl-3.5.0-beta1.tar.gzcd openssl-3.5.0-beta1mkdir -p /usr/openssh/openssl-3.5.0-beta1./config --prefix=/usr/openssh/openssl-3.5.0-beta1makemake installll /usr/openssh/openssl-3.5.0-beta1cd ..rm -rf openssl-3.5.0-beta1
编辑/etc/profile配置文件(vi /etc/profile),设置环境变量,在profile文件最后添加如下两行:
export LD_LIBRARY_PATH=/usr/openssh/openssl-3.5.0-beta1/lib:$LD_LIBRARY_PATHexport PATH=/usr/openssh/openssh-9.9p2/bin:/usr/openssh/openssh-9.9p2/sbin:/usr/openssh/openssl-3.5.0-beta1/bin:$PATH
保存配置退出后,然后执行如下命令,确认openssl版本为openssl-3.5.0-beta1:
source /etc/profileopenssl version
3.2 编译升级openssh-9.9p2
进入到openssh-9.9p2.tar.gz文件所在的目录,执行编译安装命令:
tar -xzvf openssh-9.9p2.tar.gzcd openssh-9.9p2mkdir -p /usr/openssh/openssh-9.9p2./configure --prefix=/usr/openssh/openssh-9.9p2 --with-ssl-dir=/usr/openssh/openssl-3.5.0-beta1makemake install
修改配置文件:
vi /usr/openssh/openssh-9.9p2/etc/sshd_config
允许root登录,默认值prohibit-password表示root用户只能通过公私钥的方式登录,不能以密码的方式登录
PermitRootLogin yes
创建sshd服务自启动文件:
vi /usr/lib/systemd/system/sshd9.service
文件内容添加如下内容:
[Unit]Description=OpenSSH server daemonAfter=network.target[Service]Type=simpleEnvironment=LD_LIBRARY_PATH=/usr/openssh/openssl-3.5.0-beta1/libExecStart=/usr/openssh/openssh-9.9p2/sbin/sshd -D -f /usr/openssh/openssh-9.9p2/etc/sshd_configExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failureRestartSec=42s[Install]WantedBy=multi-user.target
停用原sshd服务,并备份相关文件
systemctl stop sshd.servicesystemctl disable sshd.service
备份文件:
mkdir /home/ssh-old-bakmv /etc/ssh /home/ssh-old-bak/mv /usr/sbin/sshd /home/ssh-old-bak/mv /usr/lib/systemd/system/sshd-keygen.service /home/ssh-old-bak/mv /usr/lib/systemd/system/sshd.service /home/ssh-old-bak/mv /usr/lib/systemd/system/sshd@.service /home/ssh-old-bak/mv /usr/lib/systemd/system/sshd.socket /home/ssh-old-bak/
启动新的sshd服务
systemctl daemon-reloadsystemctl start sshd9.servicesystemctl status sshd9.servicesystemctl enable sshd9.service
测试验证
重新连接一个新的窗口来测试新sshd是否可以正常连接,并测试版本号,最后重启服务器测试是否可以重启成功。
[root@10 ~]# ssh -VOpenSSH_9.9p2, OpenSSL 3.5.0 8 Apr 2025
到此你就升级完成了。
如果您之前做过ssh免密钥,那升级完成之后您可能会报如下错误:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:9mtnXA20j09FBL5aPvCwXSPY09a/SeQkMoxU9dNIuAE. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /root/.ssh/known_hosts:9 Host key for 10.8.2.113 has changed and you have requested strict checking. Host key verification failed.
这个问题是主机密钥变化 更新了 OpenSSH 到 9. + 版本后,新的 OpenSSH 可能重新生成了主机密钥,旧的就过期了,我们只需要清理一下旧的密钥,更新一份即可;执行如下命令:
ssh-keygen -R [your_ip]
跳过已有密钥检查:如果你确定需要重新复制公钥,可以使用 -f
选项强制复制,覆盖远程主机上已存在的密钥
ssh-copy-id -f [your_ip]
确认远程授权密钥: 登录到远程主机并检查 ~/.ssh/authorized_keys
文件,以确认你的公钥是否已经存在。如果有误可以手动编辑或删除不正确的条目即可解决。