概述:CVE-2016-2183 是一个涉及 SSL/TLS 协议信息泄露的漏洞,也被称为 "SWEET32" 攻击。该漏洞利用了某些对称加密算法(如 3DES)的弱点,攻击者可以通过捕获和分析大量的加密流量,可能会恢复明文数据。
目录
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: strong
Nmap done: 1 IP address (1 host up) scanned in 1.47 seconds