【流沙】宜信安全數據平臺實踐

導讀:宜信結合本身的實際狀況,實現了一套集採集、分析和存儲爲一體的安全數據平臺——流沙平臺。本文重點介紹一下流沙平臺的架構,相比於OpenSOC作了哪些優化及改進的地方以及流沙平臺在落地過程當中的經驗總結。python

前言

OpenSOC是思科在BroCON大會上亮相了的一個安全大數據分析架構,它是一個針對網絡包和流的大數據分析框架,是大數據分析與安全分析技術的結合, 可以實時的檢測網絡異常狀況而且能夠擴展不少節點,它的存儲使用開源項目Hadoop,實時索引使用開源項目ElasticSearch,在線流分析使用著名的開源項目Storm。golang

宜信結合本身的實際狀況,一樣實現了一套集採集、分析和存儲爲一體的安全數據平臺——流沙平臺。本文重點介紹一下流沙平臺的架構,相比於OpenSOC作了哪些優化及改進的地方以及流沙平臺在落地過程當中的經驗總結。web

1、流沙平臺架構

整個平臺架構分了多個層次,採集層、預處理層、分析層、存儲層和響應層。層之間若須要,均使用kafka做爲消息隊列進行數據傳遞,保證了傳輸過程當中的數據可靠。docker

1.1 採集層

採集層主要用於數據採集,而後將採集的數據統一發送至kafka。採集的數據主要包括:json

  • 流量數據——使用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進行離線的數據分析,多人數據分析平臺。

2、與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、落地方面的經驗

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進行了一些改良並落地。

經過流沙平臺,安全工做人員能夠將大部分精力專一於數據分析上,彌補了商業安全產品的不足,更好的幫助安全防禦同窗全面的瞭解企業的安全狀態。流沙平臺不只僅是一個數據平臺,更是宜信現有安全措施的重要補充。

做者:安全開發 高楊

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

相關文章
相關標籤/搜索