禁用3DES和DES弱加密算法,保证SSL证书安全 CVE-2016-2183

1,111次阅读
没有评论

漏洞介绍

一、最近在工作中,公司产品负责人反馈了项目地区一台服务器里 tomcat 被客户检测到有漏洞,这是绿盟给到的漏洞报告反馈如下图:

禁用 3DES 和 DES 弱加密算法,保证 SSL 证书安全 CVE-2016-2183

1、第一个漏洞是CVE-2021-42340, 这个不多介绍,当时服务器 Apache Tomcat 版本为 8.5.69, 在受影响的版本范围内,升级到 8.5.72 版本以上即可修复。

2、主要看这个CVE-2016-2183 漏洞

禁用 3DES 和 DES 弱加密算法,保证 SSL 证书安全 CVE-2016-2183

CVE-2016-2183 漏洞描述:

SSL 全称是 Secure Sockets Layer,安全 套接字 层,它是由网景公司(Netscape)设计的主要用于 Web 的安全传输协议,目的是为网络通信提供机密性、认证性及数据完整性保障。如今,SSL 已经成为互联网保密通信的工业标准。SSL 最初的几个版本(SSL 1.0、SSL2.0、SSL 3.0)由网景公司设计和维护,从 3.1 版本开始,SSL 协议由因特网工程任务小组(IETF)正式接管,并更名为 TLS(Transport Layer Security),发展至今已有 TLS 1.0、TLS1.1、TLS1.2,TLS1.3 这几个版本。TLS, SSH, IPSec 协商及其他产品中使用的 DES 及 Triple DES 密码存在大约四十亿块的生日界,这可使远程攻击者通过 Sweet32 攻击,获取纯文本数据。

风险级别:低

该漏洞又称为 SWEET32(https://sweet32.info)是对较旧的分组密码算法的攻击,它使用 64 位的块大小,缓解 SWEET32 攻击 OpenSSL 1.0.1 和 OpenSSL 1.0.2 中基于 DES 密码套件从“高”密码字符串组移至“中”;但 OpenSSL 1.1.0 发布时自带这些,默认情况下禁用密码套件。该问题在新的 openssl 版本中已解决。

在上图中可以看出,服务器 10004 端口存在低级别的加密算法。我们来自己测试下。

使用 nmap 扫描工具测试。输入命令nmap -sV -p 10004 --script ssl-enum-ciphers 服务器 IP

如下图,可以看出存在 C 低级别 3DES 算法。A 级别为符合安全的算法。

禁用 3DES 和 DES 弱加密算法,保证 SSL 证书安全 CVE-2016-2183

解决办法

二、避免使用 3DES 和 DES 算法

对于 apache 服务器禁止使用 3DES 加密算法

Tomcat 中:

在 tomcat/conf/server.xml 中找到 https 端口配置,添加 Ciphers="......",此处添加支持的算法,不支持的算法请勿加入其中!

<Connector port="10004" protocol="org.apache.coyote.http11.Http11NioProtocol" maxHttpHeaderSize="8192" minSpareThreads="250" maxSpareThreads="1000"
enableLookups="false" acceptCount="1000" connectionTimeout="8000"
maxProcessors="2000" maxThreads="2000" SSLEnabled="true" scheme="https" secure="true" keystoreFile="cert/XXXXXXXXXXXX.pfx" keystoreType="xxxxx" keystorePass="xxxxxxxx" sslEnabledProtocols="TLSv1" clientAuth="false" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
Ciphers="TLS_DHE_RSA_WITH_AES_128_CBC_SHA ,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA ,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
/>

重新启动 Tomcat

cd tomcat-home/bin/
./shutdown.sh     #关闭
./startup.sh      #启动

 Nginx 中:

在 nginx/conf/nginx.conf 中配置 https 端口配置

server
{
listen 80;
listen 443 ssl https2;
#使用 HTTP/2,需要 Nginx1.9.7 以上的版本
ssl on;
server_name ykqi.cn www.ykqi.cn;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/dist/ykqi;

#SSL-START SSL 相关配置,请勿删除或修改下一行带注释的 404 规则
#error_page 404/404.html;

add_header X-Frame-Options DENY;
#禁止被嵌入框架

add_header X-Content-Type-Options nosniff;
#防止在 IE9、Chrome 和 Safari 中的 MIME 类型混淆攻击

ssl_certificate /www/server/panel/vhost/ssl/1_ykqi_bundle.crt;
ssl_certificate_key /www/server/panel/vhost/ssl/2_ykqi.key; 
#SSL 证书文件位置


ssl_dhparam /www/server/panel/vhost/ssl/dhparam.pem;
#DH-Key 交换 ** 文件位置

#SSL 优化配置

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#只允许 TLS 协议

ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
#加密套件, 这里用了 CloudFlares Internet facing SSL cipher configuration

ssl_prefer_server_ciphers on;
#由服务器协商最佳的加密算法

ssl_session_cache builtin:1000 shared:SSL:10m;
#Session Cache,将 Session 缓存到服务器,这可能会占用更多的服务器资源

ssl_session_tickets on;
#开启浏览器的 Session Ticket 缓存

ssl_session_timeout 10m; 
#SSL session 过期时间

add_header Strict-Transport-Security "max-age=6307200; includeSubdomains; preload";
#开启 HSTS,并设置有效期为“6307200 秒”(6 个月),包括子域名(根据情况可删掉),预加载到浏览器缓存(根据情况可删掉)
#SSL-END

#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END

#PHP-INFO-START PHP 引用配置,可以注释或修改
#PROXY-START
location / 
{
proxy_pass http://localhost:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;

#持久化连接相关配置
#proxy_connect_timeout 30s;
#proxy_read_timeout 86400s;
#proxy_send_timeout 30s;
#proxy_http_version 1.1;
#proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection "upgrade";

#add_header X-Cache $upstream_cache_status;

#expires 12h;
} 

#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{return 404;}

#一键申请 SSL 证书验证目录相关设置
location ~ \.well-known{allow all;}

access_log /www/wwwlogs/ykiq.cn.log;
error_log /www/wwwlogs/ykqi.cn.error.log;
}

配置完重新启动 Nginx

centos7:
systemctl restart nginx

现在已经禁用了 3DES 算法了!

然后再重新 nmap 扫描。禁用 3DES 和 DES 弱加密算法,保证 SSL 证书安全 CVE-2016-2183

 

 

微信扫描下方的二维码阅读本文

正文完
 1
柹子丶
版权声明:本站原创文章,由 柹子丶 于2023-01-04发表,共计4356字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码