一文读懂系列:SSL加密流量检测技术详解
SSL加密流量检测功能的主要目的是为了对加密流量做解密处理,并对解密后的流量做内容安全检查(比如反病毒、入侵防御、URL远程查询、内容过滤、文件过滤和邮件过滤等)和审计(防止信息泄露)。接下来我们详细介绍SSL加密流量检测的功能、实现原理、检测策略、典型使用场景及其限制。
1. 背景介绍
安全问题和隐私问题驱动着越来越多的网络流量开始采用SSL加密传输,早期的安全设备由于无法检测SSL加密流量的内容,不能直接对SSL加密流量做内容安全检查和审计,这就为非法用户利用SSL的加密特点进行恶意网络攻击提供了可乘之机,比如:
- 内网用户通过加密流量下载的可执行文件中潜藏着病毒;
- 内网用户在不知情的情况下访问了使用HTTPS协议的恶意网站;
- 未授权的内部机密信息以加密数据传输的方式被泄露到外网。
2. SSL加密流量检测原理
安全设备(比如华为USG系列防火墙)一般会提供的SSL加密流量检测功能,可以对SSL加密流量进行解密,并对解密后的报文进行深度检测,防止恶意攻击进入企业内部或者防止企业的机密信息被非法扩散。
开启加密流量检测后,设备作为SSL代理与客户端和服务器分别建立了两条连接。可以对客户端和服务器的两条连接使用的加密算法、版本进行独立的设置。
由于SSL会话协商以及后续的报文加解密都是非常耗CPU的,且安全性越高时,通常耗费的CPU等资源也越大。对于比较安全的可信内部网络,建议采用安全性较低的算法和版本;对于网络状况复杂,攻击比较多的外部网络,选择安全性高的算法和版本,达到安全与性能的平衡。
命中这些检测策略条件的报文会根据解密配置文件中设置的动作来决定允许通过还是被阻断。
在此过程中,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解密功能后,客户端通过浏览器访问HTTPS类网站时,会弹出服务器证书不是由受信任机构颁发的告警信息,甚至有些应用程序不提示告警信息就直接中断了连接,影响用户的正常使用。
为了解决通信中断问题,设备需要使用SSL解密证书签发一个服务器证书,然后发给客户端进行验证,这样才能对客户端发送的流量进行解密。为了让客户端能够信任此服务器证书,就还需要在客户端下安装SSL解密证书。
注:通过企业已有的AD域认证系统,可以实现证书的自动分发和安装,只需要企业管理员直接在AD服务器部署一次即可,终端用户无感知。
经过以上介绍,在企业中大家发现自己浏览器地址栏中🔒图标中的证书是公司自签名证书颁发的就不会再觉得奇怪了,因为我们实际访问的服务端是防火墙设备代理的。
3.2. 通过SSL加密流量检测功能保护服务端
此场景中,设备需要对外部的加密流量进行安全检测,保护企业内部服务器的安全。
如上图所示,位于Internet的一个恶意用户通过HTTPS客户端向HTTPS服务器上传病毒文件。网络管理者为了保护HTTPS服务器不受外部病毒侵害,在设备首先对访问数据进行解密,然后再对解密后的数据做内容安全检查,一旦发现用户发来的流量中携带有病毒,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
相关文章:

一文读懂系列:SSL加密流量检测技术详解
SSL加密流量检测功能的主要目的是为了对加密流量做解密处理,并对解密后的流量做内容安全检查(比如反病毒、入侵防御、URL远程查询、内容过滤、文件过滤和邮件过滤等)和审计(防止信息泄露)。接下来我们详细介绍SSL加密流…...
Android Studio各种历史版本
下载地址:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载...

大数据导论及分布式存储HadoopHDFS入门
思维导图 数据导论 数据是什么? 进入21世纪,我们的生活就迈入了"数据时代" 作为21世纪的新青年,"数据"一词经常出现。 数据无时无刻的在影响着我们的现实生活 什么是数据? 数据又如何影响现实生活? 数据…...
语言模型的采样方法
语言模型的采样方法 语言模型的输出为一个向量,该向量的每一维代表着词典中对应词的概率。 在采用自回归范式的文本生成任务中,语言模型将依次生成一组向量并将其解码为文本。将这组向量解码为文本的过程被成为语言模型解码。 解码过程显著影响着生成文本…...
使用 Nginx 配置真实 IP 地址转发
使用 Nginx 配置真实 IP 地址转发 在许多 web 应用程序中,获取客户端的真实 IP 地址非常重要,尤其是在使用反向代理服务器(如 Nginx)时。本文将指导你如何在 Nginx 中配置 X-Real-IP 和 X-Forwarded-For 头部,以确保你…...

WPF+MVVM案例实战与特效(二十四)- 粒子字体效果实现
文章目录 1、案例效果2、案例实现1、文件创建2.代码实现3、界面与功能代码3、总结1、案例效果 提示:这里可以添加本文要记录的大概内容: 2、案例实现 1、文件创建 打开 Wpf_Examples 项目,在 Views 文件夹下创建窗体界面 ParticleWindow.xaml,在 Models 文件夹下创建粒子…...

Oracle视频基础1.4.3练习
15个视频 1.4.3 できない dbca删除数据库 id ls cd cd dbs ls ls -l dbca# delete a database 勾选 # chris 勾选手动删除数据库 ls ls -l ls -l cd /u01/oradata ls cd /u01/admin/ ls cd chris/ ls clear 初始化参数文件,admin,数据文件#新版本了…...

energy 发布 v2.4.5
更新内容 修复 energy cli install 命令安装开发环境 修复 动态库加载error未暴露 增加 JS ipc.on 监听模式,异步返回结果 修复 energy cli 不能强制退出问题 修复 MacOS 开发模式 debug 时不更新 helper 进程 优化 energy cli 在 MacOS 开发模式和安装包制作 link…...

一文详解工单管理系统,工单系统是什么意思
在现代企业管理中,工单管理系统已经成为提升效率和客户满意度的重要工具。随着企业规模的扩大和业务复杂性的增加,传统的手工工单处理方式已经无法满足企业的需求。本文将详细解析工单管理系统的定义、功能、优势,并推荐一款优秀的工单管理系…...

【无标题】基于SpringBoot的母婴商城的设计与实现
一、项目背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前,…...
你需要了解的Android主题相关知识
在 Android 开发中,主题(Theme)是用于定义应用的视觉风格的一组样式集合。主题决定了应用的配色、字体样式、控件外观等,是整个应用的一致性视觉体验的重要组成部分。以下是对 Android 主题的全面介绍,包括主题的基础概…...

基于Multisim数控直流稳压电源电路(含仿真和报告)
【全套资料.zip】数控直流稳压电源电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.输出直流电压调节范围5-12V。 2.输出电流0-500mA。 3.输出直流电压能步进调节,步…...

精读预告Bigtable
文章目录 1. 引言:2. 背景 1. 引言: 在本期的精读会中,我们将深入解读另一篇具有里程碑意义的论文——《Bigtable: A Distributed Storage System for Structured Data》。这篇论文详细介绍了 Bigtable 作为谷歌用于管理结构化数据的分布式存…...

软件架构演变:从单体架构到LLM链式调用
0 前言 软件架构——我们数字世界的蓝图——自20世纪中叶计算机时代诞生以来,已经发生了巨大演变。 20世纪60年代和70年代早期,以大型主机和单体软件为主导。而今天,数字领域已完全不同,运行在由云计算、API连接、AI算法、微服务…...

Redis-“自动分片、一定程度的高可用性”(sharding水平拆分、failover故障转移)特性(Sentinel、Cluster)
文章目录 零、写在前面一、水平拆分(sharding/分片)、故障转移(failover)机制介绍水平拆分(Sharding)故障转移机制 二、Redis的水平拆分的机制有关的配置1. 环境准备2. 配置文件配置3. 启动所有Redis实例4. 创建集群5. 测试集群读/写6. 集群管理 三、Red…...
操作系统(9) (并发-----原子性/互斥临界区/生产者消费者问题/临界区问题三条件/互斥性/进展性/公平性)
目录 1. 并发(Concurrency)的定义 2. 原子性(Atomicity) 3. 互斥(Mutual Exclusion) 4. 生产者-消费者问题(Producer-Consumer Problem) 5. 临界区Critical Section 6. 临界区问题…...
Django响应
HTTPResponse: 是由Django创造的, 他的返回格式为 HTTPResponse(content响应体,content_type响应体数据类型,status状态码), 可以修改返回的数据类型,适用于返回图片,视频,音频等二进…...

算法:图的相关算法
图的相关算法 1. 图的遍历算法1.1 深度优先搜索1.2 广度优先搜索 2. 最小生成树求解算法普里姆(Prim)算法克鲁斯卡尔(Kruskal)算法 3. 拓扑排序4. 最短路径算法 1. 图的遍历算法 图的遍历是指从某个顶点出发,沿着某条搜索路径对图中的所有顶点进行访问且只访问次的…...
django的models使用介绍。
from django.db import modelsfrom utils.models import CommonModel# Create your models here. class User(CommonModel):#用户数据模型username models.CharField(用户名,max_length32, uniqueTrue)password models.CharField(密码,max_length256)nickname models.CharFi…...

【分布式技术】分布式事务深入理解
文章目录 概述产生原因关键点 分布式事务解决方案3PC3PC的三个阶段:3PC相比于2PC的改进:3PC的缺点: TCCTCC事务的三个阶段:TCC事务的设计原则:TCC事务的适用场景:TCC事务的优缺点:如何解决TCC模…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...