记一次修复漏洞(OpenSSH 安全漏洞(CVE-2023-28531))CentOS升级openssh

该文提供了在Linux系统上查看openssl和openssh版本,安装启用telnet服务,配置防火墙,以及升级到openssl3.0.7和openssh9.3p1的详细步骤。包括了处理升级过程中可能遇到的错误和安全注意事项,如允许root远程登录,调整防火墙规则,并在完成升级后关闭telnet服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.查看当前openssl和openssh版本

openssl version -a
ssh -V


2.安装并启用telnet服务(防止升级过程无法连接机器)

yum -y install telnet-server xinetd


设置开机自启

systemctl enable xinetd.service
systemctl enable telnet.socket


启动服务

systemctl start telnet.socket
systemctl start xinetd

检查服务是否开启:

systemctl status telnet.socket
systemctl status xinetd

开启root用户在telnet登陆:
 

mv /etc/securetty /etc/securetty.bak


3.配置防火墙(关闭防火墙可不配置)
法一:直接对外开发23端口(高风险)

 #--permanent 为永久开启,不加此参数重启防火墙后规则不保存

firewall-cmd --add-port=23/tcp --permanent 

#重启防火墙  

firewall-cmd --reload 

法二:指定IP开放

firewall-cmd  --permanent --add-rich-rule='rule family=ipv4 source address=10.66.9.1 port protocol=tcp port=23 accept'
firewall-cmd --reload



4.允许root远程登录
修改/etc/securetty文件,在末尾添加

#不一定就是这个,有可能是pts/0或者pts/1,其他可查log
pts/4
5.重启telnet服务和守护进程

systemctl restart telnet.socket
systemctl restart xinetd.service


6.测试通过telnet登录服务器

windows打开cmd,输入telnet ip,进行测试
7.升级openssl(3.0.7)
#下载、解压安装包

wget http://www.openssl.org/source/old/3.0/openssl-3.0.7.tar.gz --no-check-certificate
tar -zxvf openssl-3.0.7.tar.gz
cd openssl-3.0.7

#安装依赖

yum install -y gcc gcc-c++ glibc make automake autoconf pam pam-devel zlib zlib-devel


#编译预配置

./config shared --prefix=/usr/local/openssl

#编译安装

make && make install


###老版本可备份也可不备份
#备份老版本openssl

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

#软连接刚编译好的新版本openssl

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

#配置库文件路径

#注意检查左边的路径下确有.so文件

echo '/usr/local/openssl/lib64' > /etc/ld.so.conf.d/openssl-x86_64.conf


#使配置生效

ldconfig -v


8.升级openssh至9.3
#下载、解压安装包

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz
tar -zxvf openssh-9.3p1.tar.gz


#更改用户组和所有者

chown -R root.root ./openssh-9.3p1

#停止当前ssh服务,停止前确保telnet可连接

systemctl stop sshd


#删除老配置

rm -rf /etc/ssh/*

#卸载已安装的openssh相关软件包

rpm -e `rpm -qa | grep openssh` --nodeps

#编译预配置

cd openssh-9.3p1
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-zlib --with-ssl-dir=/usr/local/openssl/include/openssl --with-md5-passwords --with-pam

#编译安装

make && make install

#检查并删除老版本启动脚本

ls /usr/lib/systemd/system/ssh*
rm -f /usr/lib/systemd/system/ssh*

#建立软连接

ln -s /usr/local/openssh/sbin/sshd /usr/sbin/
ln -s /usr/local/openssh/bin/* /usr/bin/    

#重新加载系统管理守护进程(systemd) 的配置文件

systemctl daemon-reload

#启动并设置开机自启动

systemctl start sshd && systemctl enable sshd


#允许root远程登录

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config


#重启ssh服务

systemctl restart sshd


#查看openssh版本,验证是否升级成功

ssh -V

#关闭telnet服务,先测试ssh是否可连接

systemctl stop telnet.socket
systemctl disable telnet.socket

#删除防火墙放行端口

firewall-cmd --remove-port=23/tcp --permanent
firewall-cmd --reload

9.编译安装openssh---(报错集合)
如果报错:

configure: error: *** zlib.h missing - please install first or check config.log ***
需要安装zlib-devel


[root@bo-gon openssh-9.3p1]# yum install -y zlib-devel

如果报错:
configure: error: *** OpenSSL headers missing - please install first or check config.log ***
configure: error: *** working libcrypto not found, check config.log
需要安装openssl-devel包

[root@bo-gon openssh-9.3p1]# yum -y install openssl-devel

如果报错:
checking whether OpenSSL's headers match the library... no
configure: error: Your OpenSSL headers do not match your
        library. Check config.log for details.
        If you are sure your installation is consistent, you can disable the check
        by running "./configure --without-openssl-header-check".
        Also see contrib/findssl.sh for help identifying header/library mismatches.

添加`--without-openssl-header-check`参数继续编译

 ./configure --prefix=/usr --sysconfdir=/etc/ssh  --without-openssl-header-check

 解决完报错后重新执行

./configure --prefix=/usr --sysconfdir=/etc/ssh


 完成后执行

make && makeinstall

<think>嗯,用户想了解OpenSSHCVE-2023-38408漏洞详情和修复方法。首先,我得查一下这个漏洞的具体信息。根据提供的引用,引用[1]提到这是一个代码问题漏洞,需要升级到最新版本,并且在sshd_config中添加HostKeyAlgorithms。用户可能在升级过程中遇到了问题,比如客户端连接时报错“no hostkey alg”,所以需要确认修复步骤是否正确。 接下来,需要详细说明漏洞的影响。这个漏洞可能允许攻击者通过特定的主机密钥算法绕过安全验证,导致中间人攻击。关键点在于支持的算法列表不完善,导致客户端无法找到有效的主机密钥。修复方法包括升级OpenSSH修复版本,并配置HostKeyAlgorithms参数。需要确保用户正确安装新版本,并修改配置文件,然后重启服务。 可能用户遇到的常见问题包括依赖项冲突或配置文件错误,需要提醒他们检查安装步骤和配置语法。此外,生成相关问题时,应该考虑用户可能还想知道如何验证修复是否成功,或者是否有其他相关漏洞需要处理,比如CVE-2023-51384和51385,引用[2]提到了这些,可能需要一并说明。</think>### OpenSSH CVE-2023-38408 漏洞详情及修复方案 #### 漏洞描述 CVE-2023-38408 是 OpenSSH 中存在的一个代码逻辑缺陷,主要影响客户端与服务器之间的密钥交换过程。当客户端尝试连接未明确配置支持的密钥算法时,可能触发`no hostkey alg`错误[^1]。此漏洞可能被攻击者利用,通过中间人攻击(MitM)绕过安全验证,导致未授权的访问或数据泄露。 #### 漏洞影响范围 - **受影响版本**:OpenSSH 8.9 及更早版本 - **触发条件**:服务器未正确配置支持的密钥算法(如缺少`ssh-rsa`等),且客户端请求的算法与服务器配置不匹配。 --- #### 修复方案 1. **升级 OpenSSH 至安全版本** 通过官方渠道升级修复版本(如 OpenSSH 9.6p1 或更高),以下是 CentOS 7 的升级示例: ```bash # 卸载旧版本(注意依赖处理) rpm -e openssh-clients --nodeps rpm -e openssh-server --nodeps rpm -e openssh-9.4p1 --nodeps # 安装新版本 rpm -ivh openssh-9.6p1-1.el7.x86_64.rpm \ openssh-server-9.6p1-1.el7.x86_64.rpm \ openssh-clients-9.6p1-1.el7.x86_64.rpm # 验证版本 ssh -V ``` 引用[2]中提供了类似的操作步骤。 2. **配置`sshd_config`文件** 在`/etc/ssh/sshd_config`中明确指定支持的密钥算法: ```bash HostKeyAlgorithms ssh-rsa,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521 ``` 保存后重启服务: ```bash systemctl restart sshd ``` 3. **验证修复** 通过客户端连接测试是否消除`no hostkey alg`错误: ```bash ssh -vvv user@server_ip ``` --- #### 注意事项 - **依赖冲突**:升级时若出现依赖问题,需使用`--nodeps`强制卸载旧包(需谨慎操作)。 - **兼容性**:`ssh-rsa`算法因安全性问题逐步淘汰,建议优先使用`ed25519`或`ecdsa`[^1]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值