开源 | 爱奇艺网络流量分析引擎QNSM及其应用

article/2025/11/4 23:16:08

▌导读

一定业务规模的互联网公司的基础设施的网络边界通常都呈现一定程度的复杂多分区的情况,如何进行有效的安全防护和控制会成为安全体系建设的重点和难点。面对这一挑战,爱奇艺安全团队自研了网络流量分析引擎QNSM,并将其用在各种基于流量分析的跨区安全检测和控制场景中,成为了爱奇艺安全防御体系的关键基础引擎。本文是根据爱奇艺高级总监卢明樊在 QCon 全球软件开发大会(上海站)2019 分享《爱奇艺网络流量安全检测能力建设实践》部分内容整理而成。

 

▌互联网企业边界复杂性

上图是典型的中大型互联网公司的网络架构,通常分为:

·  办公网络,可能还有如右下角的众多小的分支机构,甚至还有办公机房

·  核心数据中心, 这些数据中心机房可能分布在全国多个地方,并通过专线实现互连,在这个基础上构建了自己的私有云。

·  CDN网络,这些CDN节点和核心机房也存在一定的互连。

·  如果使用公有云基础服务,呈现混合云的模式,这些基础服务与核心数据中心存在互连。

·  上述大量的分区都可能通过不同的方式接入到互联网。

·  最后,BYOD和各种无线热点以及手机无线热点等出现,导致呈现了大量碎片化的所谓新边界。

对企业安全防御而言,带来了各种新的挑战:

·  安全防御变得碎片化和多层次化,大边界内部还可能出现更多的小边界。

·  单个边界可能流量会非常大,特别是互联网互联的边界,100Gps以上成为常态,如果在这些边界进行流量检测,要求流量检测要具备高性能和很好的水平扩展能力,随时应对边界流量的扩展。

·  企业面临的内外威胁依旧很严峻,流量型攻击,漏洞型攻击,边界突破渗透,内部人员的泄露、破坏和控制都是普遍存在。

·  安全防御的体系也在逐步演化,从单纯的边界防御、结合多层次内部防御的纵深防御、以及立足于零信任或者假设失陷的下紧扣角色和权限的安全模型都在推动我们安全防御在不断的升级迭代来应对日益严峻的威胁。安全防御体系的演化不代表边界消失了,边界防御依旧是基础和重要一环,有效地流量分析和控制成为了新的安全防御体系重要的数据源和关节可编排的控制点。

因此,我们自研了旁路流量分析引擎QNSM(iQiYi Network SecurityMonitoring),通过对业务流量和旁路流量的协同分析,并集成多种可调度的防护能力,协同应对多种类型和多种层次的攻击,并且安全运营体系打通,从接入、预案、响应、联动、防御、溯源逐步形成闭环。

▌QNSM简介

全流量分析是非常重要的, 可以用来进行资产发现、网络监控和可视化,对安全而言,通过对网络流量的分析,对流量构建基线建模,从流量中可以发现异常、风险以及检测攻击,从流量中也可以实现数据内容提取,发现潜在的敏感数据流动或者泄露,还可以进行ACL策略校对,并将网络流量产出的数据特征通过机器学习和专家分析,可以挖掘更多的信息以及进行取证溯源和事件回查。

QNSM(iQIYI Network Security Monitor)设计目标是成为一个全流量,实时,高性能网络安全监控引擎,高性能、实时性、可扩展、多元特征提取是我们需要的关键特性。

·  高性能: 基于DPDK(https://www.dpdk.org/)利用普通x86服务器即可高速处理10Gbps以上的流量,绕过了内核复杂的协议栈,并采用轮询的方式收发数据包,基于主从和流水线架构,无锁化设计。

·  扩展性强:旁路部署, 结合分光分流可以支持多机快速横向扩展,自身的流水线设计也可以方便实现自定义组件的插入,并且提供基于配置文件的统一资源管理模型,包括队列,CPU,MEMPOOL等,能够快速组建数据交换网络,加速开发进程。

·  多元特征: 多种维度的DDoS检测特征数据,支持基本的DFI/DPI,以库文件形式实现的Suricata IDPS集成,支持ipv4和ipv6双协议。

·  实时性: 集成IDPS实时检测,DDoS检测支持以10s(可调整)周期输出聚合数据,提取的多元特征可以通过Kafka和安全智能分析服务实现对接并进行后续分析。

▌QNSM架构设计

如上图所示,QNSM是作为服务软件运行在普通多核X86服务器上,每一个服务器可以有多块万兆网卡,并且通过分光或者交换端口镜像的方式获得要分析的网络流量,如果流量比较大,可以进一步通过分流器进行分流,将流量分散到不同的服务器上进行分析,进而QNSM利用DPDK实现了多个多核处理器和多个多队列网卡实现了高速包处理,其高性能来自于:

·  零拷贝(Zero-copy)

·  预取、批量收包来减少cache miss和提高吞吐

·  Share Nothing的设计模式实现无锁、无CPU切换

·  充分利用网卡的RSS特性,收包队列和CPU核绑定


1、基础库

QNSM在DPDK的基础上封装构建了各种基础库为构建上层流水线提供了基础能力,包括:

·  PORT:对网卡队列和核心之间ring队列的逻辑封装,是实现并行处理和线性扩展的基础。

·  MSG:封装了支持回调的CPU核心之间的传递的通信消息,这些消息可以是策略消息也可以是数据消息,这种无阻塞的核间消息支持一对一和一对多通信,实现数据和控制平面分开,数据集的输出和包处理分开。

·  ACL: 是支持回调的五元组的策略描述,例如要指定满足怎么样的策略的包要聚合、处理、dump等操作。

·  TBL: 是对DPDKrte_hash表的封装,是数据集的存储,提供CURD操作接口,实现基于mempool的表项资源分配。

·  SCHED: 是对工作线程的封装,支持自定义的包处理,策略执行,自定义计算逻辑,消息分发和定时回调等。


2、流水线

QNSM构建了不同的流水线组件来满足不同场景的安全应用,为了支持更多的安全应用场景,我们可以在基础库的基础上构建更多的流水线组件,进而实现网络流量多样的处理能力。

·  SESSM:负责包解析,flow数据聚合和复制转发,处理策略消息等。

·  SIP_AGG:是对源IP进行特征聚合和输出,在攻击时通过响应策略消息打开。

·  VIP_AGG:实现目标VIP(需要保护的业务IP)的自学习,以及基于目标VIP的进行特征提取和向EDGE输出。

·  DUMP:保存数据包为PCAP文件供后续的事件回溯,在攻击时通过响应策略消息打开。

·  EDGE: 负责将上游组件发送的多维数据输出到外部Kafka供进一步分析。

·  DETECT: 集成Suricata库,支持IDPS的检测。

基于QNSM现有的流水线组件,我们已经将其应用在DDoS攻击检测,IDPS检测防护,流量监控以及网络DLP等多种场景,并支撑了各种上层安全产品的开发。大家可以根据自己不同安全应用的需要,设计和插入自开发的组件。

3、控制层

Master是整个引擎的主控,通过Kafka接收从管理平台接收策略消息,并下发到流水线组件实现对流水线的配置和处理控制。

4、安全应用

上图展示了在爱奇艺如何应用QNSM来满足各种安全需求,爱奇艺的QNSM服务节点分布在各个网络分区的边界上,并通过边控中心来进行管理和维护。边控中心(Aegis)是爱奇艺网络安全防护的核心服务,它有如下功能:

·  管理配置所有的QNSM集群,通过Kafka 和QNSM的进行控制交互

·  通过IDPS网关实现管理和配置QNSM集成的IDPS(Suricata)

·  作为爱奇艺WAF的统一服务后台,这里不做重点介绍

·  爱奇艺内部的安全大数据分析引擎结合威胁情报等外源数据,对从QNSM集群EDGE组件输出到Kafka的数据进行分析处理,产出的网络攻击事件会发送边控中心,边控中心会根据策略进一步和态势感知系统对接,进而和安全运营系统对接实现闭环运营。

·  边控中心可以按事件驱动QNSM dump网络流量成PCAP文件,并ETL进Moloch ( https://github.com/aol/moloch a largescale, open source, indexed packet capture and search system)建立包索引,方便对事件进行包级别的分析和溯源。

我们将会在后续的分享文章中具体介绍边控中心的架构和设计,这里不再赘述。下面,简单介绍我们是如何利用QNSM来满足我们DDoS攻击检测和扩展支持IDPS能力的需求。

4.1 DDoS攻击检测

业务接入边控中心,会提供要保护的VIP(Virtual IP),此外QNSM也会主动发现流量中的目标VIP并且和CMDB进行比对发现属于待保护的VIP。DDoS攻击检测方法主要是要基于受保护的VIP为目标的流量进行聚合特征数据供安全大数据分析引擎进行判断以实现DDoS检测。整体的检测思路是构建目标VIP以及所在机房的流量基线,计算流量特征,并进行多维异常检测识别攻击,常见的流量基线是包括VIP和本机房的成分基线以及机房流量基线和流量上边界,通过当前流量与基线进行实时计算,构建表示当前流量与基线的偏离的多维指标特征,并利用解释性强的模型来进行检测判断(例如评分卡模型等),并且会采取边控中心运营对事件的正负反馈来进一步修正基线和训练模型。

通过前面的多维异常检测识别出流量攻击以后,边控中心收到攻击事件和报警后会立即采取如下行动:

·  边控中心通过Kafka向Master组件下发各种策略消息管理和指导流水线的工作,包括dump数据包取证,攻击源IP发现,攻击源端口提取,反射攻击协议DFI等策略消息。

·  Master组件根据策略唤醒SIP_AGG组件,DUMP组件,其中SIP_AGG组件基于源IP聚合特征数据(可用于协助发现后续攻击来源IP), DUMP组件会进行dump数据包,dump出的PCAP文件投递到Moloch进一步索引和进行专家分析。

·  VIP_AGG组件基于VIP+SPORT聚合特征数据,SESSM组件也会针对被攻击VIP 做协议DFI识别,以协助识别是否存在某类协议的反射攻击。

·  QNSM通过EDGE组件,聚合数据进入到Kafka,可以作为安全大数据分析的数据源,并且和其他不同的安全服务进行联动。

·  DDoS攻击结束,边控中心通过Kafka向Master组件下发策略关闭消息管理和指导流水线中的重度组件工作。

在检测出VIP的入口流量存在攻击的情况下,通常需要进一步判断该攻击是否为反射攻击,我们会利用QNSM产出的VIP+SPORT聚合特征数据以及 SESSM组件的DFI协议识别特征数据,在安全大数据引擎计算不同的源端口的流量占比分布和包占比分布等特征进而计算熵值,熵值越小,风险越高(占比越高,风险越高, 流量和包占比如果全部集中在一个端口,熵将会是0),我们会结合多维度特征构建评分卡模型,最终给出是否是某一类协议的反射攻击的判定。

攻击确定以后,会根据应急预案进行流量牵引,爱奇艺构建了私有的流量清洗中心,并结合云清洗和运营商的近源清洗形成了三位一体的清洗能力。

4.2 IDPS能力集成

Suricata是一种基于网络流量的IDPS引擎,它有广泛的规则集来监控网络流量,并在发生入侵事件时触发警报, QNSM使用库文件的方式将Suricata集成,并通过IDPS网关接收边控中心下发更新Suricata相关检测规则,从SESSM组件复制转发过来的包会通过Detect组件调用Suricata进行处理,实现实时检测和触发事件和告警,并通过Kafka将事件和告警输出到安全大数据分析引擎进行进一步分析处理。通过对Suricata的集成,QNSM可以兼容大量开源和自定义的IDPS规则集,并且规则管理方式保持完全一致。

利用Suricata的DFI能力,QNSM也快速扩展支持从流量中识别各类数据库,缓存等云服务访问流量的能力,并且支持从流量中提取文件信息(包括文件名,文件大小,文件类型,MD5等),通过Kafka输出到安全大数据分析引擎,最终实现向DLP平台(绿盾)输出数据泄露和违规访问事件。

目前支持了爱奇艺内部常见的HTTP, MySQL,Redis,CouchBase, Memcached,MongoDB,Elasticsearch,Kafka,VNC,RSYNC等多种协议和相关工具的识别,支持对HTTP,SMTP,FTP文件传输通道的监控。

▌开源

目前QNSM 已经应用到爱奇艺包括DDOS攻击检测检测、IDPS、网络DLP等多种安全检测场景,累计部署22+集群共计130+分析节点,总分析带宽容量达到1TBps。

我们需要大家和我们一起改进QNSM,让它变得更强大,非常欢迎更多的合作和贡献,覆盖更多的甚至不限于安全应用的场景。

目前,QNSM 项目剔除了和爱奇艺内部平台深度集成部分后,核心代码开源在GitHub:https://www.github.com/iqiyi/qnsm,欢迎使用、报告Issues 和 提交 Pull-Request。

我们采用Git work-flow的工作方式,具体可以参考开源代码中的Contributing文档,欢迎更多的开发者的参与,也欢迎通过邮件组: qnsm_devel#qiyi.com (请用@替换#)和我们进行交流。

▌后续规划

后续,爱奇艺安全团队针对QNSM会继续优化,开发计划如以下几部分:

·  增强易用性,让配置使用更加简单

·  进一步优化性能和降低资源占用

·  增加加密流量的非内容和内容特征的分析能力

·  高级DPI和DFI能力

·  支持netflow等多种标准输出

·  Bro/Zeek的集成以及沙箱分析的集成

·  旁路TAP(分流)以及串联Firewall(过滤)能力

·  扩展到更多场景,例如给业务安全和智能运维赋能等

·  逐步开放边控中心的集群管理、监控和事件处置能力

      后续会逐步将最新的进展同步到开源社区。

也许你还想看

开源 | FASPell: SOTA高性能的简繁中文拼写检查工具

开源|爱奇艺开源基于Android App Bundle动态化方案Qigsaw


扫一扫下方二维码,更多精彩内容陪伴你!



http://chatgpt.dhexx.cn/article/FZAflBWL.shtml

相关文章

网络攻击与防御之网络流量分析实验

实验一 网络流量分析 本次实验所使用到的主要软件包括:虚拟机(VMware/VirtualBox), 流量分析软件(Wireshark, Zeek或科来网络数据包分析软件),网络扫描工具nmap,浏览器(Chrome或IE)。 每个题目给出主要操作步骤、截图和分析。 一. 虚拟机环…

网络流量分析之流量采集到流量还原

网络流量贯穿业务流转的各个环节,从我们个人PC、手机,到IDC数据中心、WEB和APP应用等都需要通过网络流量完成数据交互。因此,根据"只要有攻击就会有流量产生"这样的朴素道理,无论是网络层的防DDoS、主机层的防入侵还是应…

网络流量分析系统的价值

一、网络流量分析技术介绍 1.1什么是网络流量分析? 网络流量分析是记录和分析网络流量以出于性能、安全性、网络操作、管理和排障为目的分析网络流量的过程。它是使用自动技术检查网络流量中的详细级别细节和统计信息的过程。 1.2网络流量分析技术的作用 网络流量分…

网络流量分析技术

网络流量分析技术 实验目的实验内容实验文件中涉及的相关协议攻击与防御方法1.攻击:2.应对的防御方法: 实验目的 利用Wireshark网络分析工具分析关于“极光攻击”的实验文件,分析实验文件中涉及的相关协议以及攻击与防御方法等内容。 实验内…

网络流量分析详解(包含OSI七层模型、TCP协议及Wireshark工具用法)

网络流量分析 Network Traffic Analysis(NTA) 这个系列讲的是整个网络流量分析流程,其中包含TCP协议、HTTP协议详解和Wireshark、Tcpdump的详细用法,现在只完成了其中一部分内容,每周更新,感兴趣的可以持续关注一下~ 内容比较杂…

Unity引擎基础补充

Unity引擎基础补充 本博客将对之前的Unity脚本,3D数学基础博客内容做一定的补充。所以部分知识点可能并不全。 使用Unity的API,我们要清楚各个参数其代表的含义。 文章目录 Unity引擎基础补充3D数学基础Math和Mathf的区别Lerp 3D数学向量向量模长&…

Unity引擎

------ Oracle中文开发者社区 ------ 如果你想要学习编程,关注本博客,持续获得技术支持,持续获得技术咨询 java开发企业官方账号 Oracle中国官方账号 Java中国管理部 全网粉丝30万 华为云享专家 阿里专家博主 CSDN内容合伙人 CSDN原力计划作者 51CTO专家博主 CSDN博客V账号 …

unity教程之Unity引擎

中国传媒大学老师所主讲的,所用到的unity版本为2018版unity教程之用到的资源也都提供了下载链接,视频的时长大部分控制在20-40分钟之内,此课程讲解了地形,脚本,动画,图形渲染,物理系统&#xff…

Havok物理引擎与Unity3D的结合

背景  在重度手游的研发过程当中,游戏中的车辆模拟,场景互动,特效展示等功能很多时候需要物理引擎的介入,以提供丰富的交互体验。目前3D手游的开发主要工具是使用Unity3D引擎,于是,如何在Unity3D的开发过…

unity物理引擎介绍

早期的游戏并没有强调物理引擎的应用,当时无论是哪一种游戏,都是用极为简单的计算方式做出相应的运算就算完成物理表现,如超级玛丽和音速小子等游戏。 较为常见的物理处理是在跳跃之后再次落到地上,并没有特别注重物理表现效果。…

Unity3d物理引擎

一、定义 物理引擎就是在游戏中模拟真实的物理效果,比如,场景中有一个立方体和一个球体,球体在空中,立方体在地面倾斜放置,在空中的球体开始自由下落,然后与地面上的立方体对象发生碰撞,而物理…

Unity和UE4两大游戏引擎,你该如何选择?

目录 游戏引擎 2 ——> 难易区别 编程语言 3 ——> 游戏产品 UE4制作的游戏产品 Unity制作的游戏产品 产品类型 5 ——> 资源商店 6 ——> 人才需求 平均薪资 总结 游戏引擎 Unity和UE4都是游戏引擎,所谓游戏引擎就是集成了复杂功能的游戏…

赞美之外,Unity引擎3D引擎存在什么弊病?

由于手游业界各大公司对该引擎的认可和追逐,自2013年开始,Unity大会成为了行业内最火爆的大会之一。在信息丰富的网络上,我们可以看到满屏的Unity教程和优点的介绍,但这款引擎是否存在着弊病呢?带着这个问题,我们采访…

Unity3d是目前主流的游戏开发引擎

Unity3d是目前主流的游戏开发引擎,它提供了一个整合的编辑器、跨平台发布、地形编辑、着色器,脚本,网络,物理,版本控制等特性。Unity3d可以开发桌面版、web版、手机版的游戏,是一个非常理想的三维游戏开发平…

Unity3D 游戏引擎之构建简单的游戏世界(三)

Unity3D 游戏引擎之构建简单的游戏世界 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/473 创建游戏地面 创建一个新的游戏工程名称命名为FirstGame,场景…

Unity3d 引擎原理详细介绍

体系结构 为了更好地理解游戏的软件架构和对象模型,它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的,它的主要原则。 Unity3D 引擎 Unity3D的是一个屡获殊荣的工具,用于创建交互式3D应用程序在多个平台.Unity3D由游戏引擎和…

Unity3D游戏引擎最详尽基础教程

关注公众号 风色年代(itfantasycc) 200G Unity资料合集送上~ 转自:http://blog.sina.com.cn/s/blog_7c336a8301013son.html 我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强…

30分钟了解所有引擎组件,132个Unity 游戏引擎组件速通!【收藏 == 学会】

前言 🎬【全网首发】 | 30分钟了解所有组件,132个Unity 游戏引擎组件速通!一、Mesh 网格1.Mesh Filter2.Mesh Renderer3.Skinned Mesh Renderer4.Text Mesh5.TextMeshPro-Text 二、Effects 特效组件1.Particle System2.Visual Effect3.Trail …

Unity 3D 物理引擎简介 || Unity 3D 物理材质|| Unity 3D 力(AddForce)

Unity 3D 物理引擎简介 早期的游戏并没有强调物理引擎的应用,当时无论是哪一种游戏,都是用极为简单的计算方式做出相应的运算就算完成物理表现,如超级玛丽和音速小子等游戏。 较为常见的物理处理是在跳跃之后再次落到地上,并没有…

Unity游戏引擎介绍及相关学习资源

Unity(游戏引擎)一般指Unity3D 官网: https://unity.com/ 手册:https://docs.unity3d.com/Manual/ Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的…