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

導讀

必定業務規模的互聯網公司的基礎設施的網絡邊界一般都呈現必定程度的複雜多分區的狀況,如何進行有效的安全防禦和控制會成爲安全體系建設的重點和難點。面對這一挑戰,愛奇藝安全團隊自研了網絡流量分析引擎QNSM,並將其用在各類基於流量分析的跨區安全檢測和控制場景中,成爲了愛奇藝安全防護體系的關鍵基礎引擎。git

互聯網企業邊界複雜性

上圖是典型的中大型互聯網公司的網絡架構,一般分爲:github

辦公網絡,可能還有如右下角的衆多小的分支機構,甚至還有辦公機房數據庫

核心數據中心, 這些數據中心機房可能分佈在全國多個地方,並經過專線實現互連,在這個基礎上構建了本身的私有云。設計模式

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核綁定

基礎庫

QNSM在DPDK的基礎上封裝構建了各類基礎庫爲構建上層流水線提供了基礎能力,包括:

PORT:對網卡隊列和核心之間ring隊列的邏輯封裝,是實現並行處理和線性擴展的基礎。

MSG:封裝了支持回調的CPU核心之間的傳遞的通訊消息,這些消息能夠是策略消息也能夠是數據消息,這種無阻塞的核間消息支持一對一和一對多通訊,實現數據和控制平面分開,數據集的輸出和包處理分開。

ACL:是支持回調的五元組的策略描述,例如要指定知足怎麼樣的策略的包要聚合、處理、dump等操做。

TBL:是對DPDKrte_hash表的封裝,是數據集的存儲,提供CURD操做接口,實現基於mempool的表項資源分配。

SCHED:是對工做線程的封裝,支持自定義的包處理,策略執行,自定義計算邏輯,消息分發和定時回調等。

流水線

QNSM構建了不一樣的流水線組件來知足不一樣場景的安全應用,爲了支持更多的安全應用場景,咱們能夠在基礎庫的基礎上構建更多的流水線組件,進而實現網絡流量多樣的處理能力。

SESSM:負責包解析,flow數據聚合和複製轉發,處理策略消息等。

SIP_AGG:是對源IP進行特徵聚合和輸出,在攻擊時經過響應策略消息打開。

VIP_AGG:實現目標VIP(須要保護的業務IP)的自學習,以及基於目標VIP的進行特徵提取和向EDGE輸出。

DUMP:保存數據包爲PCAP文件供後續的事件回溯,在攻擊時經過響應策略消息打開。

EDGE:負責將上游組件發送的多維數據輸出到外部Kafka供進一步分析。

DETECT:集成Suricata庫,支持IDPS的檢測。

基於QNSM現有的流水線組件,咱們已經將其應用在DDoS攻擊檢測,IDPS檢測防禦,流量監控以及網絡DLP等多種場景,並支撐了各類上層安全產品的開發。你們能夠根據本身不一樣安全應用的須要,設計和插入自開發的組件。

控制層

Master是整個引擎的主控,經過Kafka接收從管理平臺接收策略消息,並下發到流水線組件實現對流水線的配置和處理控制。

安全應用

上圖展現了在愛奇藝如何應用QNSM來知足各類安全需求,愛奇藝的QNSM服務節點分佈在各個網絡分區的邊界上,並經過邊控中心來進行管理和維護。邊控中心(Aegis)是愛奇藝網絡安全防禦的核心服務,它有以下功能:

管理配置全部的QNSM集羣,經過Kafka 和QNSM的進行控制交互

經過IDPS網關實現管理和配置QNSM集成的IDPS(Suricata)

做爲愛奇藝WAF的統一服務後臺,這裏不作重點介紹

愛奇藝內部的安全大數據分析引擎結合威脅情報等外源數據,對從QNSM集羣EDGE組件輸出到Kafka的數據進行分析處理,產出的網絡攻擊事件會發送邊控中心,邊控中心會根據策略進一步和態勢感知系統對接,進而和安全運營系統對接實現閉環運營。

邊控中心能夠按事件驅動QNSM dump網絡流量成PCAP文件,並ETL進Moloch (https://github.com/aol/molocha largescale, open source, indexed packet capture and search system)創建包索引,方便對事件進行包級別的分析和溯源。

咱們將會在後續的分享文章中具體介紹邊控中心的架構和設計,這裏再也不贅述。下面,簡單介紹咱們是如何利用QNSM來知足咱們DDoS攻擊檢測和擴展支持IDPS能力的需求。

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),咱們會結合多維度特徵構建評分卡模型,最終給出是不是某一類協議的反射攻擊的斷定。

攻擊肯定之後,會根據應急預案進行流量牽引,愛奇藝構建了私有的流量清洗中心,並結合雲清洗和運營商的近源清洗造成了三位一體的清洗能力。

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(過濾)能力

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

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

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

相關文章
相關標籤/搜索