背景

OpenSSH 安全漏洞

漏洞详细信息

OpenSSH 安全漏洞(CVE-2023-38408)

详细描述

OpenSSH(OpenBSD Secure Shell)是加拿大OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。
OpenSSH 9.3p2之前版本存在安全漏洞,该漏洞源于ssh-agent的PKCS11功能存在安全问题。攻击者可利用该漏洞执行远程代码。

解决办法

厂商补丁:
目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
https://github.com/openbsd/src/commit/7bc29a9d5cd697290aa056e94ecee6253d3425f8
信息 描述
威胁分值 9.8
危险插件否
发现日期 2023-07-19
CVE编号 CVE-2023-38408
CNNVD编号 CNNVD-202307-1721
CNCVE编号 CNCVE-202338408

OpenSSH 安全漏洞(CVE-2023-51767)

详细描述

OpenSSH(OpenBSD Secure Shell)是加拿大OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。
​
OpenSSH 9.6及之前版本存在安全漏洞,该漏洞源于当使用常见类型的DRAM时,mm_answer_authpassword中已验证的整数值不能抵抗单个比特的翻转,导致攻击者可以绕过身份验证。

解决办法

厂商补丁:
目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
https://www.openssh.com/
信息 描述
威胁分值 7
危险插件否
发现日期 2023-12-24
CVE编号 CVE-2023-51767
CNNVD编号 CNNVD-202312-2216
CNCVE编号 CNCVE-202351767

OpenSSH 竞争条件问题漏洞(CVE-2024-6387)

详细描述

OpenSSH(OpenBSD Secure Shell)是加拿大OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。
​
由于默认配置下的OpenSSH Server (sshd)中存在信号处理程序竞争条件问题,如果客户端未在LoginGraceTime 秒内(默认情况下为 120 秒,旧版 OpenSSH 中为 600 秒)进行身份验证,则 sshd 的 SIGALRM 处理程序将被异步调用,该信号处理程序会调用各种非async-signal-safe的函数(例如syslog()),未经身份验证的攻击者可以利用此漏洞在基于 glibc 的Linux系统上以root身份执行任意代码。

解决办法

厂商补丁:
目前官方发布新版本与安全补丁修复此漏洞,请受影响的用户尽快安装更新进行防护,下载链接:https://www.openssh.com/releasenotes.html
补丁链接:https://github.com/openssh/openssh-portable/commit/81c1099d22b81ebfd20a334ce986c4f753b0db29
信息 描述
威胁分值 8.1
危险插件否
发现日期 2024-06-27
CVE编号 CVE-2024-6387
CNNVD编号 CNNVD-202407-017
CNCVE编号 CNCVE-20246387
CNVD编号 CNVD-2024-29805

升级openssl

要升级 SSH 的前提得升级openssl

版本信息:openssl-1.1.1w.tar.gz

升级前准备

查看之前 openssl 版本

openssl version

PS: 通过上图可看出1.1.1f版本比较老,需要升级到1.1.1w版本

上传压缩包

openssl-1.1.1w.tar.gz 压缩包上传到服务器的 /root 目录下。(无强制要求)

解压并进入目录

使用命令解压缩

tar xf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w

配置安装路径

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

编译安装

make -j 10 && make install

PS: -j 10 表示用10线程编译

更新版本

现在如果通过命令来看openssl的话,还是之前 1.1.1f 版本,因为还没有更新连接导致。

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

更新动态库

export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH

PS:此时加载的动态库是即时的,可以设置成永久生效的,需要将此命令加入到 /etc/profile

查看版本

此时版本就变成最新版本了

升级openssh

版本信息:openssh-9.9p1.tar.gz

升级前准备

查看之前 openssl 版本

ssh -V

PS: 通过上图可看出ssh版本是8.2p1

上传压缩包

openssh-9.9p1.tar.gz 压缩包上传到服务器的 /root 目录下。(无强制要求)

解压并进入目录

使用命令解压缩

tar xf openssh-9.9p1.tar.gz
cd openssh-9.9p1

配置安装路径

./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib

编译安装

make -j 10 && make install

PS: -j 10 表示用10线程编译

设置开机启动

cp /root/openssh-9.9p1/contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on

更新版本

cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd

cp /usr/local/openssh/bin/* /usr/bin/

重启sshd

systemctl restart sshd

PS: 如果是centos系统,会报找不到共享库

需要以下操作

cp /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib/
cp /usr/local/openssl/lib/libcrypto.so.1.1 /usr/local/lib/
ln -s /usr/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

然后更新动态库

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

PS:此时加载的动态库是即时的,可以设置成永久生效的,需要将此命令加入到 /etc/profile

注意

centos还有个坑就是需要使用最新sshd配置文件

最新配置文件需要修改两个地方

vi /usr/local/openssh/etl/sshd_config
​
32 #PermitRootLogin prohibit-password #默认为禁⽌登录
33 PermitRootLogin yes #改为允许登录
​
57 #PasswordAuthentication yes
58 PasswordAuthentication yes #打开密码认证,其实默认就是允许通过密码认证登录

然后覆盖之前sshd配置文件并重启

cp /usr/local/openssh/etl/sshd_config /etc/ssh/
systemctl restart sshd

查看版本

此时版本就变成最新版本了

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐