開源!愛奇藝網絡流量分析引擎QNSM及其應用

導讀

一定業務規模的互聯網公司的基礎設施的網絡邊界通常都呈現一定程度的複雜多分區的情況,如何進行有效的安全防護和控制會成為安全體系建設的重點和難點。面對這一挑戰,愛奇藝安全團隊自研了網絡流量分析引擎QNSM,並將其用在各種基於流量分析的跨區安全檢測和控制場景中,成為了愛奇藝安全防禦體系的關鍵基礎引擎。本文是根據愛奇藝高級總監盧明樊在 QCon 全球軟件開發大會(上海站)2019 分享《愛奇藝網絡流量安全檢測能力建設實踐》部分內容整理而成。

開源!愛奇藝網絡流量分析引擎QNSM及其應用


互聯網企業邊界複雜性


開源!愛奇藝網絡流量分析引擎QNSM及其應用


上圖是典型的中大型互聯網公司的網絡架構,通常分為:

· 辦公網絡,可能還有如右下角的眾多小的分支機構,甚至還有辦公機房

· 核心數據中心, 這些數據中心機房可能分佈在全國多個地方,並通過專線實現互連,在這個基礎上構建了自己的私有云。

· CDN網絡,這些CDN節點和核心機房也存在一定的互連。

· 如果使用公有云基礎服務,呈現混合雲的模式,這些基礎服務與核心數據中心存在互連。

· 上述大量的分區都可能通過不同的方式接入到互聯網。

· 最後,BYOD和各種無線熱點以及手機無線熱點等出現,導致呈現了大量碎片化的所謂新邊界。

對企業安全防禦而言,帶來了各種新的挑戰:

· 安全防禦變得碎片化和多層次化,大邊界內部還可能出現更多的小邊界。

· 單個邊界可能流量會非常大,特別是互聯網互聯的邊界,100Gps以上成為常態,如果在這些邊界進行流量檢測,要求流量檢測要具備高性能和很好的水平擴展能力,隨時應對邊界流量的擴展。

· 企業面臨的內外威脅依舊很嚴峻,流量型攻擊,漏洞型攻擊,邊界突破滲透,內部人員的洩露、破壞和控制都是普遍存在。

· 安全防禦的體系也在逐步演化,從單純的邊界防禦、結合多層次內部防禦的縱深防禦、以及立足於零信任或者假設失陷的下緊扣角色和權限的安全模型都在推動我們安全防禦在不斷的升級迭代來應對日益嚴峻的威脅。安全防禦體系的演化不代表邊界消失了,邊界防禦依舊是基礎和重要一環,有效地流量分析和控制成為了新的安全防禦體系重要的數據源和關節可編排的控制點。

因此,我們自研了旁路流量分析引擎QNSM(iQiYi Network SecurityMonitoring),通過對業務流量和旁路流量的協同分析,並集成多種可調度的防護能力,協同應對多種類型和多種層次的攻擊,並且安全運營體系打通,從接入、預案、響應、聯動、防禦、溯源逐步形成閉環。


QNSM簡介

全流量分析是非常重要的, 可以用來進行資產發現、網絡監控和可視化,對安全而言,通過對網絡流量的分析,對流量構建基線建模,從流量中可以發現異常、風險以及檢測攻擊,從流量中也可以實現數據內容提取,發現潛在的敏感數據流動或者洩露,還可以進行ACL策略校對,並將網絡流量產出的數據特徵通過機器學習和專家分析,可以挖掘更多的信息以及進行取證溯源和事件回查。


開源!愛奇藝網絡流量分析引擎QNSM及其應用


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及其應用


如上圖所示,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來滿足各種安全需求,愛奇藝的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(過濾)能力

· 擴展到更多場景,例如給業務安全和智能運維賦能等

·

逐步開放邊控中心的集群管理、監控和事件處置能力

後續會逐步將最新的進展同步到開源社區。


分享到:


相關文章: