【流沙】宜信安全資料平臺實踐

宜信技術學院發表於2019-06-14

前言

OpenSOC是思科在BroCON大會上亮相了的一個安全大資料分析架構,它是一個針對網路包和流的大資料分析框架,是大資料分析與安全分析技術的結合, 能夠實時的檢測網路異常情況並且可以擴充套件很多節點,它的儲存使用開源專案Hadoop,實時索引使用開源專案ElasticSearch,線上流分析使用著名的開源專案Storm。

宜信結合自己的實際情況,同樣實現了一套集採集、分析和儲存為一體的安全資料平臺——流沙平臺。本文重點介紹一下流沙平臺的架構,相比於OpenSOC做了哪些最佳化及改進的地方以及流沙平臺在落地過程中的經驗總結。

一、流沙平臺架構

整個平臺架構分了多個層次,採集層、預處理層、分析層、儲存層和響應層。層之間若需要,均使用kafka作為訊息佇列進行資料傳遞,保證了傳輸過程中的資料可靠。

1.1 採集層

採集層主要用於資料採集,然後將採集的資料統一傳送至kafka。採集的資料主要包括:

  • 流量資料——使用packetbeat進行解析

  • 日誌資料——檔案形式的日誌使用filebeat進行採集;syslog形式的資料採用rsyslog進行採集

  • 運維資料——為方便故障排查和叢集效能監控,使用metricbeat採集流沙平臺叢集伺服器的運維資料

在實際運營的過程中,我們發現packetbeat在攻擊場景下存在一些缺陷,並給出了相應的解決辦法,比如:

  • 網頁壓縮會導致body亂碼

  • 若沒有content-type欄位則不會解包

  • 位於body部分的引數會被新增進params欄位中

  • connect請求導致的urlparse報錯

  • 不規範的url編碼欄位導致的urlparse報錯

1.2 預處理層

流沙平臺的預處理程式(以下統稱為“ybridge”)為宜信基於golang自主開發的一套支援分散式的預處理框架,透過編寫配置即可實現自定義使用者的輸入輸出以及資料所需要實現的功能。透過編寫外掛可以為每一種資料進行單獨的處理操作,能夠滿足實際使用過程中的各種需要。

ybridge具有以下優點:

  • 功能靈活

  • 效能較高

  • 無依賴

  • 支援冗餘部署,可靠性高

  • 支援docker/vm部署方式,易於擴充套件

  • 能夠將執行資料傳送至metricbeat,並進行效能監控

ybridge的主要工作包括以下幾點:

  • 支援gzip解碼

  • 資料格式化

  • 欄位擴充套件

  • 欄位提取

  • 敏感欄位打碼

  • 日誌情報化

  • 資料加解密

  • 刪除無用資料

  • 資料壓縮

1.3 分析層

作為大資料分析平臺,資料分析是核心。雖然,分析可以在kibana或者單獨寫程式來實現,但是這種方式需要從ES來拉取資料然後再進行分析,一方面時效性會較差,另外一方面過於依賴ES叢集會導致平臺穩定性變差。 為此,流沙平臺基於spark實現了一套分析引擎,該引擎以kafka為資料來源,並將分析的結果存放在ES中。可以透過人工的方式在kibana上分析出規則,然後將該規則應用到分析引擎上。

在分析層實現的功能包括:

  • 資產發現

  • 攻擊發現

  • 資訊洩露

  • 內部威脅溯源

  • 業務風控

1.4 儲存層

儲存層包括兩個ES叢集(ES all叢集和ES out叢集)和一個hbase叢集。之所以使用兩個ES叢集,是因為兩者功能不同,避免由於一方面的原因而導致整個叢集不可用,提高平臺穩定性。~ES all叢集用於儲存全量的原始資料,方便人工分析和溯源ES all叢集用於儲存全量的原始資料,方便人工分析和溯源ES_out叢集用於儲存分析後的結果資料,方便程式呼叫~

ES存放的是短期的熱資料,hbase存放的是長期的冷資料。

資料在hbase中以時間戳為單位,一個rowkey儲存一秒鐘資料。使用者可以透過ybridge將hbase中某段時間內的冷資料回放至kafka,再進行後續的操作,比如分析或者溯源。

1.5 響應層

響應層用於對使用者的資料進行分析處理並響應。響應層主要包括:

kibana:用於資料搜尋、監控展示、攻擊溯源等

監控視覺化:透過圖示的方式在大屏上呈現出當前最主要的風險,可以更直觀的瞭解到企業正在面臨的安全威脅。

alertAPI:透過監控發現問題之後,往往需要有一個後續動作,比如自動化響應或者告警。

呼叫後續動作可以有多種途徑,比如:

  • 編寫程式分析並告警

  • watcher(收費。elastic官方的工具)

  • Elastalert(免費。基於python的報警框架)

後續動作則可以包括:

  • 簡訊告警

  • 郵件告警

  • 自動攔截惡意IP

  • 資料的二次加工並重新寫入ES

jupyterhub:從ES叢集中提取資料並使用python進行離線的資料分析,多人資料分析平臺。

二、與OpenSOC相比

OpenSOC同樣儲存了流量資料和日誌資料,資料採集之後先傳送到kafka,然後透過storm進行格式化和欄位擴充之後分別寫入hive、ES和HBase,最後透過webservise或者分析工具對資料進行分析。流沙平臺架構和OpenSOC基本相同,但是在上圖所示的幾處會有細微差異,下文將分別進行描述。

2.1 使用beats進行資料採集

在資料採集方面,流沙平臺大量使用了beats。beats為Elastic官方出品,社群活躍度比較高,效能和功能都很優秀。

網路流量使用packetbeat進行網路資料解析,日誌檔案採用filebeat進行採集,系統效能監控和ybridge效能監控使用的是metricbeat。beats具有以下優點:

  • 效能較高

  • 易於上手

  • 與ybridge使用相同技術棧,易於功能擴充套件或改造

  • beats版本同elasticsearch同步更新

2.2 處理層拆分

OpenSOC的實時處理部分包含了多對資料的分析、豐富、分析等內容,流沙平臺按照功能將這塊分為了兩層,第一部分是預處理層,第二部分是分析層。預處理層採用的是自研發的ybridge程式,主要實現ETL功能,支援橫向擴充套件,時效性和處理速度可以保證預處理層的結果可以直接儲存也可以扔給kafka,進行下一次處理。分析層有一套基於spark實現的分析框架進行分析,相比於storm,spark雖然的時效性雖然沒有那麼高,但是spark能夠更好地進行聚合分析、而且天生相容機器學習和圖計算,非常適合資料分析,而storm實現類似的功能成本較高。

2.3 捨棄hive

OpenSOC中一份資料會分別儲存到hive、hbase、ES三處,這樣無疑會有巨大的儲存資源的投入,考慮到hive的查詢速率較慢,而資料可以透過ES直接分析或者抽取出來之後再做分析,所以流沙平臺沒有使用hive儲存。短期資料直接在ES裡面查詢,長期的資料從hbase拿出來之後再使用。這樣的架構會更適用於中小型企業,在功能和資源之間取了一個平衡點。

2.4 資料回放方式不同

OpenSOC在hbase中儲存的是pcap檔案,而流沙平臺儲存的是預處理格式化之後的json格式的資料,在進行資料回放的時候會更加方便而且更節省儲存空間。

OpenSOC過webserver來實現資料的回放,而流沙平臺透過ybridge來實現回放。

2.5 與威脅情報緊密結合

OpenSOC在實時處理層進行了資料的豐富,流沙平臺除此之外還接入了威脅情報。威脅情報對於企業安全的作用越來越大,能夠幫助企業發現潛在的安全問題

對於流沙平臺來說,一方面,將內部的告警轉化為內部情報,另外一方面將內部情報和外部情報結合形成宜信獨有的威脅情報,並將其反哺給日誌和流量,幫助企業安全分析人員更方便的進行資料分析和決策。

三、落地方面的經驗

3.1 平臺高可用

流沙平臺最重要的是能夠提供穩定可靠的資料服務,因此,平臺高可用非常重要。首先,整個平臺除了beats和kibana,均為冗餘部署,甚至流沙平臺的日誌接受伺服器也採用了雙活部署的方式;其次,預處理程式可以隨時啟停,實現程式的平滑升級,使用者無感知;最後,為了確保穩定性,流沙平臺新增了大量監控告警,比如:

  • ES叢集異常監控

  • 資料丟失監控

  • 丟包率監控

  • 服務存活狀態監控

3.2 如何解決丟包問題

在解析網路流量的時候,最大的問題就是丟包。首先需要做的是能夠發現丟包,可以定期傳送100個指定UA的資料包,然後在ES端統計接收到多少個資料包,若是丟的數量超過一定數值則告警。

至於丟包的原因可能有很多,這裡主要分析軟體丟包的情況。解決方案也有很多,大的來說有以下幾個思路:

  • 提高解析效率(比如使用pf_ring或者DPDK)

  • 硬體分流

  • 軟體分流

  • 謹慎選擇映象接入點,不建議接入核心資料,可以大大減少解析資料量

在選擇解決方案的時候建議根據自身企業的實際情況,第一種效率最高,但是pf_ring為收費軟體,而DPDK往往需要開發,都需要付出一些成本。除此之外,也可以透過硬體分流或者軟體分流的方式來解決。硬體分流由於其更加簡單而且可靠,比較推薦。

3.3 服務集中管理

為了能夠讓這套平臺落地,需要到大量的伺服器,不同伺服器上各自執行不同的程式,因此需要一套集中化的管理手段,為此,流沙平臺使用了以下兩個工具:

  • gosuv:gosuv是一個go寫的分散式的supervisor框架,可以透過web頁面遠端管理伺服器上的程式。

  • consul:consul則是一個分散式的微服務框架,實現了服務註冊、服務發現以及統一配置管理等功能。

gosuv + consul的方式可以很方便的實現程式的集中管理,和程式狀態監控。

總結

資料是安全分析的基礎,有了資料以後,威脅情報、態勢感知、駭客畫像、業務風控、攻擊溯源、攻擊識別、資產發現都變得並非遙不可及。流沙平臺結合宜信實際的場景,從效率、成本、功能三者之間綜合考量,對OpenSOC進行了一些改良並落地。

透過流沙平臺,安全工作人員可以將大部分精力專注於資料分析上,彌補了商業安全產品的不足,更好的幫助安全防護同學全面的瞭解企業的安全狀態。流沙平臺不僅僅是一個資料平臺,更是宜信現有安全措施的重要補充。

作者:安全開發 高楊

首發:宜信安全應急響應中心


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2647618/,如需轉載,請註明出處,否則將追究法律責任。

相關文章