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.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 服务器的特定配置修复。修复后要及时验证是否已经修复成功。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何加密电脑磁盘?电脑本地磁盘加密方法介绍

随着信息技术的不断发展&#xff0c;电脑磁盘加密已经成为保护个人隐私和数据安全的重要手段。本文将介绍几种常见的电脑本地磁盘加密方法&#xff0c;帮助用户保护自己的数据安全。 文件夹只读加密专家 文件夹只读加密专家不仅可以加密电脑中的文件夹&#xff0c;还可以加密保…

已解决Navicat 选择Mysql表 报错unkonow internal error: Access violation - no RTTI data

已解决Navicat 选择Mysql表 报错unkonow internal error&#xff1a; Access violation - no RTTI data 报错信息截图&#xff1a; 使用Navicat Premium15 选择sql server表时 出现大量弹窗报错&#xff0c;导致sql文件执行不了&#xff0c;右键数据库执行外部文件也失败了。弹…

【机器学习】揭秘XGboost:高效梯度提升算法的实践与应用

目录 &#x1f354; XGBoost 原理 1.1 目标函数确定和树的复杂度介绍 1.2 XGBoost目标函数的推导 1.3 泰勒公式展开 1.4 化简目标函数 1.5 问题再次转换 1.6 对叶子结点求导 1.7 XGBoost的回归树构建方法 &#x1f354; XGBoost API 2.1 通用参数 2.2 Booster 参数 …

基于vue框架的的高校学习资源共享系统5ym3y(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;学生,学校信息,课程分类,班课信息,班课申请,学习资源,班课评价,班课投诉,投诉学生,教师,班级 开题报告内容 基于Vue框架的高校学习资源共享系统开题报告 一、项目背景与意义 随着信息技术的飞速发展和教育改革的深入推进&#xff0c;…

Hadoop生态圈框架部署(二)- 配置IP地址映射为主机名及免密登录

文章目录 前言一、配置IP地址映射为主机名1. 虚拟机hadoop1配置主机名与 IP 地址的映射关系2. 虚拟机hadoop2配置主机名与 IP 地址的映射关系3. 虚拟机hadoop3配置主机名与 IP 地址的映射关系 二、配置免密登录1. 配置虚拟机hadoop1免密登录到hadoop1、hadoop2和hadoop32. 配置…

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

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

力扣题86~90

题86&#xff08;中等&#xff09;&#xff1a; python代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def partition(self, head: Optional[Li…

Python小白学习教程从入门到入坑------第十八课 异常模块与包【上】(语法基础)

一、异常 在Python中&#xff0c;异常&#xff08;Exception&#xff09;是一种用于处理在程序运行时可能发生的错误情况的机制 异常允许程序在检测到错误时不是简单地崩溃&#xff0c;而是能够优雅地处理这些错误&#xff0c;可能包括记录错误信息、清理资源、或者向用户提…

5G NR:BWP入门

简介 5G NR 系统带宽比4G LTE 大了很多&#xff0c;4G LTE 最大支持带宽为20MHz&#xff0c; 而5G NR 的FR1 最大支持带宽为100MHz&#xff0c; FR2 最大支持带宽为 400MHz。 带宽越大&#xff0c;意味了终端功耗越多。为了减少终端的功耗&#xff0c;5G NR 引入了BWP(Band Wid…

哪款宠物空气净化器能吸毛还低噪?希喂、范罗士真实测评

作为一个养宠清洁博主&#xff0c;这些年为了让家里更干净&#xff0c;让猫在家里更舒服&#xff0c;我也测了不少的清洁家电&#xff0c;其中包括洗地机、吸尘器、空气净化器以及扫地机器人等&#xff0c;其中宠物空气净化器的表现也算十分优异。 它可以快速去除空气中的浮毛…

【ComfyUI】手动安装部署ComfyUI的运行环境

如果不喜欢已有的一键启动包&#xff0c;我们可以手动的安装和部署ComfyUI的运行环境&#xff0c;相比一键安装包&#xff0c;自己部署ComfyUI 环境具有相当大的灵活性&#xff0c;其实部署ComfyUI 环境非常简单&#xff0c;不像网上说的那么复杂。下面我们就按照顺序给大家分享…

【JavaEE】【多线程】定时器

目录 一、定时器简介1.1 Timer类1.2 使用案例 二、实现简易定时器2.1 MyTimerTask类2.2 实现schedule方法2.3 构造方法2.4 总代码2.5 测试 一、定时器简介 定时器&#xff1a;就相当于一个闹钟&#xff0c;当我们定的时间到了&#xff0c;那么就执行一些逻辑。 1.1 Timer类 …

Http 状态码 301 Permanent Rediret 302 Temporary Redirect、 重定向 重写

HTTP状态码301和302是什么&#xff1f; 1、HTTP状态码301 HTTP状态码301表示永久性转移&#xff08;Permanent Redirect&#xff09;&#xff0c;这意味着请求的资源已经被分配了一个新的URI&#xff0c;以后的引用应该使用资源现在所指的URI。 HTTP 301状态码表示请求的资源…

详解PHP正则表达式中的转义操作

PHP正则表达式中的特殊字符和转义 在 PHP 正则表达式中&#xff0c;有许多特殊字符具有特定的意义。这些特殊字符通常用于定义匹配模式的一部分&#xff0c;或者改变匹配的行为。以下是 PHP 正则表达式中一些常用的特殊字符及其含义: .匹配除换行符之外的任何单个字符 ^在方括…

IDEA如何在线安装一个插件,超简单

前言 我们在使用IDEA开发Java应用时&#xff0c;经常是需要安装插件的&#xff0c;这些各种各样的插件帮助我们快速的开发应用&#xff0c;今天&#xff0c;就来介绍下如何在IDEA中安装插件。 那么&#xff0c;我们该如何安装插件呢&#xff1f; 如何安装插件 首先&#xf…

u盘装win10系统提示“windows无法安装到这个磁盘,选中的磁盘采用GPT分区形式”解决方法

我们在u盘安装原版win10 iso镜像时&#xff0c;发现在选择硬盘时提示了“windows无法安装到这个磁盘,选中的磁盘采用GPT分区形式”&#xff0c;直接导致了无法继续安装下去。出现这种情况要怎么解决呢&#xff1f;下面小编分享u盘安装win10系统提示“windows无法安装到这个磁盘…

HarmonyOS开发 - 本地持久化之实现LocalStorage实例

用户首选项为应用提供Key-Value键值型的数据处理能力&#xff0c;支持应用持久化轻量级数据&#xff0c;并对其修改和查询。数据存储形式为键值对&#xff0c;键的类型为字符串型&#xff0c;值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。 说明&#x…

重学SpringBoot3-怎样优雅停机

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

【C++初阶】模版入门看这一篇就够了

文章目录 1. 泛型编程2. 函数模板2. 1 函数模板概念2. 2 函数模板格式2. 3 函数模板的原理2. 4 函数模板的实例化2. 5 模板参数的匹配原则2. 6 补充&#xff1a;使用调试功能观察函数调用 3. 类模板3 .1 类模板的定义格式3. 2 类模板的实例化 1. 泛型编程 在C语言中&#xff0…

numpy——数学运算

一、标量——矢量 import numpy as npa 3.14 b np.array([[9, 5], [2, 7]])print(a) print(b)# ---------- 四则运算 ---------- print(a b) # np.add print(a - b) # np.subtract print(a * b) # np.multiply print(a / b) # np.divide 二、矢量——矢量 import nump…