來源:https://logz.io/blog/bro-elk-part-1/
本系列介紹如何將ELK套件與Bro集成在一起進(jìn)行網(wǎng)絡(luò)分析和監(jiān)視鲫寄。第1部分將解釋如何建立集成框架料滥,第2部分將展示如何使用kibana分析和可視化示例數(shù)據(jù)。
網(wǎng)絡(luò)攻擊不斷增加已不是秘密戴差。勒索軟件,DDoS,數(shù)據(jù)泄露——你能夠說出來的攻擊。各組織爭相采用各種協(xié)議和安全策略躲查,以增強(qiáng)自身抵御這些攻擊的能力,日志記錄和監(jiān)控在這些嘗試中扮演了關(guān)鍵角色译柏。
已經(jīng)開發(fā)了大量的解決方案和工具來幫助保護(hù)IT體系結(jié)構(gòu)的不同層镣煮,從基礎(chǔ)結(jié)構(gòu)級(jí)別開始,到應(yīng)用程序級(jí)別鄙麦。本系列著重于探索一個(gè)這樣的工具——Bro典唇,與ELK套件的集成。
一胯府、Bro是什么?
Bro由最初的開發(fā)人員Vern Paxson和伯克利的一個(gè)研究小組共同開發(fā)介衔,是一個(gè)功能豐富、功能強(qiáng)大的開源網(wǎng)絡(luò)安全監(jiān)視器骂因,可以實(shí)時(shí)跟蹤網(wǎng)絡(luò)流量炎咖。
Bro將使您立即了解所有網(wǎng)絡(luò)活動(dòng),包括文件類型寒波、部署的軟件和網(wǎng)絡(luò)設(shè)備乘盼,就像任何網(wǎng)絡(luò)入侵檢測系統(tǒng)(NIDS)一樣。但它的強(qiáng)大之處在于它的策略腳本和分析程序俄烁,這些腳本和分析程序允許用戶分析數(shù)據(jù)绸栅、識(shí)別模式并采取基于事件的操作。此外页屠,Bro很好地利用外部工具(如Critical Stack)幫助從監(jiān)控?cái)?shù)據(jù)中獲得更多的見解粹胯。
正如人們所期望的那樣蓖柔,Bro日志記錄了所有的事情。取決于您如何使用Bro风纠,您可能會(huì)將日志記錄到50多個(gè)不同的日志文件渊抽。稍后我將深入介紹Bro的日志記錄特性,但即使是用于監(jiān)視小型環(huán)境的Bro部署也會(huì)生成大量日志數(shù)據(jù)议忽。
通過允許用戶將Bro將日志集中到一個(gè)位置懒闷,并提供分析和可視化工具,ELK套件就可以提供幫助栈幸。在本系列的第一部分中愤估,我們將探索如何將Bro日志與ELK套件連接起來。在第二部分中速址,我們將提供一些技巧和最佳實(shí)踐來分析數(shù)據(jù)玩焰。
二、設(shè)置Bro
如果你已經(jīng)設(shè)置好了芍锚,Bro昔园,可以直接跳到下一節(jié)。如果沒有并炮,下面是在Ubuntu 16.04服務(wù)器上安裝Bro的說明默刚。整個(gè)過程大約需要15-20分鐘。
(1)準(zhǔn)備您的環(huán)境
開始更新你的系統(tǒng):
(2)Bro有很多依賴項(xiàng)需要安裝:
(3)安裝Bro
我們現(xiàn)在準(zhǔn)備安裝從源代碼安裝Bro逃魄。
首先荤西,克隆來自GitHub的Bro倉庫:
訪問目錄并運(yùn)行Bro的配置:
是時(shí)候構(gòu)建程序了(這需要很長時(shí)間,所以你可能想去喝杯咖啡):
一旦構(gòu)建過程完成伍俘,安裝Bro:
Bro安裝在/usr/local/bro目錄中邪锌,完成安裝過程的最后一步是將/usr/local/bro/bin目錄導(dǎo)出到您的$PATH中:
(4)配置Bro
Bro有一些配置文件,都位于/usr/local/bro/etc目錄下癌瘾。首先需要對(duì)node.cfg文件進(jìn)行調(diào)整觅丰,node.cfg文件用于配置要監(jiān)視的服務(wù)器。
默認(rèn)情況下妨退,Bro被配置為在獨(dú)立模式下操作妇萄,這應(yīng)該足以用于本地安裝。盡管如此碧注,請(qǐng)查看文件中的Bro部分嚣伐,并確保該接口與服務(wù)器的公共接口相匹配(在Linux上,您可以運(yùn)行ifconfig來驗(yàn)證)萍丐。
接下來轩端,在networks.cfg文件中配置要監(jiān)視的服務(wù)器的IP網(wǎng)絡(luò)。
打開文件:
刪除現(xiàn)有條目逝变,并輸入服務(wù)器的公共和私有IP空間(在Linux上基茵,使用IP addr show檢查網(wǎng)絡(luò)地址)奋构。
您的文件應(yīng)該是這樣的:
日志和郵件配置在broctl.cfg文件中。在這里拱层,我們所要做的就是輸入一個(gè)有效的電子郵件地址來接收來自Bro的通知:
(5)運(yùn)行bro
最后弥臼,使用以下命令運(yùn)行Bro(也用于隨后應(yīng)用配置更改):
要確保所有程序都按照預(yù)期運(yùn)行,請(qǐng)使用:
三根灯、Bro日志101
如上所述径缅,Bro的一個(gè)最強(qiáng)大的特性是其日志功能。Bro記錄一切烙肺。
您可以查看這里提供的一些日志文件纳猪。在實(shí)現(xiàn)與外部插件(例如 Critical Stack)的集成后,還可能創(chuàng)建其他日志桃笙。
默認(rèn)情況下氏堤,所有Bro日志都被寫入/usr/local/bro/logs/current(在Linux上),并每天進(jìn)行輪換搏明∈笮猓看一看:
仔細(xì)看一看樣本日志:
每個(gè)Bro日志都在文件頂部包含一些定義——文件中的不同字段及其類型的列表。請(qǐng)注意日志文件的結(jié)構(gòu)——字段由一個(gè)tab(\t)字符分隔星著,您將在本文后面看到它如何影響Logstash的處理购笆。
四、將日志運(yùn)送至ELK
要將日志發(fā)送到ELK堆棧中强饮,我們將使用Filebeat跟蹤日志文件由桌,并通過Logstash將它們發(fā)送到本地Elasticsearch實(shí)例中为黎。對(duì)于Logz.io用戶邮丰,我還將解釋如何將日志從Filebeat直接發(fā)送到Logz.io。
重要!我們將只關(guān)注一個(gè)Bro日志文件铭乾,conn.log文件剪廉。要收集所有日志文件,需要配置多個(gè)管道炕檩。
(1)配置Filebeat
假設(shè)你已經(jīng)安裝了Filebeat斗蒋,打開你的Filebeat配置文件:
在Filebeat配置文件中,定義到日志文件和輸出目的地的路徑笛质。
下面的示例定義了Bro的conn.log文件的一個(gè)勘探者泉沾,該文件包含網(wǎng)絡(luò)TCP/UDP/ICMP連接上的數(shù)據(jù)。要跟蹤其他日志妇押,您需要以類似的方式為每個(gè)文件添加一個(gè)勘探者跷究。輸出是一個(gè)本地Logstash實(shí)例。
(2)配置Logstash
接下來敲霍,我們需要配置Logstash俊马。我將在本節(jié)末尾提供完整的示例丁存,但讓我們逐個(gè)介紹不同的部分。
1柴我、輸入
輸入部分非常簡單解寝。我們將使用beats輸入插件,并相應(yīng)地定義主機(jī)和端口:
2艘儒、過濾器
由于不同的Bro日志文件的結(jié)構(gòu)聋伦,所以過濾器部分更加復(fù)雜。
我們將從使用if語句開始界睁,告訴Logstash刪除日志文件頂部的注釋:
接下來嘉抓,我們將使用Logstash CSV過濾器插件來處理數(shù)據(jù)。我們將首先使用if語句將后續(xù)的過濾器配置應(yīng)用到“bro-conn”日志類型(如上面的Filebeat配置文件中定義的那樣)晕窑。
columns選項(xiàng)允許我們將每個(gè)列頭定義為一個(gè)字段抑片。CSV過濾器插件使用逗號(hào)作為默認(rèn)分隔符,但在本例中杨赤,我們使用separator選項(xiàng)來定義標(biāo)簽作為分隔符敞斋。
接下來,我們將使用date filter插件和內(nèi)置的Unix模式將提供的ts字段定義為時(shí)間戳字段:
為了用地理信息豐富我們的ip疾牲,我們將使用geoip過濾器插件:
我們將使用的最后一個(gè)過濾器插件是mutate插件植捎,用于重命名字段(Elasticsearch存在字段名稱中的句點(diǎn)問題)和定義字段類型:
3、輸出
和輸入一樣阳柔,這個(gè)部分也很簡單:
4焰枢、完整的配置文件
下面是完整的配置文件,用于從Filebeat輸入Bro conn日志舌剂,對(duì)其進(jìn)行處理并發(fā)送到Elasticsearch中進(jìn)行索引:
五济锄、啟動(dòng)數(shù)據(jù)管道
既然我們已經(jīng)把所有的部分都準(zhǔn)備好了,現(xiàn)在是啟動(dòng)管道的時(shí)候了霍转。
開始Logstash:
開始Filebeat:
一段時(shí)間后荐绝,如果您的配置文件中沒有錯(cuò)誤,將創(chuàng)建一個(gè)新的Logstash索引避消,其模式可以在Kibana中定義:
輸入索引模式低滩,選擇timestamp字段,并創(chuàng)建新的索引模式岩喷。
打開Kibana中的Discover頁面恕沫,您應(yīng)該會(huì)看到顯示的Bro conn.log消息。在左邊纱意,將顯示Logstash處理的所有可用分析字段的列表:
總結(jié)
恭喜!您的Bro日志在Elasticsearch中被索引婶溯,可以在Kibana進(jìn)行分析和可視化。這將直接引導(dǎo)我們進(jìn)入本系列文章的下一部分,該部分將解釋如何分析Bro日志數(shù)據(jù)爬虱。
為了重申上面強(qiáng)調(diào)的內(nèi)容隶债,這里的工作流程將通過運(yùn)輸一種類型的Bro日志(conn.log)的步驟。您將需要構(gòu)建多個(gè)管道來運(yùn)送其他日志類型跑筝。另外死讹,就Bro的能力而言,日志只是冰山一角曲梗。高級(jí)用戶將希望更深入地使用它支持的分析程序和策略腳本赞警。