SSL/TLS 密码套件漏洞分析以及修复方法

news2024/11/28 12:47:50

1. 前言

在当今数字化时代,网络安全至关重要。SSL/TLS 协议作为保障网络通信安全的重要手段,广泛应用于各类网络应用中。然而,如同任何技术一样,SSL/TLS 也并非绝对安全,存在着一些可能被攻击者利用的漏洞。本文将深入分析 SSL/TLS 密码套件中常见的漏洞种类及其原因,并详细介绍相应的修复方法,旨在帮助读者更好地理解和应对这些安全风险,确保网络通信的安全性和可靠性。

2. SSL/TLS密码套件漏洞的常见种类和原因

2.1 SSL/TLS 协议信息泄露漏洞(CVE-2016-2183)

使用nmap对某个域名做密码学套件的扫描。扫描结果如下:

可以看到:

过时的用 TLSv1.0 和 TLSv1.1 协议依旧支持,同时压缩算法部分有TLS_RSA_WITH_3DES_EDE_CBC_SHA(rsa 2048)被标记为-C,表示存在潜在风险。同时服务器警告 64 - bit 块密码 3DES 容易受到 SWEET32 攻击。

2.2 SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱漏 洞

使用nmap对某个域名做密码学套件的扫描。扫描结果如下:

扫描结果显示`Diffie - Hellman Key Exchange Insufficient Group Strength`,即服务器在使用Diffie - Hellman密钥交换时,所使用的组强度不够。这种情况可能导致服务器容易受到被动窃听攻击。攻击者可能通过分析网络流量,利用Diffie - Hellman密钥交换的弱点,获取到加密通信中的敏感信息,从而破坏通信的保密性和完整性。

2.3 OpenSSL 拒绝服务漏洞(CVE-2016-8610)

OpenSSL 是一种开放源码的 SSL 实现,用来实现网络通信的高强度加密,现 在被广泛地用于各种网络应用程序中。OpenSSL 在 SSL/TLS 协议握手过程的 实现中,允许客户端重复发送类型为 SSL3_RT_ALERT 级别为 SSL3_AL_WARNING 的内容未定义警告包,且 OpenSSL 在实现中遇到该未定 义警告包时仍选择忽略并继续处理接下来的通信内容(如果有的话)。攻 击者可以容易的利用该缺陷在一个消息中发送大量此未定义内容的警告 包,使服务或进程陷入无意义的循环,从而导致服务进程占掉 100 的 CPU 使用率。

检测方法:

通过socket发送如下数据

rb'\x16\x03\x01\x01"\x01\x00\x01\x1e\x03\x01\xcca\xdbg\\U\xb3\xdb\xc9\x
187\x02|\x03M2s\x12\xdc\x10\xe6\xe4\xa0\xab\x85\x81\xe5fM\xd0<i\x00\x0
0\x88\xc00\xc0,\xc0(\xc0$\xc0\x14\xc0\n\x00\xa3\x00\x9f\x00k\x00j\x009\x0
08\x00\x88\x00\x87\xc02\xc0.\xc0*\xc0&\xc0\x0f\xc0\x05\x00\x9d\x00=\x00
5\x00\x84\xc0\x12\xc0\x08\x00\x16\x00\x13\xc0\r\xc0\x03\x00\n\xc0/\xc0+\
xc0\'\xc0#\xc0\x13\xc0\t\x00\xa2\x00\x9e\x00g\x00@\x003\x002\x00\x9a\x0
0\x99\x00E\x00D\xc01\xc0-\xc0)\xc0%\xc0\x0e\xc0\x04\x00\x9c\x00<\x00/\x
00\x96\x00A\xc0\x11\xc0\x07\xc0\x0c\xc0\x02\x00\x05\x00\x04\x00\x15\x00
\x12\x00\t\x00\xff\x01\x00\x00m\x00\x0b\x00\x04\x03\x00\x01\x02\x00\n\x
78
004\x002\x00\x0e\x00\r\x00\x19\x00\x0b\x00\x0c\x00\x18\x00\t\x00\n\x00\
x16\x00\x17\x00\x08\x00\x06\x00\x07\x00\x14\x00\x15\x00\x04\x00\x05\x0
0\x12\x00\x13\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x10\x00\x11\x00#\x00\
x00\x00\r\x00 
\x00\x1e\x06\x01\x06\x02\x06\x03\x05\x01\x05\x02\x05\x03\x04\x01\x04\x
02\x04\x03\x03\x01\x03\x02\x03\x03\x02\x01\x02\x02\x02\x03\x00\x0f\x00\
x01\x01'

如果收到响应

rb'\x16\x03\x01\x00\x04'

则表示漏洞存在。

相关资料:

https://www.openssl.org/source/ https://security.360.cn/cve/CVE-2016-8610/ https://access.redhat.com/errata/RHSA-2017:1414

https://access.redhat.com/errata/RHSA-2017:1413

3. 应用系统的架构

ISO 7 层架构和 TCP/4 层架构有不同的含义和应用场景,主要区别如下:

3.1 层次结构

ISO 7 层架构
从下到上依次为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
物理层负责处理物理介质上的信号传输,如网线、光纤等;数据链路层关注的是在相邻节点间可靠地传输数据帧;网络层负责将数据包从源节点路由到目标节点;传输层提供端到端的可靠或不可靠的数据传输服务;会话层建立、维护和管理会话;表示层处理数据的表示形式,如加密、压缩等;应用层是用户与网络交互的接口,包括各种应用程序。
TCP/IP 4 层架构
由网络接口层、网络层、传输层和应用层组成。
网络接口层对应于 ISO 模型中的物理层和数据链路层的功能,主要负责网络接入和数据链路的相关操作;网络层负责 IP 寻址和路由选择;传输层提供 TCP(可靠传输)和 UDP(不可靠传输)等服务;应用层包含各种应用协议和应用程序,如 HTTP、FTP 等。


3.2 功能重点

ISO 7 层架构
更注重对网络通信过程中从物理介质到应用程序的全方位、精细化的功能划分和描述。
每个层次都有其明确的功能和接口规范,有利于不同厂商的设备和软件在各个层次上进行标准化的开发和集成。例如,在表示层可以通过统一的标准来实现数据的加密和解密操作,使得不同系统之间能够正确地处理和理解数据的表示形式。
TCP/IP 4 层架构
更侧重于互联网环境下的实际应用和网络通信的核心功能。
它简化了层次结构,突出了网络层的 IP 协议和传输层的 TCP、UDP 协议的重要性。网络层的 IP 协议实现了全球范围内的寻址和路由,传输层的 TCP 和 UDP 则满足了不同应用场景下对数据传输可靠性和效率的要求。例如,在设计一个简单的 Web 应用时,主要关注的是应用层的 HTTP 协议、传输层的 TCP 协议以及网络层的 IP 协议,而对底层的物理层和数据链路层细节通常不需要过多考虑。


3.3 在阿里云服务器配置中的应用

ISO 7 层架构应用
在一些复杂的企业级应用场景中,可能会涉及到对各个层次的精细配置和管理。例如,在配置服务器的网络安全时,可能需要在不同层次上设置访问控制。在物理层可以通过限制服务器机房的物理访问来保护设备;在数据链路层可以设置 MAC 地址过滤;在网络层可以配置防火墙规则进行 IP 地址过滤;在传输层可以通过配置 SSL/TLS 协议来保障数据传输的安全;在会话层可以管理用户会话的超时和权限;在表示层可以对数据进行加密存储和传输;在应用层可以对不同的应用程序设置用户权限和访问规则。
TCP/IP 4 层架构应用
在阿里云服务器配置中,通常更关注网络接口层的网络接入方式(如以太网、无线等),网络层的 IP 地址分配和路由设置,传输层的协议选择(如 TCP 或 UDP)以及应用层的应用程序部署和配置。例如,在配置一个 Web 服务器时,会在网络接口层确保网络连接正常,在网络层为服务器分配一个公网 IP 地址并设置正确的路由,在传输层选择 TCP 协议来保障 HTTP 请求的可靠传输,在应用层安装和配置 Web 应用程序相关的软件(如 Apache、NGINX 等)。

用户客户端访问应用服务器,一个常见的途径步骤是首先访问WAF,再到NGINX,最后到服务器。

所以我们在修复SSL/TLS密码套件漏洞时,要首先了解这是什么架构。

以阿里云为例,如果阿里云上看到负载均衡的监听器管理的配置如下

说明目前负载均衡配置的是tcp4层协议,需要在服务器上修改协议版本配置。参考4.3的方法可以修复漏洞

其实我们建议尽量把负载均衡升级(新建一个新的7层协议),需要重新配置负载均衡,并且修改域名映射。当然,这需要影响业务,需要应用维护人员协商时间去操作,并且配合测试,动作比较大。那如果是在7层协议的情况下,用户需要找到最外层的设备,如果是WAF,建议采用4.1方法;如果是Nginx,建议采用4.2的方法。

4.修复方法

4.1 修改WAF配置

从阿里云的WAF使用说明中可以看到 只有通过CNAME接入方式接入域名时,您可以在接入域名配置向导的配置监听任务中,自定义允许WAF使用的加密套件类型(如下图所示)。自定义加密套件类型后,WAF只监听支持指定加密套件的客户端的请求。

参考资料:

WAF支持的加密套件类型_Web应用防火墙(WAF)-阿里云帮助中心

4.2 修改NGINX配置

NGINX关闭低版本tls协议 禁用 tls1.0 tls1.1等协议

配置示例:

# 位于 Nginx 配置文件 (通常是 /etc/nginx/nginx.conf 或者在特定站点的配置文件中 /etc/nginx/sites-available/your-site) 中

server {
    listen 443 ssl;
    server_name your-domain.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    # 启用 TLSv1.2 和 TLSv1.3,禁用 TLSv1 和 TLSv1.1
    ssl_protocols TLSv1.2 TLSv1.3;

    # 使用安全的加密套件
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';

    ssl_prefer_server_ciphers on;

    # 其他 SSL 配置
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_dhparam /path/to/dhparam.pem;

    # 其他 Nginx 配置
    location / {
        proxy_pass http://your_backend_server;
        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 X-Forwarded-Proto $scheme;
    }
}

在这个配置中,ssl_protocols TLSv1.2 TLSv1.3; 明确地禁用了 TLSv1 和 TLSv1.1。
ssl_ciphers 指定了一些安全的加密套件。
ssl_prefer_server_ciphers on; 配置 Nginx 使用服务器优选的加密套件。


确保你已经生成了 dhparam.pem 文件,可以通过以下命令生成:

openssl dhparam -out /path/to/dhparam.pem 2048

完成配置后,重启 Nginx 以应用更改:

sudo systemctl restart nginx

注意!这里可能有坑!我按上面的设置,通过检测工具(SSL Server Test (Powered by Qualys SSL Labs)),发现还是没有禁用tls1.1,后来折腾好久,才发现原因,是这台服务器不止一个网站,有别的vhost文件在用着tls1.1,如果想要禁用tls1.1,必须是整个服务器的nginx配置里都禁用tls1.1

4.3 服务器tomcat配置修改

修改conf下面的server.xml

<Connector 这一段里面增加如下两个配置:

配置1:

 ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"

配置2:

 sslEnabledProtocols="TLSv1.2"

配置完成的配置文件截图如下:

最后重启tomcat,就发现生效了。

参考资料:

TLSv1.2版本_mb65051f41d96ac的技术博客_51CTO博客

4.4 windows服务器本地修复

4.4.1 下载一键式优化加密套件工具

天威诚信工具ITrusIIS.exe下载地址 http://www.itrus.cn/soft/ITrusIIS.exe

运行后点击“最佳配置”,然后去除红线这条后点“应用”

4.4.2 可能的报错解决

调整后如果打开浏览器报“无法访问此网页”,按如下方法修改注册表可以解决

禁用HTTP/2

检查以下目录

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters]
“EnableHttp2Tls”=dword:00000000
“EnableHttp2Cleartext”=dword:00000000

没有就添加上面两值

参考资料:

https://blog.csdn.net/qiaowei361/article/details/121416614

小威开讲啦 | 如何修复 POODLE SSLv3 安全漏洞 (CVE-2014-3566)

4.5 升级opensll

对于 OpenSSL 拒绝服务漏洞(CVE-2016-8610),建议方法是升级OPENSSL。但是需要注意这里的版本范围

参考资料:
OpenSSL 安全漏洞(CVE-2016-8610)修复详情步骤-CSDN博客

5.最后

本文深入分析 SSL/TLS 密码套件中常见的漏洞种类和修复方法。 通过对 SSL/TLS 密码套件漏洞的分析以及应用系统架构的阐述,我们明确了修复的方向和方法。根据架构的实际情况,修复的方法可以是修改 WAF、NGINX 配置、服务器端的 tomcat 设置以及针对 Windows 服务器的特定配置修复。修复后要及时验证是否已经修复成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2227583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

stm32入门教程--DMA 超详细!!!

目录 简介 工作模式 1、数据转运DMA 2、ADC扫描模式DMA 简介 工作模式 1、数据转运DMA 这个例子的任务是将SRAM的数组DataA&#xff0c;转运到另一个数组DataB中&#xff0c;这个基本结构里的各个参数应该如何配置呢&#xff1f; 首先是外设站点和存储器站点的起始地址、…

大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 3)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

TIFS-2024 细粒度表示和重组在换衣行人重识别中的应用

总体结论 本文提出了一种新的细粒度表示与重构&#xff08;FIRe2&#xff09;框架&#xff0c;用于解决布变人重识别问题。通过细粒度特征挖掘和属性重构&#xff0c;FIRe2在不依赖任何辅助信息的情况下&#xff0c;实现了最先进的性能。该方法在多个基准数据集上取得了显著的…

基于JSP的篮球系列网上商城系统【附源码】

基于JSP的篮球系列网上商城系统 效果如下&#xff1a; 系统首页界面 商品信息界面 购物车界面 购物车界面 管理员登录界面 管理员功能界面 用户注册界面 我的收藏界面 研究背景 21世纪&#xff0c;我国早在上世纪就已普及互联网信息&#xff0c;互联网对人们生活中带来了无限…

重学SpringBoot3-怎样优雅停机

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-怎样优雅停机 1. 什么是优雅停机&#xff1f;2. Spring Boot 3 优雅停机的配置3. Tomcat 和 Reactor Netty 的优雅停机机制3.1 Tomcat 优雅停机3.2 Reac…

MySQL 数据库备份与恢复全攻略

MySQL 数据库备份与恢复全攻略 引言 在现代应用中&#xff0c;数据库是核心组件之一。无论是个人项目还是企业级应用&#xff0c;数据的安全性和完整性都至关重要。为了防止数据丢失、损坏或意外删除&#xff0c;定期备份数据库是必不可少的。本文将详细介绍 MySQL 数据库的备…

Cesium基础-(Entity)-(Billboard)

里边包含Vue、React框架代码 2、Billboard 广告牌 Cesium中的Billboard是一种用于在3D场景中添加图像标签的简单方式。Billboard提供了一种方法来显示定向的2D图像,这些图像通常用于表示简单的标记、符号或图标。以下是对Billboard的详细解读: 1. Billboard的定义和特性 B…

DEVOPS: 容器与虚拟化与云原生

概述 传统虚拟机&#xff0c;利用 hypervisor&#xff0c;模拟出独立的硬件和系统&#xff0c;在此之上创建应用虚拟机是一个主机模拟出多个主机虚拟机需要先拥有独立的系统docker 是把应用及配套环境独立打包成一个单位docker 是在主机系统中建立多个应用及配套环境docker 是…

ansible开局配置-openEuler

ansible干啥用的就不多介绍了&#xff0c;这篇文章主要在说ansible的安装、开局配置、免密登录。 ansible安装 查看系统版本 cat /etc/openEuler-latest输出内容如下&#xff1a; openeulerversionopenEuler-24.03-LTS compiletime2024-05-27-21-31-28 gccversion12.3.1-30.…

img 标签的 object-fit 属性

设置图片固定尺寸后&#xff0c;可以通过 object-fit 属性调整图片展示的形式 object-fit: contain; 图片的长宽比不变&#xff0c;相应调整大小。 object-fit: cover; 当图片的长宽比与容器的长宽比不一致时&#xff0c;会被裁切。 object-fit: fill; 图片不再锁定长宽…

基于边缘计算的智能门禁系统架构设计分析

案例 阅读以下关于 Web 系统架构设计的叙述&#xff0c;回答问题1至问题3。 【说明】 某公司拟开发一套基于边缘计算的智能门禁系统&#xff0c;用于如园区、新零售、工业现场等存在来访被访业务的场景。来访者在来访前&#xff0c;可以通过线上提前预约的方式将自己的个人信息…

数学建模清风——论文写作方法教程笔记

PS&#xff1a;本文不讲LateX的使用&#xff01;讲述论文的写作方法 首页&#xff1a;论文标题摘要关键词 一、问题重述 二、问题分析 三、模型假设 四、符号说明 五、模型的建立与求解 六、模型的分析与检验 七、模型的评价、改进与推广 八、参考文献 附录 首页&#xff…

Laravel5 抓取第三方网站图片,存储到本地

背景 近期发现&#xff0c;网站上的部分图片无法显示&#xff0c; 分析发现&#xff0c;是因为引用的第三方网站图片&#xff08;第三方服务器证书已过期&#xff09; 想着以后显示的方便 直接抓取第三方服务器图片&#xff0c;转存到本地服务器 思路 1. 查询数据表&#xff0…

自适应神经网络架构:原理解析与代码示例

个人主页&#xff1a;chian-ocean 文章专栏 自适应神经网络结构&#xff1a;深入探讨与代码实现 1. 引言 随着深度学习的不断发展&#xff0c;传统神经网络模型在处理复杂任务时的局限性逐渐显现。固定的网络结构和参数对于动态变化的环境和多样化的数据往往难以适应&#…

《Python游戏编程入门》注-第4章1

《Python游戏编程入门》的第4章是“用户输入&#xff1a;Bomb Cathcer游戏”&#xff0c;通过轮询键盘和鼠标设备状态实现Bomb Cathcer游戏。 1 Bomb Cathcer游戏介绍 “4.1 认识Bomb Cathcer游戏”内容介绍了Bomb Cathcer游戏的玩法&#xff0c;即通过鼠标来控制红色“挡板”…

【Java基础】2、Java基础语法

f2/fnf2&#xff1a;选中点中的文件名 ​​​​​​​ 1.注释 为什么要有注释&#xff1f; 给别人和以后的自己可以看懂的解释 注释含义 注释是在程序指定位置的说明性信息&#xff1b;简单理解&#xff0c;就是对代码的一种解释 注释分类 单行注释 //注释信息 多行注释…

Spring Boot 应用开发概述

目录 Spring Boot 应用开发概述 Spring Boot 的核心特性 Spring Boot 的开发模式 Spring Boot 在企业应用开发中的优势 结论 Spring Boot 应用开发概述 Spring Boot 是由 Pivotal 团队开发的一个框架&#xff0c;基于 Spring 框架&#xff0c;旨在简化和加速基于 Spring …

微信小程序 - 动画(Animation)执行过程 / 实现过程 / 实现方式

前言 因官方文档描述不清晰,本文主要介绍微信小程序动画 实现过程 / 实现方式。 实现过程 推荐你对照 官方文档 来看本文章,这样更有利于理解。 简单来说,整个动画实现过程就三步: 创建一个动画实例 animation。调用实例的方法来描述动画。最后通过动画实例的 export 方法…

docker的安装配置与基本简单命令

目录 1.docker简介 2.docker安装 2.1使用root用户登陆 更新yum源 2.2安装依赖 2.3设置yum源 更新yum源索引 2.4安装docker 2.5启动并且设置开机自启动 2.6验证安装是否成功 2.7配置docker加速器 2.8重启docker服务 3.docker简单使用 3.1下载镜像 3.2列出…

【Spring】Cookie与Session

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;计算机网络那些事 一、Cookie是什么&#xff1f; Cookie的存在主要是为了解决HTTP协议的无状态性问题&#xff0c;即协议本身无法记住用户之前的操作。 "⽆状态" 的含义指的是: 默认情况…