检查系统、openssl和openssh的版本信息背景说明:
OpenSSH 远程代码执行漏洞CVE-2024-6387 允许非特权攻击者以root 身份执行任意代码。我们建议升级到OpenSSH 9.8p1 或更高版本。
请阅读漏洞描述
OpenSSH 高危漏洞(CVE-2024-6387)(baidu.com)
要修复此漏洞,OpenSSH 必须升级到9.8。
Ubuntu 软件存储库已更新。
https://ubuntu.com/security/notices/USN-6859-1
Debian 11 12 更新:
https://security-tracker.debian.org/tracker/CVE-2024-6387
CentOS没有相应的补丁可以直接更新。需要自己升级openssh到9.8(注意版本是最新的)。
对于CentOS7 修复,请参阅升级和安装Openssh9.8P。升级过程应小心完成,不要担心过程繁琐。参见知乎升级教程。我写了一篇文章详细介绍了Telnet部分,给大家一些参考和思路。
重要参考资料
CentOS7升级ssh服务(三):安装openssh9.7p1 – 知乎(zhihu.com)
这篇关于知乎的文章很详细,很欣赏作者的努力。
下面是我的练习过程
远程升级OpenSSH的先创建新增账号和安装telnet
在OpenSSH安装过程中,必须删除OpenSSH并进行配置更改,因此如果是远程安装补丁,请务必先安装TelnetServer,通过Telnet进行远程连接,升级完成后再使用Telnet Server进行卸载和调整。 另外,Telnet 默认不允许使用root 帐户进行远程连接。必须创建一个新帐户(如sshuser)用于远程连接(telnet连接后可以通过su root切换到root进行后续升级操作)。
步骤1.添加新的临时账户sshuser(升级后可以删除该账户)
#1 以root用户登录系统。通过运行以下命令创建新用户:例如,用户名是sshuser。
useradd -m -s /bin/bash sshuser
#2 为新用户设置密码
密码舒泽尔
#3 将新用户添加到sudo 组并赋予其超级用户权限。
usermod -aG 车轮刮擦器
步骤2.安装TelnetServer
如果没有管理员权限,请切换到有管理员权限的账户或者在命令前添加sudo。
#1 安装TelnetServer
嗯,把所有东西都清理干净。
创建yum 缓存
yum install -y telnet 服务器
#2 启动服务
systemctl 启动telnet.socket
#3 启动时自动启动
systemctl 启用telnet.socket
#4 Telnet 的默认端口是23。如果想改成其他端口,请查看资料并自行尝试(我按照网上的方法改了两个配置文件,但没有改成功)
#5 使用客户端Telnet连接centOS服务器(Windows 10默认没有安装Telnet客户端,可以查看Windows 10安装Telnet客户端信息)
Telnet远程centOS服务器IP地址(例如telnet 123.124.11.12)
如果连接成功,会提示输入登录账号(root默认不允许Telnet远程登录)。使用您创建的sshuser登录并输入密码即可完成Telnet登录。
#6 如果第5步远程连接失败,防火墙可能阻塞了23端口。请检查您的防火墙状态,打开防火墙中的端口23,然后重试。
#显示防火墙状态
systemctl 状态防火墙
#开放23端口(升级完成后可以屏蔽23端口)
防火墙cmd –zone=public –add-port=23/tcp –permanent
#重新加载防火墙设置
防火墙-cmd –完整重新加载
#查询防火墙23端口状态
防火墙cmd –query-port=23/tcp
返回“yes”表示可以访问远程访问端口23。
重复步骤5,通过telnet远程连接centerOS服务器。如果成功,您可以安全地远程升级您的OpenSSH 版本。 (实践证明,升级过程中仍然可以使用SSH。只有通过SSH连接或重启服务后,SSH可能才会生效。)
直接升级CentOS或者使用远程桌面升级的朋友可以忽略前面的步骤,直接升级。
CentOS7升级ssh服务到9.8p1
准备工作:
请注意,必须升级到openssh9.8p1才能应用漏洞补丁。
下载并上传openssh9.8p1和openssl-1.1.1w
下载地址1:openssh-9.8p1地址
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/https://link.zhihu.com/?target=https%3A//cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
注意:下载openssh-9.8p1.tar.gz 源代码。
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
根据升级后的OpenSSL下载地址2:
发布· openssl/openssl (github.com)https://github.com/openssl/openssl/releases?page=2
OpenSSL 有多个版本。 centerOS7上安装的OpenSSL默认版本是1.02。要安装openssh-9.8p1,您必须升级到OpenSSL1.1.1 或更高版本。
安装了OpenSSL1.1.1W
1、查看centos7、ssh以及openssl的版本信息
# 显示CentOS系统的版本信息
猫/etc/redhat-release
# 查看openssl版本信息
openssl 版本
# 查看openssh的版本信息
ssh-V
您可以使用ssh -V 检查OpenSSH 和OpenSSL 版本。
2、安装依赖
# 安装相关依赖。如果缺少任何东西,请重新安装
yum -y 安装gcc pam-devel zlib-devel openssl-devel net-tools
CentOS由于资源和网络问题,在依赖安装过程中可能会因为资源问题而报“未找到”错误。
需要修改/etc/yum.repos.d/Centos-Base.repo中的Centos-Base.repo资源地址,并运行安装依赖命令yum -y install gcc pam-devel zlib-devel openssl-devel net 有。再次运行-tools,依赖包就安装成功了。
3、安装openssl-1.1.1w版本
openssh9.7p1 需要openssl 版本1.1.1 或更高版本,因此您必须升级并安装openssl。
3.1、解压openssl-1.1.1w压缩包
# 解压openssl-1.1.1w 到/usr/local 目录
tar zxvf /home/test/openssl-1.1.12.tar.gz C /usr/local/
# 解压后查看目标目录
ll /usr/local/| grep openssl | 目录
# 进入openssl-1.1.1w目录
cd /usr/local/openssl-1.1.1w/
3.2、安装openssl前准备
#创建安装目录
mkdir /opt/openssl
# 安装前检查openssl的详细版本信息
openssl 版本
3.3、编译安装openssl-1.1.1w
# 配置编译安装过程。 \’–prefix=\’ 选项配置安装目录
./config –prefix=/opt/openssl
# 构建程序以及必要的指令和依赖项。
制作
# 安装编译好的openssl-1.1.1w
安装
# 注意:上面三步必须没有错误才可以进行下一步。只有三个步骤都没有错误才算安装成功。
在继续下一步之前,上述所有三个步骤必须没有错误。则认为安装成功。
如果出现错误,请重新检查错误,直到不再报告该错误,然后继续下一步。
3.4、更新lib文件
# 查看openssl-1.1.1w所需的函数库
ldd /opt/openssl/bin/openssl
# 将openssl-1.1.1w的库文件路径添加到ld.so.conf中
echo \’/opt/openssl/lib\’ /etc/ld.so.conf
#更新系统函数库库
ldconfig v
# 使用绝对路径显示openssl版本
ldd /opt/openssl/bin/openssl
3.5、更新bin文件
# 检查旧版本的openssl 命令路径
什么打开SSL
# 重命名为openssl.old
mv /bin/openssl /bin/openssl.old #重命名openssl文件
# 使用软连接更新openssl命令
ln -s /opt/openssl/bin/openssl /bin/openssl
# 使用Openssl命令检查版本
openssl 版本
4、编译安装openssh9.8p1
4.1、解压缩包查看INSTALL文件
使用#telnet登录centos7(卸载后也可以通过ssh连接远程操作)
# 卸载openssh rpm 包
for i in $(rpm -qa | grep openssh);do rpm -e $i –nodeps;done
# 将openssh9.8p1包解压到目标目录
tar zxvf /home/test/openssh9.8p1.tar.gz C /usr/local
# 进入openssh9.8p1源码目录
cd /usr/local/openssh-9.8p1/
# 安装前请检查安装文件INSTALL(推荐)
查看更多安装
4.2、编译安装openssh9.7p1
编译前请创建所需目录
mkdir -p /usr/local/openssh
# 配置编译安装过程。 \’–prefix=\’ 设置安装目录。 \’–sysconfdir=\’ 设置文件路径。 \’–with-ssl-dir=\’ 设置openssl 安装路径。
./configure –prefix=/usr/local/openssh –sysconfdir=/etc/ssh –with-pam –with-ssl-dir=/opt/openssl –with-md5-passwords –mandir=/usr/share/man –with-zlib=/usr/local/zlib –without-hardening
# 构建程序以及必要的指令和依赖项。
制作
# 安装编译好的openssh9.8p1
安装
# 注意:上面三步必须没有错误才可以进行下一步。只有三个步骤都没有错误才算安装成功。
在继续下一步之前,上述所有三个步骤必须没有错误。则认为安装成功。
如果出现任何异常错误,请仔细检查步骤并重试,直至一切成功。
4.3、复制并修改启动sshd.init脚本
参见如何修改知乎的sshd.init。
命令“cat -n filename | grep query keywords”在过滤器配置文件中搜索关键字,-n 返回搜索到的行。
# 将sshd.init从源目录复制到/etc/init.d/。
cp /usr/local/openssh-9.8p1/contrib/redhat/sshd.init /etc/init.d/
## 查看并更改SSHD的新路径并更新新的openssh安装路径
猫/etc/init.d/sshd.init grep SSHD |
sed -i \’s/SSHD=\\/usr\\/sbin\\/sshd/SSHD=\\/usr\\/local\\/openssh\\/sbin\\/sshd/g\’ /etc/init.d/sshd.init
猫/etc/init.d/sshd.init grep SSHD |
## 验证并更改ssh-keygen 的新路径并更新新的ssh-keygen 安装路径。
cat -n /etc/init.d/sshd.init grep ssh-keygen | cat -n /etc/init.d/sshd.init grep ssh-keygen |
sed -i \’s#/usr/bin/ssh-keygen -A#/usr/local/openssh/bin/ssh-keygen -A#g\’ /etc/init.d/sshd.init
cat -n /etc/init.d/sshd.init grep ssh-keygen | cat -n /etc/init.d/sshd.init grep ssh-keygen |
方法二:打开两个远程窗口,一个是使用cat -n /etc/init.d/sshd.init | grep xxxx 关键字查找行号,然后查询vi/etc/init 的内容。在里面。直接对需要更改的配置进行更改
4.4、修改配置文件(sshd_config)
# 启用X11转发
echo \’X11转发是\’ /etc/ssh/sshd_config
# 启用密码验证
echo \’密码验证是\’ /etc/ssh/sshd_config
#更改为允许远程访问并更改默认端口(特别重要!将xxxx更改为实际端口)。
sudo echo \’端口xxxx\’ /etc/ssh/sshd_config
sudo echo \’PermitRootLogin 是\’ /etc/ssh/sshd_config
使用#cat -n 检查配置。如果需要修改安装,请更改上面的两个修改命令(访问端口和是否运行root 登录)。
4.5、启动openssh,并设置开机启动
# 复制SSH相关命令
cp -arp /usr/local/openssh/bin/* /usr/bin/
# 启动sshd服务
/etc/init.d/sshd.init
# 显示版本
ssh-V
# 添加开机启动
chmod +x /etc/rc.d/rc.local
echo “/etc/init.d/sshd.init start” /etc/rc.d/rc.local
4.6、测试openssh连接
使用ssh协议连接centos7,查看openssh9.7p1服务
系统重启后,使用ssh协议登录centos7,查看openssh9.7p1是否自动启动,即可登录成功。
5、卸载telnet服务
# 验证openssh升级是否成功且连接正常,然后卸载telnet服务。
yum -y Telnet 删除Telnet 服务器
6. 删除您为Telnet 创建的帐户
userdel -r sshuser
以上修复#CentOS7上OpenSSH高危漏洞的相关内容由网络提供,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93107.html