SSL/TLS 密码套件漏洞分析以及修复方法
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.1ssl_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 服务器的特定配置修复。修复后要及时验证是否已经修复成功。
相关文章:

SSL/TLS 密码套件漏洞分析以及修复方法
1. 前言 在当今数字化时代,网络安全至关重要。SSL/TLS 协议作为保障网络通信安全的重要手段,广泛应用于各类网络应用中。然而,如同任何技术一样,SSL/TLS 也并非绝对安全,存在着一些可能被攻击者利用的漏洞。本文将深入…...

[Vue warn]: Do not use built-in or reserved HTML elements as component id:
这个Vue警告信息表明不要将内置或保留的HTML元素名称用作组件的ID。在Vue中,组件的ID应该是唯一的,以确保没有冲突。很可能是一个保留字或者是一个内置的HTML元素名称,所以Vue拒绝了这样的用法。 解决方法: 更改组件的ID&#x…...
【大数据学习 | kafka】kafka的shell操作
1. topic的管理命令(kafka-topics.sh) 参数如下: 1.1 创建 # 创建 kafka-topics.sh --bootstrap-server nn1:9092 --create --topic topic_a --partitions 3 --replication-factor 2 # --bootstrap-server 指定集群地址,因为每…...

UE4安卓打aab包时,同时存在“gradle”、“arm64/gradle”两个Gradle工程的原因
两个Gradle工程的现象 在出安卓aab包时,观察到存在以下两个Gradle工程: 1、Intermediate\Android\arm64\gradle (称为arm64的Gradle) 2、Intermediate\Android\gradle(称为根下的Gradle) 它们存在一些小…...
淘宝API接口( item_get- 淘宝商品详情查询)
淘宝商品详情查询 API(item_detail)主要用于获取淘宝商品的详细信息,以下是相关介绍: 请求参数: num_iid:必填参数,代表商品的唯一标识 ID。通过该 ID 可以准确地指定要查询的商品。例如&#…...
Soanrquber集成Gitlab 之 gitlab用户配置和身份验证
集成Gitlab : gitlab用户配置和身份验证 说明: 使得Sonarquber的用户登录与Gitlab的用户登录/认证模块同步 什么是 SonarQube? SonarQube 是一个开源的代码质量管理平台,用于持续检查和分析代码的质量和安全性。它提供了多种功…...

沪深A股上市公司数据报告分析
数据分析报 目录 数据分析报告 1.引言 1.1 背景介绍 1.2 报告目的 1.3 报告范围 1.4 关键术语定义 2. 数据收集与预处理 2.1 数据来源概述 2.2 数据收集过程 2.3 数据预处理步骤 3. 数据可视化 3.1分析地区对公司数量的影响 3.2分析行业分类是否影响公…...
Elasticsearch Search Template 搜索模板
Elasticsearch Search Template 所谓 search template 搜索模板其实就是: 预先定义好查询语句 DSL 的结构并预留参数搜索的时再传入参数值渲染出完整的 DSL ,最后进行搜索 使用搜索模板可以将 DSL 从应用程序中解耦出来,并且可以更加灵活的…...

2024年10月-2025年5月 Oracle 19c OCM 考试安排
2024年10月-2025年5月 Oracle 19c OCM 考试安排: 北京考场: 上海考场: 更新时间:2024年10月25日 Oracle 19c OCM往期学员成绩展示: Oracle 19c OCM认证证书(电子版)...

VMware虚拟机安装KailLinux系统
目录 简介 系统镜像下载 配置虚拟机 安装系统镜像 切换中文界面 后置内容 修改root密码 ssh服务 对互联网的热爱,尝试安装另一套Linux系统。 简介 Kali Linux是一个专为网络安全和渗透测试设计的Linux发行版,它包含了大量安全相关的工具和软件…...

G2 基于生成对抗网络(GAN)人脸图像生成
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 基于生成对抗网络(GAN)人脸图像生成 这周将构建并训练一个生成对抗网络(GAN)来生成人脸图像。 GAN 原理概述 …...
R学习笔记-单因素重复测量方差分析
R语言之重复测量方差分析——ezANOVA的使用与解析 - 知乎 单因素重复测量方差分析(One-Way Repeated Measures ANOVA)——R软件实现 - 梦特医数通 ### 清空environment rm(list ls()) ### 加载包 if (!require("tidyverse")) install.packages("tidyverse&quo…...

HTML练习题:彼岸的花(web)
展示效果: 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>彼岸の花</title><style…...

(蓝桥杯C/C++)——常用库函数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、 二分查找 1.二分查找的前提 2.binary_ search函数 3.lower_bound和upper_bound 二、排序 1.sort概念 2.sort的用法 3.自定义比较函数 三、全排列 1.next p…...

GPT-Sovits-2-微调模型
1. 大致步骤 上一步整理完数据集后,此步输入数据, 微调2个模型VITS和GPT,位置在 <<1-GPT-SoVITS-tts>>下的<<1B-微调训练>> 页面的两个按钮分别执行两个文件: <./GPT_SoVITS/s2_train.py> 这一步微调VITS的预训练模型…...
【数据结构 | PTA】懂蛇语
懂蛇语 在《一年一度喜剧大赛》第二季中有一部作品叫《警察和我之蛇我其谁》,其中“毒蛇帮”内部用了一种加密语言,称为“蛇语”。蛇语的规则是,在说一句话 A 时,首先提取 A 的每个字的首字母,然后把整句话替换为另一…...

Python——自动化发送邮件
在数字化时代,电子邮件是商务沟通和个人联络的重要工具。自动化邮件发送可以节省时间,提高效率。Python,作为一种强大且灵活的编程语言,提供了多种库来支持邮件的自动化发送。本文将详细介绍如何使用Python的smtplib和email库来编…...

MTKLauncher_布局页面分析
文章目录 前言遇到的困难点针对性解决困难 需求相关资料Launcher3 源码 目录简单介绍Launcher3 简介及页面布局分析UI整体架构数据加载布局加载布局加载核心思想device_profiles.xml 加载InvariantDeviceProfileinitGrid(context, gridName)getPredefinedDeviceProfilesinvDist…...

C#实现隐藏和显示任务栏
实现步骤 为了能够控制Windows任务栏,我们需要利用Windows API提供的功能。具体来说,我们会使用到user32.dll中的两个函数:FindWindow和ShowWindow。这两个函数可以帮助我们找到任务栏窗口,并对其执行显示或隐藏的操作 引入命名空…...

基于springboot+vue实现的公司财务管理系统(源码+L文+ppt)4-102
基于springbootvue实现的公司财务管理系统(源码L文ppt)4-102 摘要 本系统是基于SpringBoot框架开发的公司财务管理系统,该系统包含固定资产管理、资产申领管理、资产采购管理、员工工资管理等功能。公司财务管理系统是一种帮助公司进行有效资金管理、会…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...

低代码采购系统搭建:鲸采云+能源行业订单管理自动化案例
在能源行业数字化转型浪潮下,某大型能源集团通过鲸采云低代码平台,仅用3周时间就完成了采购订单管理系统的定制化搭建。本文将揭秘这一成功案例的实施路径与关键成效。 项目背景与挑战 该企业面临: 供应商分散:200供应商使用不同…...