CVE-2023-38408 OpenSSH 代码问题漏洞修复 - 升级openssl和openssh
※ 重要说明:
1、升级后会导致无法用ssh远程登录,提示"Permission denied, please try again."
2、解决方案请查看本章节【三、解决升级后无法用ssh远程登录】
目录
- [CVE-2023-38408 OpenSSH 代码问题漏洞修复 - 升级openssl和openssh](#CVE-2023-38408 OpenSSH 代码问题漏洞修复 - 升级openssl和openssh)
- 一、漏洞说明
- 二、解决方案
-
- 1、安装zlib
- 2、安装openssl
-
- 2.1、下载openssl源码
- 2.2、上传并解压
- 2.3、编译源码并安装
- [2.4、更新系统的 OpenSSL](#2.4、更新系统的 OpenSSL)
- 3、升级openssh
- 三、解决升级后无法用ssh远程登录
一、漏洞说明
1、CVE-2023-38408漏洞
CVE-2023-38408 漏洞是OpenSSH 代码问题漏洞。
OpenSSH(OpenBSD Secure Shell)是加拿大OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击
。** OpenSSH 9.3p2**之前版本存在安全漏洞,该漏洞源于ssh-agent的PKCS11功能存在安全问题。
攻击者可利用该漏洞执行远程代码。
序号 | 应用项 | 说明 |
---|---|---|
1 | 系统 | CentOS Linux release 7.9.2009 (Core) |
2 | openssl | openssl-1.0.2k |
3 | openssh | openssh_7.4p1 |
当前系统openssh版本
二、解决方案
解决方案是将openssl升级到v1.1.1;将openssh升级到openssh-9.3p2
序号 | 应用项 | 说明 |
---|---|---|
1 | zlib | zlib-1.2.13 |
2 | openssl | openssl-1.1.1u |
3 | openssh | openssh-9.3p2 |
1、安装zlib
※ 说明:
- 如果编译openssl源码或openssh源码时提示 fatal error: zlib.h: No such file or directory ,则需要重新用源码编译安装zlib. 否则可以直接进入第2步 【2、安装openssl】
1.1、下载zlib源码
shell
wget http://www.zlib.net/zlib-1.2.13.tar.gz
1.2、上传并解压
shell
tar -xzvf ./zlib-1.2.13.tar.gz
1.3、编译源码并安装
shell
cd zlib-1.2.13/
./configure --shared
make
make install
cp zutil.h /usr/local/include
cp zutil.c /usr/local/include
2、安装openssl
2.1、下载openssl源码
shell
wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz
2.2、上传并解压
shell
tar -zxvf openssl-1.1.1u.tar.gz
2.3、编译源码并安装
shell
cd openssl-1.1.1u
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make
make install
2.4、更新系统的 OpenSSL
shell
# 更新系统的 OpenSSL 链接,首先备份旧版本的 openssl 可执行文件
mv /usr/bin/openssl /usr/bin/openssl.old
# 创建新的符号链接:
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# 更新系统库链接
echo "/usr/local/openssl/lib" | sudo tee -a /etc/ld.so.conf.d/openssl-1.1.1k.conf
sudo ldconfig
# 验证系统openssl版本
openssl version
3、升级openssh
3.1、下载openssh源码
shell
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2.tar.gz
# 备份
mv /etc/ssh /etc/ssh@20240327
3.2、上传并解压
shell
tar -zxvf openssh-9.3p2.tar.gz
3.3、编译源码并安装
shell
cd openssh-9.3p2/
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/lib64/ --with-zlib --with-ssl-engine
make
make install
三、解决升级后无法用ssh远程登录
产生该问题的原因是升级后的OpenSSH启用了PAM登录认证,因此需要提供一个/etc/pam.d/sshd 控制文件。解决方案如下
1、修改配置文件
shell
#vim /etc/ssh/sshd_config
在配置文件中新增下面配置
shell
PermitRootLogin yes #允许root帐号远程登录
PasswordAuthentication yes #开启密码认证方式
UsePAM yes #开启UsePAM登录
2、新增PAM控制文件
shell
#vim /etc/pam.d/sshd
shell
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepare
3、重启sshd服务
shell
#systemctl restart sshd
4、使用ssh远程连接服务器
shell
# ssh root@ip
以上就是全部修复漏洞【CVE-2023-38408】的全部过程。