如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

本文做者:謝幺 2017-03-10 10:09 專題:硬創公開課
導語:十年安全產品經驗的百度安全專家兜哥,手把手教你用開源項目搭建SIEM安全系統。

近年來態勢感知、威脅情報等等新詞不斷出現,其實萬變不離其宗,它們都是利用已知的數據來判斷風險,甚至預知未發生的威脅。這如同一個老練的探險者孤身穿行在原始叢林,他能輕巧天然地避開蛇蟲鼠蟻,用腳印來預知猛獸的威脅。這一切都依賴於他那顆善於思考,經驗豐富的大腦。php

在網絡安全的原始森林裏,SIEM就扮演這樣一個威脅感知大腦的角色。如何在合理成本下打造一個最爲強大、合適的 SIEM 系統,是許多安全人員頭疼的問題。雷鋒網有幸邀請到了擁有十年安全產品經驗的百度安全專家兜哥,爲你們講解如何使用開源軟件搭建企業的SIEM系統。html

嘉賓簡介

兜哥,百度安全專家,具備十年雲安全產品經驗,主要研究方向爲機器學習、僵屍網絡、威脅情報、沙箱技術、具備多年企業安全建設經驗,擁有安全方向相關專利多項;發表多篇安全學術論文。前端

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課    

【百度安全專家-兜哥】python

 

公開課內容整理

 

雷鋒網(公衆號:雷鋒網)按:因爲本次公開課偏向實操,涉及到許多的實際操做和代碼示例,限於篇幅就不一一展現,文章下方附本次公開課視頻,有興趣的讀者能夠自行觀看,本文主要以展現思路爲主。瞭解技術細節能夠關注兜哥的我的公衆號:「兜哥帶你學安全」,和兜哥本人進行技術交流。mysql

前言

在RSA2017會議上,應用大數據技術在安全領域,挖掘深刻的攻擊行爲依然是一個熱點。linux

SIEM簡介

市場調研機構IDC預計,將來全球數據總量年增加率將維持在50%左右,到2020年,全球數據總量將達到40ZB。一箇中型互聯網公司一天產生的數據量一般能夠超過幾T甚至幾十T。傳統的盒子形式的安全產品已經沒有能力處理如此大量的數據。web

SIEM(security information and event management),顧名思義就是針對安全信息和事件的管理系統。SIEM經過統一搜集、格式化、存儲、分析企業內部的各種日誌、流量數據,挖掘攻擊行爲。redis

完整的SIEM至少會包括如下功能:算法

  • 漏洞管理sql

  • 資產發現

  • 入侵檢測

  • 行爲分析

  • 日誌存儲、檢索

  • 報警管理

  • 酷炫報表

其中最核心的我認爲是入侵檢測、行爲分析和日誌存儲檢索。

SIEM的發展

對比 Gartner2009 年和 2016年的全球SIEM廠商排名,能夠清楚看出,基於大數據架構的廠商Splunk迅速崛起,傳統四強依託完整的安全產品線和成熟市場渠道,依然佔據領導者象限,其餘較小的廠商逐漸離開領導者象限。最重要的存儲架構也由盤櫃(可選)+商業數據庫逐漸轉變爲可橫向擴展的大數據架構,支持雲環境也成爲趨勢。

 如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

開源SIEM

常見的開源SIEM主要有 OSSIM 和 OPENSOC,其中 OPENSOC 徹底基於大數據架構,更適合目前的中大型企業。OPENSOC 是思科2014年在 BroCon 大會上公佈的開源項目,可是沒有真正開源其源代碼,只是發佈了其技術框架。咱們參考了 OPENSOC 發佈的架構,結合公司實際落地了一套方案。

OPENSOC 徹底基於開源的大數據框 架kafka、storm、spark 和 es 等,天生具備強大的橫向擴展能力。本文重點講解的也是基於 OPENSOC 的 SIEM 搭建,以及簡單介紹如何使用規則和算法來發現入侵行爲。

 

SIEM架構

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

上圖是Opensoc給出的框架,初次看很是費解,咱們以數據存儲與數據處理兩個緯度來細化,以常見的 linux 服務器 ssh 登陸日誌蒐集爲例。

數據蒐集緯度

數據蒐集緯度需求是蒐集原始數據,存儲,提供用戶交互式檢索的UI接口,典型場景就是出現安全事件後,經過檢索日誌回溯攻擊行爲,定損。

 如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

logtash其實能夠直接把數據寫es,可是考慮到 storm 也要數據處理,因此把數據切分放到 logstash,切分後的數據發送 kafka,提供給 storm 處理和 logstash 寫入 es。數據檢索能夠直接使用 kibana,很是方便。數據切分也能夠在 storm 裏面完成。

這個就是大名鼎鼎的ELK架構。es比較適合存儲較短期的熱數據的實時檢索查詢,對於須要長期存儲,而且但願使用hadoop或者spark進行大時間跨度的離線分析時,還須要存儲到hdfs上,因此比較常見的數據流程圖爲:

   如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

數據處理緯度

這裏以數據實時流式處理爲例,storm 從 kafka 中訂閱切分過的ssh登陸日誌,匹配檢測規則,檢測結果的寫入 mysql 或者 es。

   如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

在這個例子中,孤立看一條登陸日誌難以識別安全問題,最多識別非跳板機登陸,真正運行還須要參考知識庫中的常見登陸IP、時間、IP情報等以及臨時存儲處理狀態的狀態庫中最近該IP的登陸成功與失敗狀況。比較接近實際運行狀況的流程以下:

 如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

具體判斷邏輯舉例以下,實際中使用大量代理IP同時暴力破解,打一槍換一個地方那種沒法覆蓋,這裏只是個舉例:

   如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

擴展數據源

生產環境中,處理安全事件,分析入侵行爲,只有ssh登陸日誌確定是不夠,咱們須要儘量多的蒐集數據源,如下做爲參考:

  • linux/window系統安全日誌/操做日誌

  • web服務器訪問日誌

  • 數據庫SQL日誌

  • 網絡流量日誌

簡化後的系統架構以下,報警也存es主要是查看報警也能夠經過kibana,人力不足界面都不用開發了:

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

消息隊列:kafka

Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,有以下特性:

  • 經過O(1)的磁盤數據結構提供消息的持久化,這種結構對於即便數以TB的消息存儲也可以保持長時間的穩定性能。

  • 高吞吐量 :即便是很是普通的硬件Kafka也能夠支持每秒數百萬的消息。

  • 支持經過Kafka服務器和消費機集羣來分區消息。

  • 支持Hadoop並行數據加載。

流式處理:storm

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

Apache Storm 是一個免費開源的分佈式實時計算系統。簡化了流數據的可靠處理,像 Hadoop 同樣實現實時批處理。Storm 很簡單,可用於任意編程語言。

Storm 有不少應用場景,包括實時數據分析、聯機學習、持續計算、分佈式 RPC、ETL 等。Storm 速度很是快,一個測試在單節點上實現每秒一百萬的組處理。

storm拓撲支持python開發,以處理SQL日誌爲例子:

假設SQL日誌的格式是

"Feb 16 06:32:50 " "127.0.0.1" "root@localhost" "select * from user where id=1"

通常storm的拓撲結構:

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

 

簡化後 spout 是通用的從 kafka 讀取數據的,就一個 bolt 處理 SQL 日誌,匹配規則,命中策略即輸出」alert」:」原始SQL日誌」。

數據蒐集:logstash

  • Logstash是一款輕量級的日誌蒐集處理框架,能夠方便的把分散的、多樣化的日誌蒐集起來,並進行自定義的處理,而後傳輸到指定的位置,好比某個服務器或者文件。

     

  • 固然它能夠單獨出現,做爲日誌收集軟件,你能夠收集日誌到多種存儲系統或臨時中轉系統,如MySQL,redis,kakfa,HDFS, lucene,solr等並不必定是ElasticSearch。

logstash的配置量甚至超過了storm的拓撲腳本開發量,這裏就不展開了。

實時檢索:ElasticSearch

ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並做爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。

數據源

生產環境中,處理安全事件,分析入侵行爲,咱們須要儘量多的蒐集數據源,如下做爲參考:

  • linux/window系統安全日誌/操做日誌

  • web服務器訪問日誌

  • 數據庫SQL日誌

  • 網絡流量日誌

數據庫日誌蒐集

常見的數據日誌蒐集方式有三種:

鏡像方式

大多數數據庫審計產品都支持這種模式,經過分析數據庫流量,解碼數據庫協議,識別SQL預計,抽取出SQL日誌

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

代理方式

比較典型的就是db-proxy方式,目前百度、搜狐、美團、京東等都有相關開源產品,前端經過db-proxy訪問後端的真實數據庫服務器。SQL日誌能夠直接在db-proxy上搜集。

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

客戶端方式

經過在數據庫服務器安裝客戶端蒐集SQL日誌,比較典型的方式就是經過logstash來蒐集,本文以客戶端方式進行講解,其他方式本質上也是相似的。

logstash配置

安裝

下載logstash https://www.elastic.co/downloads/logstash 目前最新版本5.2.1版

開啓mysql查詢日誌

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

mysql查詢日誌

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

配置logstash

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

運行logstash

命令:bin/logstash -f mysql.conf

日誌舉例

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

常見攻擊特徵

分析攻擊特徵,下列列舉兩個,更多攻擊特徵請你們自行總結:

特徵一:

使用聯合查詢枚舉數據時會產生大量的NULL字段。

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

特徵二:

枚舉數據庫結構時會使用INFORMATION_SCHEMA,另外個別掃描器會使用GROUP BY x)a)

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

注意的是:

  • 生產環境中的規則會比這複雜不少,須要你不斷補充,這裏只是舉例

  • 單純只編寫map會有大量的重複報警,須要開發reduce用於聚合

  • 應急響應時須要知道SQL注入的是那個庫,使用的是哪一個帳戶,這個須要在logstash切割字段時補充

  • 應急響應時最好能夠知道SQL注入對應的連接,這個須要將web的accesslog與SQL日誌關聯分析,比較成熟的方案是基於機器學習,學習出基於時間的關聯矩陣

  • 客戶端直接蒐集SQL數據要求mysql也開啓查詢日誌,這個對服務器性能有較大影響,我知道的大型公司以db-prxoy方式接入爲主,建議能夠在db-proxy上搜集。

  • 基於規則識別SQL注入存在瓶頸,雖然相對web日誌層面以及流量層面有必定進步,SQL語義成爲必然之路。

CASE:後門識別

這裏介紹如何用圖算法是被webshell。

webshell特徵

webshell特徵其實不少,從統計學角度講,有以下特色:

  • 入度出度均爲0

  • 入度出度均爲1且本身指向本身

neo4j

neo4j是一個高性能的,NOSQL圖形數據庫,它將結構化數據存儲在網絡上而不是表中,因其嵌入式、高性能、輕量級等優點,愈來愈受到關注。

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

導入數據

可生成有向圖以下:

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

查詢入度爲1出度均爲0的結點或者查詢入度出度均爲1且指向本身的結點,因爲把ref爲空的狀況也識別爲"-"結點,因此入度爲1出度均爲0。

如何自行搭建一個威脅感知大腦 SIEM?| 硬創公開課

優化點:

生產環境實際使用中,咱們遇到誤報分爲如下幾種:

  • 主頁,各類index頁面

  • phpmyadmin、zabbix等運維管理後臺

  • hadoop、elk等開源軟件的控制檯

  • API接口

這些經過短時間加白能夠有效解決,比較麻煩的是掃描器對結果的影響,這部分須要經過掃描器指紋或者使用高大上的人機算法來去掉干擾。

兜哥後記

使用算法來挖掘未知攻擊行爲是目前很是流行的一個研究方向,本文只是介紹了其中比較好理解和實現的一種算法,該算法並不是我獨創,很多安全公司也都或多或少有過實踐。篇幅有限,這裏再也不一一講解。算法或者說機器學習本質是科學規律在大數據集集合上趨勢體現,因此很難作到精準報警,目前階段仍是須要經過各類規則和模型來輔助,不過對於挖掘未知攻擊行爲確實是一支奇兵。

雷鋒網注:因爲本次公開課偏向實操,涉及到許多的實際操做和代碼示例,限於篇幅就不一一展現,本文主要以展現搭建思路爲主,細節代碼能夠在兜哥的我的公衆號:「兜哥帶你學安全」, 能夠和兜哥本人進行技術交流。

 


公開課視頻

 


課後答疑整理

如下內容爲公開課後宅客頻道讀者提問答疑記錄:

1.宅客:本身用開源項目搭建SIEM系統時,容易遇到哪些坑?哪些環節須要額外注意?

兜哥:容易遇到的是性能問題,還有對開源軟件不太熟悉,由於確實咱們剛接觸時都是比較新的東西,幫助文檔比較少,容易形成理解上的問題。

其次是攻擊建模,這個很靠經驗,傳統SIEM就是誤報特別多。咱們的作法是:先離線訓練規則,誤報可控後直接在storm實時處理,基本最後能作到分鐘級發現。

另外,在流量蒐集上挑戰很大,傳統的 libpcap 性能差,基本只能處理幾十兆帶寬,須要使用 pf-ring ,基本能夠單機處理 2-6G 帶寬(全量處理)

2.宅客:公司本身人搭建一個SIEM和買商業SIEM產品如何選擇,適用於哪類規模的公司?(考慮實際人力、時間成本和效益)

兜哥:中型(1000人左右的)公司,能夠有3我的以上投入時,能夠本身搭建 opensoc 這種。若是公司規模小些,只能投入一我的建議用ossim , 天天數據量幾十G的,ossim 能夠搞定。

整個搭建成本,時間通常三個月能夠搞定,可是規則的積累是個長期過程。咱們差很少搞安全這麼多年,一直都在豐富模型和規則,出現漏洞還要及時跟進。

3.在檢索威脅情報這一塊,有什麼特殊的信息收集手段嗎?

兜哥:Openioc 能夠訂閱開源的情報,量已經很是大了。國內的威脅情報廠商比較多,好比微步在線。呃……黑產庫的積累其實比較靠人緣,合法性其實一直是個灰色地帶,你懂得。

4.宅客:威脅情報這塊,百度的人工智能有什麼應用嗎?

兜哥:應用比較多,好比從雲端的海量數據中,針對一直威脅的樣本 dns 使用聚類等算法,識別潛在的有關聯的,未知的樣本 dns。

經過安全運營中心的人工識別,挖掘未知攻擊行爲,而後以可機讀的方式推送給咱們的 WAF、ADS、IDS , AI 一大應用就是從已知樣本以及海量數據中挖掘未知,這個算法應用不少。

4.宅客:neo4j 將結構化數據存儲在網絡上,數據量打了會不會搞不定?

兜哥:會的,這裏(公開課直播)只是演示,能夠用 sparkx,並且 neo4j 也有集羣方案,不過問題其實還好,由於咱們是動態請求去重,抽象後才入庫,量其實不大,1T數據量入庫可能不到100M。

5.宅客:能不能提供一些SIEM具體應用場景,數據分析模型,或者推薦一下在那裏得到?

分析webshell 用有向圖效果不錯,其餘web攻擊,尤爲是攻擊載荷在請求參數裏面的用隱式馬爾可夫能夠。

6.宅客:網絡設備的設備接入的數據價值大嗎?有必要接嗎?

兜哥:網絡設備系統日誌能夠監控對網絡設備的暴力破解、違規操做等,netflow能夠輔助判斷蠕蟲、ddos等。

8.宅客:網絡入侵檢測( network instusion detection ) ,大家有啥好算法?

兜哥:關聯算法 apriori 圖算法、異常分析算法好比hmm 隱式馬爾可夫。


本堂公開課PPT資料下載

在公衆號「宅客頻道」(ID:letshome),回覆:「兜哥」,便可得到這次公開課PPT。

雷鋒網原創文章,未經受權禁止轉載。詳情見轉載須知

分享:
相關文章
 

文章點評:

表情 

最新評論

  • rong673 03月31日 10:40
    不錯啊
相關文章
相關標籤/搜索