概述:CVE-2016-2183 是一个涉及 SSL/TLS 协议信息泄露的漏洞,也被称为 "SWEET32" 攻击。该漏洞利用了某些对称加密算法(如 3DES)的弱点,攻击者可以通过捕获和分析大量的加密流量,可能会恢复明文数据。
目录
1. 升级算法
1.1 更新 OpenSSL 配置
1. 使用 yum 更新系统
2. 检查 OpenSSL 版本
3. 更新 OpenSSL
4. 从源代码编译 OpenSSL(可选)
5. 验证安装
2. 配置服务器
2.1配置 Web 服务器
2.2重启服务
检查和更新系统
验证安装
更新 Nginx 配置
3.扫描验证
1. 升级算法
为了防止被 SWEET32 攻击利用,应该在服务器配置中禁用 3DES 加密算法。可以通过更新 OpenSSL 和相关服务的配置文件来实现。
1.1 更新 OpenSSL 配置
1. 使用 yum
更新系统
首先,尝试更新系统并升级所有现有软件包:
sudo yum update
2. 检查 OpenSSL 版本
确认当前系统中的 OpenSSL 版本:
openssl version
3. 更新 OpenSSL
如果 yum
仓库中有更新的 OpenSSL 版本,使用以下命令进行安装:
sudo yum install openssl openssl-devel
如果没有可用的更新版本,并且需要更高版本的 OpenSSL,可以考虑从源代码编译安装最新的 OpenSSL 版本:
4. 从源代码编译 OpenSSL(可选)
注意: 从源代码编译安装软件包是有风险的,请确保备份重要数据。
# 安装所需的编译工具和依赖项
sudo yum groupinstall 'Development Tools'
sudo yum install perl-core zlib-devel# 下载并解压 OpenSSL 源代码
wget https://www.openssl.org/source/openssl-1.1.1v.tar.gz
tar -zxf openssl-1.1.1v.tar.gz
cd openssl-1.1.1v# 配置并编译安装 OpenSSL
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make
sudo make install# 备份原有的 OpenSSL 可执行文件,并更新为新的版本
sudo mv /usr/bin/openssl /usr/bin/openssl.bak
sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl# 更新库文件路径
sudo sh -c "echo '/usr/local/openssl/lib' > /etc/ld.so.conf.d/openssl.conf"
sudo ldconfig -v
如果下载不了:https://cloud.189.cn/t/YJre2aAzEvEr (访问码:8eik)
5. 验证安装
再次检查 OpenSSL 版本以确认升级成功:
openssl version
2. 配置服务器
2.1配置 Web 服务器
Apache HTTPD: 如果你使用的是 Apache,可以通过修改 /etc/httpd/conf.d/ssl.conf
文件来禁用 3DES。
sudo vi /etc/httpd/conf.d/ssl.conf
找到 SSLCipherSuite
这一行,并将其修改为:
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
Nginx: 如果你使用的是 Nginx,可以通过修改 /etc/nginx/nginx.conf
文件来禁用 3DES。
sudo vi /etc/nginx/nginx.conf
找到 ssl_ciphers
这一行,并将其修改为:
# 优化后的加密套件配置ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-CHACHA20-POLY1305:!3DES:!aNULL:!MD5:!RC4';
# 使用更安全的 TLS 版本ssl_protocols TLSv1.2 TLSv1.3;
2.2重启服务
sudo systemctl restart httpd # Apache
sudo systemctl restart nginx # Nginx
检查和更新系统
确保系统上的软件包都是最新的,包括 OpenSSL:
sudo dnf update openssl
验证安装
再次检查 OpenSSL 版本以确认升级成功:
openssl version
更新 Nginx 配置
一旦 OpenSSL 升级完成,按照之前的步骤更新 Nginx 配置以禁用不安全的协议和加密套件,然后重启 Nginx:
sudo systemctl restart nginx
3.扫描验证
更新配置后,再次使用 nmap
进行扫描,确认 TLSv1.0 和 TLSv1.1 已禁用,且 3DES 加密算法不再被支持。
nmap --script ssl-enum-ciphers -p 443 <your_server_ip>
正确的应该长这样:
如果是以下这种说明没有成功!!新的配置并没有生效,TLSv1.0 和 TLSv1.1 仍然被支持,并且 3DES 加密算法也依然存在
结果:Host is up (0.024s latency).
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| SSLv3: No supported ciphers found
| TLSv1.0:
| ciphers:
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| compressors:
| NULL
| TLSv1.1:
| ciphers:
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| compressors:
| NULL
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - strong
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - strong
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - strong
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - strong
| TLS_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA256 - strong
| TLS_RSA_WITH_AES_128_GCM_SHA256 - strong
| TLS_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_AES_256_CBC_SHA256 - strong
| TLS_RSA_WITH_AES_256_GCM_SHA384 - strong
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| compressors:
| NULL
|_ least strength: strongNmap done: 1 IP address (1 host up) scanned in 1.47 seconds