將 Zeek 與 ELK 棧集成
在本雜志 2022 年 3 月版發(fā)表的題為“用 Zeek 輕松實(shí)現(xiàn)網(wǎng)絡(luò)安全監(jiān)控”的文章中,我們研究了 Zeek 的功能,并學(xué)習(xí)了如何開始使用它?,F(xiàn)在我們將把我們的學(xué)習(xí)經(jīng)驗(yàn)再進(jìn)一步,看看如何將其與 ELK(即 Elasticsearch、Kibana、Beats 和 Logstash)整合。
為此,我們將使用一個(gè)叫做 Filebeat 的工具,它可以監(jiān)控、收集并轉(zhuǎn)發(fā)日志到 Elasticsearch。我們將把 Filebeat 和 Zeek 配置在一起,這樣后者收集的數(shù)據(jù)將被轉(zhuǎn)發(fā)并集中到我們的 Kibana 儀表盤上。
安裝 Filebeat
讓我們首先將 Filebeat 與 Zeek 安裝在一起。使用 ??apt?
? 來安裝 Filebeat,使用以下命令:
sudo apt install filebeat
接下來,我們需要配置 ??.yml?
?? 文件,它位于 ??/etc/filebeat/?
? 文件夾中:
sudo nano /etc/filebeat/filebeat.yml
我們只需要在這里配置兩件事。在 Filebeat 輸入部分,將類型改為 ??log?
??,并取消對(duì) ??enabled:false?
?? 的注釋,將其改為 ??true?
??。我們還需要指定存儲(chǔ)日志的路徑,也就是說,我們需要指定 ??/opt/zeek/logs/current/*.log?
?。
完成這些后,設(shè)置的第一部分應(yīng)該類似于圖 1 所示的內(nèi)容。
Figure 1: Filebeat config (a)
第二件要修改的事情是在輸出下的 Elasticsearch 輸出部分,取消對(duì) ??output.elasticsearch?
?? 和 ??hosts?
?? 的注釋。確保主機(jī)的 URL 和端口號(hào)與你安裝 ELK 時(shí)配置的相似。我們把它保持為 ??localhost?
??,端口號(hào)為 ??9200?
?。
在同一部分中,取消底部的用戶名和密碼的注釋,輸入安裝后配置 ELK 時(shí)生成的 Elasticsearch 用戶的用戶名和密碼。完成這些后,參考圖 2,檢查設(shè)置。
Figure 2: Filebeat config (b)
現(xiàn)在我們已經(jīng)完成了安裝和配置,我們需要配置 Zeek,使其以 JSON 格式存儲(chǔ)日志。為此,確保你的 Zeek 實(shí)例已經(jīng)停止。如果沒有,執(zhí)行下面的命令來停止它:
cd /opt/zeek/bin
./zeekctl stop
現(xiàn)在我們需要在 ??local.zeek?
?? 中添加一小行,它存在于 ??opt/zeek/share/zeek/site/?
? 目錄中。
以 root 身份打開該文件,添加以下行:
@load policy/tuning/json-logs.zeek
參考圖 3,確保設(shè)置正確。
Figure 3: local.zeek file
由于我們改變了 Zeek 的一些配置,我們需要重新部署它,這可以通過執(zhí)行以下命令來完成:
cd /opt/zeek/bin
./zeekctl deploy
現(xiàn)在我們需要在 Filebeat 中啟用 Zeek 模塊,以便它轉(zhuǎn)發(fā) Zeek 的日志。執(zhí)行下面的命令:
sudo filebeat modules enable zeek
我們幾乎要好了。在最后一步,配置 ??zeek.yml?
?? 文件要記錄什么類型的數(shù)據(jù)。這可以通過修改 ??/etc/filebeat/modules.d/zeek.yml?
? 文件完成。
在這個(gè) .yml 文件中,我們必須提到這些指定的日志存放在哪個(gè)目錄下。我們知道,這些日志存儲(chǔ)在當(dāng)前文件夾中,其中有幾個(gè)文件,如 ??dns.log?
??、??conn.log?
??、??dhcp.log?
?? 等等。我們需要在每個(gè)部分提到每個(gè)路徑。如果而且只有在你不需要該文件/程序的日志時(shí),你可以通過把啟用值改為 ??false?
? 來舍棄不需要的文件。
例如,對(duì)于 ??dns?
??,確保啟用值為 ??true?
?,并且路徑被配置:
var.paths: [ “/opt/zeek/logs/current/dns.log”, “/opt/zeek/logs/*.dns.json” ]
對(duì)其余的文件重復(fù)這樣做。我們對(duì)一些我們需要的文件做了這個(gè)處理。我們添加了所有主要需要的文件。你也可以這樣做。請(qǐng)參考圖 4。
Figure 4: zeek.yml configuration
現(xiàn)在是啟動(dòng) Filebeat 的時(shí)候了。執(zhí)行以下命令:
sudo filebeat setup
sudo service filebeat start
現(xiàn)在一切都完成了,讓我們移動(dòng)到 Kibana 儀表板,檢查我們是否通過 Filebeat 接收到來自 Zeek 的數(shù)據(jù)。
進(jìn)入儀表板。你可以看到它所捕獲的數(shù)據(jù)的清晰統(tǒng)計(jì)分析(圖 5 和圖 6)。
Figure 6: Dashboard of Kibana (Network)
現(xiàn)在讓我們進(jìn)入發(fā)現(xiàn)選項(xiàng)卡,通過使用查詢進(jìn)行過濾來檢查結(jié)果:
這個(gè)查詢將過濾它在一定時(shí)間內(nèi)收到的所有數(shù)據(jù),只向我們顯示名為 Zeek 的模塊的數(shù)據(jù)(圖 7)。
Figure 7: Filtered data by event.module query
鳴謝
作者感謝 VIT-AP 計(jì)算機(jī)科學(xué)與工程學(xué)院的 Sibi Chakkaravarthy Sethuraman、Sudhakar
Ilango、Nandha Kumar R.和Anupama Namburu 的不斷指導(dǎo)和支持。特別感謝人工智能和機(jī)器人技術(shù)卓越中心(AIR)。