Linux基础——CVE-2016-2183漏洞
一、漏洞描述
漏洞编号:CVE-2016-2183
漏洞描述:该缺陷与DES/3DES密码算法的设计相关。
密码算法:如果没有禁用DES/3DES密码算法的情况,一般有大量的强密码算法如AES在DES/3DES的密码套件之上优先使用。
漏洞发生:可能用户在ssh、apache、Tomcat等应用配置的算法上使用DES/3DES的算密码算法,可人工输出算法列表检查。

二、漏洞排查(OpenEuler系统为例)
1、测试方法一:Openssl检查密码套件
openssl ciphers -v | grep -i 'des'

SSH检查密码算法
# 查询ssh的client端
[root@harbor ~]# ssh -Q key | grep -i des
[root@harbor ~]# ssh -Q key
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
sk-ssh-ed25519@openssh.com
sk-ssh-ed25519-cert-v01@openssh.com
ssh-rsa
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
sk-ecdsa-sha2-nistp256@openssh.com
ssh-rsa-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
sm2
sm2-cert
# 查询ssh的server端密码算法配置
[root@harbor ~]# sshd -T | grep -w kexalgorithms | grep -i des
[root@harbor ~]# sshd -T | grep -w kexalgorithms
kexalgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
2、测试方法二:nmap工具检查des和3des信息泄露漏洞
# 目前系统yum源都有主机端口扫描nmap工具,通过yum install nmap直接安装;
慎重:
-
绝不要 把自编译的 OpenSSL 装到
/usr或/usr/local,否则系统 rpm/yum 依赖的 libssl.so 会被替换,导致 ssh、wget、python 等全部罢工。 -
如果已经误装,先
sudo make uninstall(1.1.1 系列支持)或手动删/usr/local/lib64/libssl.* /usr/local/bin/openssl,再用yum reinstall openssl-libs恢复系统版本。
测试工具openssl安装
# 1. 装编译依赖
yum groupinstall "Development Tools"
# 2. 下载源码
mkdir /root/openssl && cd /root/openssl
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar xf openssl-1.1.1w.tar.gz && cd openssl-1.1.1w
# 3. 打开弱密码或重新安装(推荐)
cd /root/openssl/openssl-1.1.1w
make distclean # 把旧的 Makefile 清掉
./Configure linux-x86_64 \
--prefix=/opt/openssl-111-des \
--openssldir=/opt/openssl-111-des \
enable-weak-ssl-ciphers enable-des zlib
make -j$(nproc)
## 测试安装错误回退
sudo make uninstall
# 验证
/opt/openssl-111-des/bin/openssl version -a/opt/openssl-111-des/bin/openssl ciphers -v 'ALL' | grep -E 'DES-CBC|3DES'
#说明 3DES/DES 已回到openssl ciphers套件列表。

# 4. 安装依赖 & 下载源码(与系统版本保持一致)
yum install -y gcc make autoconf zlib-devel pam-devel openssl-devel
mkdir /root/openssh && cd/root/openssh
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz tar xf openssh-8.4p1.tar.gz && cd/root/openssh/openssh-8.4p1
# 5. 编译时显式加回 3des-cbc
./configure --with-ssl-engine --with-pam \
--with-md5-passwords \
--with-ciphers=aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc
make -j$(nproc)
sudo make install
# 6. openssh测试服务器:打开已废弃的算法
echo 'Ciphers +3des-cbc' >>/etc/ssh/sshd_config
systemctl restart sshd
# 7.验证openssh版本8.4p1(源码编译安装)
[root@harbor ~]# ssh -V
OpenSSH_8.4p1, OpenSSL 1.1.1f 31 Mar 2020
[root@harbor ~]# which ssh
/usr/local/bin/ssh
# 8.安装回退卸载安装目录
cd /root/openssh/openssh-8.4p1
# 自动删除编译安装数据
sudo make uninstall

# 目前只能看到3des-cbc弱算法,无warning告警
nmap -sV --script ssl-enum-ciphers -p 22 192.168.190.110
# 验证没有warning告警,github官网pr版本中修复了此问题
https://github.com/nmap/nmap/blob/master/scripts/ssh2-enum-algos.nse
curl -L -o /usr/share/nmap/scripts/ssh2-enum-algos.nse \
https://raw.githubusercontent.com/nmap/nmap/master/scripts/ssh2-enum-algos.nse
# 更新脚本数据库
[root@sysmt ~]# nmap --script-updatedb
Starting Nmap 7.98 ( https://nmap.org ) at 2025-11-26 12:25 +0800
NSE: Updating rule database.
NSE: Script Database updated successfully.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.35 seconds
# 更新scripts失败,由于nmap版本过低
[root@sysmt ~]# rpm -vhU https://nmap.org/dist/nmap-7.98-1.x86_64.rpm --force
Retrieving https://nmap.org/dist/nmap-7.98-1.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:nmap-1:7.98-1 ################################# [ 50%]
Cleaning up / removing...
2:nmap-2:7.70-5.el8 ################################# [100%]
[root@sysmt ~]# rpm -vhU https://nmap.org/dist/ncat-7.98-1.x86_64.rpm --force
Retrieving https://nmap.org/dist/ncat-7.98-1.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:ncat-1:7.98-1 ################################# [100%]
[root@sysmt ~]# rpm -qa | egrep "ncat|nmap"
nmap-7.98-1.x86_64
ncat-7.98-1.x86_64
# 验证
nmap --version # 升级到7.98
nmap --script-updatedb
3、测试方法三:ssh-audit.py脚本
# 测试版本3.10(Python 3.6.8可执行脚本)
https://github.com/jtesta/ssh-audit/releases/download/v3.1.0/ssh-audit-3.1.0.tar.gz
# 最新版本3.30(Python 3.6.8可执行脚本)
https://github.com/jtesta/ssh-audit/releases/download/v3.3.0/ssh-audit-3.3.0.tar.gz
# 切换到脚本目录/root/ssh_audit/ssh-audit-3.3.0
mkdir /root/ssh_audit
# 解压下载工具报ssh-audit-3.1.0.tar.gz
tar xf /root/ssh_audit/ssh-audit-3.3.0
cd /root/ssh_audit/ssh-audit-3.3.0
# 执行脚本检查远程openssh 22端口
python3 ssh-audit.py 192.168.190.110:22
## 红色部分表示存在安全隐患
## 测试机有告警【warn】表示从远程主机192.168.190.110检测到22端口存在弱密钥算法

##远程主机192.168.190.110配置/etc/ssh/sshd_config中添加3des弱密钥算法

结论:
目前openssl 的ciphers加密套件不涉及DES/3DES弱密码算法;
openssh服务端和客户端不涉及DES/3DES弱密码算法;
其他nginx、tomcat、httpd等应用检查conf配置排除涉及DES/3DES的弱密码算法来规避漏洞;
参考
# 红帽官网漏洞说明
https://access.redhat.com/articles/2548661
https://access.redhat.com/errata/RHSA-2017:3113
# openssl算法检查方法
https://www.cnblogs.com/LiuYanYGZ/p/6004990.html
# ssh禁用DES/3DES配置(避免三方安全漏扫)
https://www.cnblogs.com/supermwb/p/15879942.html
# nmap漏扫DES/3DES漏洞及tomcat的3DES禁用
https://blog.csdn.net/weixin_39724395/article/details/122246326
# OpenEuler的openssl加密接口
https://docs.openeuler.org/zh/docs/25.03/server/security/shangmi/algorithm-library.html
# 红帽生成加密秘钥和生成证书
https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/7/html/security_guide/sec-using_openssl#sec-Creating_and_Managing_Encryption_Keys
# nmap工具
https://nmap.org/download.html#linux-rpm
# 基于python3的openssh漏洞检测工具
https://github.com/jtesta/ssh-audit/releases
浙公网安备 33010602011771号