一文读懂系列:SSL加密流量检测技术详解

SSL加密流量检测功能的主要目的是为了对加密流量做解密处理,并对解密后的流量做内容安全检查(比如反病毒、入侵防御、URL远程查询、内容过滤、文件过滤和邮件过滤等)和审计(防止信息泄露)。接下来我们详细介绍SSL加密流量检测的功能、实现原理、检测策略、典型使用场景及其限制。

1. 背景介绍

安全问题和隐私问题驱动着越来越多的网络流量开始采用SSL加密传输,早期的安全设备由于无法检测SSL加密流量的内容,不能直接对SSL加密流量做内容安全检查和审计,这就为非法用户利用SSL的加密特点进行恶意网络攻击提供了可乘之机,比如:

  • 内网用户通过加密流量下载的可执行文件中潜藏着病毒;
  • 内网用户在不知情的情况下访问了使用HTTPS协议的恶意网站;
  • 未授权的内部机密信息以加密数据传输的方式被泄露到外网。

2. SSL加密流量检测原理

安全设备(比如华为USG系列防火墙)一般会提供的SSL加密流量检测功能,可以对SSL加密流量进行解密,并对解密后的报文进行深度检测,防止恶意攻击进入企业内部或者防止企业的机密信息被非法扩散。

华为USG系列防火墙

开启加密流量检测后,设备作为SSL代理与客户端和服务器分别建立了两条连接。可以对客户端和服务器的两条连接使用的加密算法、版本进行独立的设置。

由于SSL会话协商以及后续的报文加解密都是非常耗CPU的,且安全性越高时,通常耗费的CPU等资源也越大。对于比较安全的可信内部网络,建议采用安全性较低的算法和版本;对于网络状况复杂,攻击比较多的外部网络,选择安全性高的算法和版本,达到安全与性能的平衡。

命中这些检测策略条件的报文会根据解密配置文件中设置的动作来决定允许通过还是被阻断。

SSL安全策略

在此过程中,SSL加密流量检测功能会与安全策略、内容安全检查策略发生关联,从整体上掌握SSL加密流量检测功能的处理流程。

安全策略是由流量的属性(例如五元组、用户、时间段等)和对流量执行的动作组成的控制规则,安全设备收到流量后,对流量的属性进行识别,并将流量的属性与安全策略的匹配条件进行匹配。若所有条件都匹配,则此流量成功匹配安全策略。流量匹配安全策略后,设备将会执行安全策略的动作。

五元组包括:VLAN ID、源安全区域、目的安全区域、源地址和目的地址。

内容安全策略

  • 反病毒:反病毒特性用于保护内网的用户和服务器免受病毒威胁。
  • URL过滤:URL(Uniform Resource Locator)过滤可以对用户访问的URL进行控制,允许或禁止用户访问某些网页资源,达到规范上网行为的目的。
  • DNS过滤:DNS(Domain Name System)过滤可以对用户访问的域名进行控制,允许或禁止用户访问某些网站,达到规范上网行为的目的。
  • 文件过滤:文件过滤通过阻断特定类型的文件传输,可以降低内部网络执行恶意代码和感染病毒的风险,还可以防止员工将公司机密文件泄漏到互联网。
  • 内容过滤:内容过滤可以防止机密信息的泄露及违规信息的传输。
  • 邮件过滤:对邮件收发行为进行管控,包括防止垃圾邮件和匿名邮件泛滥,控制违规收发等。

对于通过内容安全检查的流量,设备会重新加密,然后发往服务器,确保经过设备解密后的流量在离开设备时依旧安全;对于内容安全检查未通过的流量,设备会实施阻断操作,有效拦截基于SSL的加密流量攻击。

3. 典型使用场景

3.1. 通过SSL加密流量检测功能保护客户端

此场景中,设备需要对加密流量进行安全检测,防止企业敏感信息通过加密方式传输出去,造成信息的泄露,还可以保护内网用户免受外部恶意网站的攻击。

内网用户访问外部恶意服务器

如上图所示,位于Internet的某HTTPS服务器是一个恶意网站,内网用户在不知情的情况下通过客户端向该网站发起了访问请求。管理员为了保护内网用户不受外部恶意网站侵害,在设备配置了SSL加密流量检测功能。当用户的访问请求到达设备时,设备首先对该访问请求进行解密,然后通过配置内容安全检查功能,设备可以对解密后的访问请求报文进行入侵防御、反病毒和URL过滤等检查,能识别出该地址为恶意网站地址,并对该访问实施阻断操作,起到保护内网用户的作用。

注:此场景中,设备部署在SSL客户端所在网络中,当SSL客户端访问服务器的请求经过设备时,设备作为代理对流量进行解密并进行安全检查,确保访问目标安全后再放行,达到保护客户端的目的。

设备作为客户端和服务器的中间人,在收到客户端请求后,代理客户端和服务器侧建立连接,自己同时作为服务器和客户端建立连接。由于实际上设备把SSL的握手变成了两个完全独立的过程,因此,设备作为中间人可以完全获得和客户端、服务器的交互内容,从而达到对内容进行处理的目的。

保护客户端场景中SSL报文交互流程图

设备在启用SSL解密功能后,客户端通过浏览器访问HTTPS类网站时,会弹出服务器证书不是由受信任机构颁发的告警信息,甚至有些应用程序不提示告警信息就直接中断了连接,影响用户的正常使用。

为了解决通信中断问题,设备需要使用SSL解密证书签发一个服务器证书,然后发给客户端进行验证,这样才能对客户端发送的流量进行解密。为了让客户端能够信任此服务器证书,就还需要在客户端下安装SSL解密证书。

注:通过企业已有的AD域认证系统,可以实现证书的自动分发和安装,只需要企业管理员直接在AD服务器部署一次即可,终端用户无感知。

经过以上介绍,在企业中大家发现自己浏览器地址栏中🔒图标中的证书是公司自签名证书颁发的就不会再觉得奇怪了,因为我们实际访问的服务端是防火墙设备代理的。

3.2. 通过SSL加密流量检测功能保护服务端

此场景中,设备需要对外部的加密流量进行安全检测,保护企业内部服务器的安全。

恶意用户访问公司内部服务器

如上图所示,位于Internet的一个恶意用户通过HTTPS客户端向HTTPS服务器上传病毒文件。网络管理者为了保护HTTPS服务器不受外部病毒侵害,在设备首先对访问数据进行解密,然后再对解密后的数据做内容安全检查,一旦发现用户发来的流量中携带有病毒,SSL加密流量检测功能就会阻断该流量,起到保护内网服务器的作用。

注:此场景中,设备部署在SSL服务器所在网络中,当SSL客户端访问服务器的请求经过设备时,设备作为代理对流量进行解密并进行安全检查,确保访问流量安全后再放行,达到保护服务器的目的。

保护服务器场景中SSL报文交互流程图

设备与服务器建立SSL连接过程中,需要获取到服务器的证书供客户端验证,这样才能对客户端发送的流量进行解密。因此需要获取到服务器证书及证书的私钥,并导入到设备。

4. 使用限制

4.1. 不支持双向认证场景

服务器要求验证客户端证书的场景不建议使用SSL解密功能。

例如,用户访问银行或者社保类等涉及个人隐私安全的网站时,通常服务器会要求验证客户端的证书。如果使用SSL解密功能可能会存在客户端证书校验失败导致客户端不能访问服务器的情况,需要直接透传这些流量。

4.2. 不支持某些特殊场景

对于一些浏览器没有预置/导入服务器CA证书的场景,或某些软件APP预置固定的公钥场景,不能使用SSL加密流量检测功能。因为设备自己推送给客户端的证书无法通过客户端的校验,导致连接异常中断。

此时,可以通过配置SSL域名白名单或配置URL分类不解密的方法,直接透传客户端和服务器的SSL连接。

注:SSL域名白名单仅在保护客户端场景下使用。

参考链接

  • https://support.huawei.com/hedex/hdx.do?docid=EDOC1100149311&id=ZH-CN_CONCEPT_0178935621
  • https://support.huawei.com/hedex/hdx.do?docid=EDOC1100386427&id=ZH-CN_CONCEPT_0000001564126337
  • https://support.huawei.com/hedex/hdx.do?docid=EDOC1100386427&id=ZH-CN_CONCEPT_0000001513046266

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

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

相关文章

dependencyManagement保持maven的多模块依赖版本一致

在maven的多模块中, 为保持jar包在每个子模块中版本一致, 一般会有两种选择: 在父pom的dependencies标签中声明一个jar,每个子模块都会默认继承该jar 如果只有部分子模块用到了一个jar, 则会选择将该jar坐标信息声明在父pom的dependencyManagement标签中…

axis 参数的方向

axis0:表示沿着行的方向进行操作,即对每一列进行操作。 axis1:表示沿着列的方向进行操作,即对每一行进行操作。 示例: import numpy as np# 创建一个二维数组 array np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9] ])axis0…

golang的循环引用解决方法

循环引用是指在数据结构中,两个或多个实体相互引用,形成一个闭环。例如,在 Golang 的结构体中,如果结构体 A 包含结构体 B 的实例,而结构体 B 又包含结构体 A 的实例,这种情况就称为循环引用。以下是关于循…

【C++】关联式容器

1.Set和Map 1.1 set的介绍 set是一个常用的关联式容器,它存储唯一的元素,这些元素默认情况下按照升序排序。其底层是一种自平衡的二叉搜索树(红黑树)。 set元素的键值就是实值,实值就是键值。set的元素允许插入删除但是不允许修改(具有const…

Spring Cloud Function快速入门Demo

1.什么是Spring Cloud Function? Spring Cloud Function是一个具有以下高级目标的项目: 通过功能促进业务逻辑的实现。将业务逻辑的开发生命周期与任何特定的运行时目标脱钩,以便可以将相同的代码作为Web终结点,流处理器或任务来…

第3章 继承与多态

Java面向对象程序设计-T3(继承与多态) 一、封装 1、概述 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 public class Student {//1、私有化属性private String name;private int age;//2、提供公共方法供外部访问//传入数据public void setName(String nam…

荣誉证书PSD素材(59套免费)

本作品提供荣誉证书PSD素材下载,格式为PSD; 请使用软件Photoshop进行编辑,作品中文字及图均可以通过软件修改和编辑; 点击下载: 荣誉证书PSD素材

Java三大特性之多态

多态是Java的三大特性之一,它指的是同一个方法名字,在不同的对象中有不同的实现方式。具体来说,多态有两种表现形式:静态多态(编译时多态,也称为重载)和动态多态(运行时多态&#xf…

第T6周:Tensorflow实现好莱坞明星识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标 具体实现 (一)环境 语言环境:Python 3.10 编 译 器: PyCharm 框 架: (二)具体步骤 1.查询…

Spring6框架搭建(自用)

一、什么是Spring 众所不周知,Spring就是爪哇人的春天,但是在框架程序设计之前都绕不开javaWeb 1.javaWeb框架发展史 1、ServletJSPJavaBean(跳转页面、业务逻辑判断、数据库查询) 2、MVC三层架构(M Model pojo(User)V-view(USP)C-(controller-servl…

linux-UART

参考博客 https://blog.csdn.net/m0_38106923/article/details/126024970?sharetypeblog&shareId126024970&sharereferAPP&sharesourceweixin_40933496&sharefromlink 1.串口 UART的全称是Universal Asynchronous Receiver and Transmitter,即异步…

大数据治理:策略、技术与挑战

随着信息技术的飞速发展,大数据已经成为现代企业运营和决策的重要基础。然而,大数据的复杂性、多样性和规模性给数据管理带来了前所未有的挑战。因此,大数据治理应运而生,成为确保数据质量、合规性、安全性和可用性的关键手段。本…

vue插件清除 所有console.log()

一、作用 1、提升性能console.log() 语句会消耗一定的性能,尤其是在频繁调用的情况下。在生产环境中移除这些语句可以提高应用的运行效率。 2、减少信息泄露console.log() 可以输出敏感信息(如用户数据、API 响应等)。在生产环境中&#xf…

DAY15|二叉树Part03|LeetCode: 513.找树左下角的值、112. 路径总和、106. 从中序与后序遍历序列构造二叉树

LeetCode: 513.找树左下角的值 力扣代码链接 文字讲解:LeetCode: 513.找树左下角的值 视频讲解:怎么找二叉树的左下角? 递归中又带回溯了,怎么办? 基本思路 对题目进行一下分析,要找二叉树最底层最左边节点…

【记录】Excel 公式|(一)根据某列内容和关键词列,自动生成当前行的关键词分类名称

文章目录 引言公式解析应用场景数据准备公式应用结果分析 结论扩展应用注意事项总结后续学习结语 我的 Excel 版本:2021 引言 在当今数据驱动的世界中,高效的数据处理和分类对于企业和个人来说至关重要。Excel 作为最常用的数据处理工具之一&#xff0c…

【ROS2】hbm_img_msgs/msg/HbmMsg1080P 转 opencv cv::Mat

1、简述 在ROS2中处理图像时,经常会用的OpenCV,因此常常会涉及到ROS2话题和cv::Mat的转换 ROS2内置消息 sensor_msgs::msg::Image 可以使用 cv_bridge 转换成 OpenCV的 cv::Mat。 参见博客:【ROS2】cv_bridge:ROS图像消息和OpenCV的cv::Mat格式转换库 在使用地平线X3派时…

ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力

新版本发布 ClkLog在上线近1年后,获得了客户的一致肯定与好评,并收到了不少客户对功能需求的反馈。根据客户的反馈,我们在今年三季度对ClkLog的版本进行了重新的规划与调整,简化了原有的版本类型,方便客户进行选择。 与…

C++:set和map的使用

目录 序列式容器和关联式容器 set set类的介绍 构造和迭代器 增删查 insert find和erase erase迭代器失效 lower_bound与upper_bound multiset和set的区别 map map类的介绍 pair类型介绍 构造和迭代器 增删查 map数据修改:重载operator[] multimap…

Unix和Linux系统中的文件权限

详细解释Unix和Linux系统中的文件权限设置以及如何使用chmod命令来修改这些权限。 文件权限的详细解释 在Unix和Linux系统中,文件权限是控制谁可以访问和操作文件或目录的重要机制。权限分为三类:所有者(owner)、所属组&#xf…

el-tree展开子节点后宽度没有撑开,溢出内容隐藏了,不显示横向滚动条

html结构如下 <div class"tree-div"><el-tree><template #default"{ node, data }"><div class"node-item">...</div></template></el-tree></div> css代码(scss) .tree-div {width: 300px;…