來源:https://knowm.org/integrate-bro-ids-with-elk-stack/
Bro網(wǎng)絡(luò)安全監(jiān)控器是一個開源網(wǎng)絡(luò)監(jiān)控框架玉吁。簡單地說照弥,Bro監(jiān)視網(wǎng)絡(luò)上的包流,并從中創(chuàng)建高級“流”事件进副,并將事件作為單獨的標(biāo)簽分隔行存儲在日志文件中这揣。然后,您可以解析這些日志文件以便進(jìn)行數(shù)據(jù)挖掘影斑,以獲取關(guān)于您正在監(jiān)視的網(wǎng)絡(luò)上的網(wǎng)絡(luò)流量的信息给赞。解析bro日志文件和可視化所有數(shù)據(jù)的一個很好的方法是使用ELK套件。ELK的核心是Elasticsearch矫户、Logstash和Kibana片迅。Logstash解析bro日志,Elasticsearch存儲解析過的數(shù)據(jù)皆辽,Kibana為數(shù)據(jù)挖掘和可視化提供了漂亮的GUI柑蛇。
如果您已經(jīng)安裝了具有可選綁定網(wǎng)絡(luò)接口的網(wǎng)絡(luò)tap、已安裝的Bro和已安裝在系統(tǒng)上的ELK堆棧驱闷,那么剩下要做的就是創(chuàng)建和部署Logstash的配置文件耻台,以便告訴log出來應(yīng)該在哪里查找Bro日志、如何操作它們以及將它們放在哪里(Elastic Search)空另。
在/r/netsec上的redditor指出CVS過濾器要比grok過濾器高效得多盆耽,并將我指向一個git repo(https://github.com/timmolter/logstash-dfir),其中包含一些用于解析Bro日志的logstash conf文件扼菠。從那以后摄杂,我開始分叉repo并修改文件以更好地滿足我的需求,包括修復(fù)標(biāo)簽分隔符分隔符循榆、添加geoip過濾器以及修復(fù)一些bug匙姜。獲取conf文件的一種快速方法是從github直接將它們拉到logstash的conf.d目錄,如下面的代碼塊所示冯痢。注意氮昧,logstash會在啟動時加載在conf.d中找到的所有配置文件。
注意袖肥,從Logstash 2.x開始振劳,elasticsearch主機配置發(fā)生了變化历恐。您將遇到的錯誤如下:
他修復(fù)的只是將配置文件中的host更改為hostsin专筷,我在上面的*.conf文件中更新了配置文件磷蛹。
一溪烤、解釋
讓我們仔細(xì)看看這個文件:https://raw.githubusercontent.com/timmolter/logstash-dfir/master/conf_files/bro/bro-conn_log.conf
https://github.com/timmolter/logstash-dfir/tree/master/conf_files/bro
1檬嘀、在輸入部分,我們需要將所有路徑放到系統(tǒng)上實際的Bro日志文件中鸳兽。
2揍异、在配置文件末尾的輸出部分,我們需要將數(shù)據(jù)推送到Elasticsearch:
elasticsearch { host => localhost }.
3烤镐、在主過濾器(?filter)部分棍鳖,為bro日志分配和配置一個csv過濾器渡处。如果你愿意,你可以手工編寫csv過濾器侣肄。
4醇份、其他的過濾器(?filter)部分對數(shù)據(jù)進(jìn)行了更多的操作僚纷,并在注釋部分得到了很好的解釋。
5锥债、啟動Elasticsearch 2.0時,它不支持帶有a.的字段名(或點字符)登夫。由于bro日志包含名稱中帶有點的字段(id.orig_p)恼策,我們需要使用一個過濾器將這些點轉(zhuǎn)換為下劃線拼窥。如果沒有鲁纠,您可能會看到這樣的錯誤:failed to put mappings on indices [[logstash-2016.05.02]], type [bro-conn_log] MapperParsingException[Field name [id.orig_h] cannot contain '.']改含。mutate插件用于使用rename命令將包含點的字段名轉(zhuǎn)換為下劃線迄汛。
二、logstash-filter-translate
上面的logstash配置使用一個名為logstash-filter-translate的插件鹃觉。下面的終端命令展示了如何安裝logstash-filter-translate插件盗扇。有關(guān)安裝logstash插件的更深入解釋疗隶,請參閱如何版本1.5安裝logstash插件翼闹。
三猎荠、部署
要檢查配置是否有效而不啟動Logstash关摇,運行以下步驟:
在控制臺測試運行:
重新啟動Logstash拒垃,它將自動獲取新配置文件。它可能需要一分鐘的時間才能開始抽取數(shù)據(jù)艰猬。
或系統(tǒng)systemd……
四冠桃、調(diào)試
對于調(diào)試食听,我們可以使用—debug標(biāo)志啟動Logstash樱报,并使用以下命令:
在任何配置文件中,您都可以通過添加stdout{}來更改輸出以將數(shù)據(jù)推送到控制臺迹蛤,而不是通過Elasticsearch盗飒。
codec => rubydebug也可以用于調(diào)試逆趣。格式化的漂亮。
下面是一些控制logstash服務(wù)的額外命令:
System V
Systemd
如果Logstash沒有啟動,請在以下日志中查找任何錯誤:
看看哪個pid logstash殺死它:
要查看Logstash啟動的配置參數(shù)落包,請使用以下命令:
您將得到如下內(nèi)容:
sincedb_path
sincedb_path需要由logstash的用戶編寫。一種方法是將sincedb_path設(shè)置為/var/tmp有序,如果系統(tǒng)有這個可寫目錄岛请。如果您有與sincedb_path相關(guān)的錯誤消息崇败,首先要檢查配置路徑上的權(quán)限肩祥。
相關(guān)資源
在Ubuntu上安裝Bro: http://knowm.org/howtoinstall-bro-net-securi-monitor -on ubuntu/
如何創(chuàng)建綁定的網(wǎng)絡(luò)接口:http://knowm.org/how to create-a- bonent -network-interface/
如何設(shè)置Elastic堆椈旌荩——Elasticsearch, Logstash和Kibana: http://knowm.org/how to Set Up the ELK -stack-elasticsearch logstashand Kibana