ELK Stack 整合 pfSense (二):Elasticsearch
本系列文章介紹 pfSense 與 ELK Stack (7.6 版) 的整合,藉此分析與收集阻擋的連接紀錄。Elasticsearch 是個全文搜尋引擎,透過 Inverted Index 的資料結構來提供即時的搜尋和分析功能。整個 ELK Stack 讀取和分析的 Log 就是儲存在 Elasticsearch,因此 Elasticsearch 需要足夠的儲存空間,而且它專門接收 JSON 型態的資料,所以除了和 Logstash 整合,只要能輸出 JSON 格式的工具都能與 Elasticsearch 整合。在查詢時皆透過 REST API,文件中有提到可使用 Query String 或是 Query DSL 在 GET 的 request body 塞 JSON 查詢指令,雖然目前沒有定義 GET method 的 body 的用途,關於是否可以這樣使用也存在不少爭議,不過看起來 Elastic 他們就自行使用了。
整個 pfSense 與 ELK Stack 的架構如下面這張圖,架設過程中只要注意一下 Port 的對應其他都沒有太大的問題。
ELK Stack 整合 pfSense 系列文
- ELK Stack 整合 pfSense (一):將 pfSense 防火牆阻擋紀錄傳送到 Logstash
- [本篇] ELK Stack 整合 pfSense (二):Elasticsearch
- ELK Stack 整合 pfSense (三):Kibana Dashboard
安裝 Elasticsearch
依照文件步驟安裝,一樣要先裝 Java,再裝 Elasticsearch。
|
|
Elasticsearch 的設定檔放在/etc/elasticsearch/elasticsearch.yml
,elasticsearch.yml
有幾個地方需要特別注意。
elasticsearch.yml
|
|
接著就可以啟動 Elasticsearch,Elasticsearch 會透過 Port 9200 接收 Logstash 的資料和接收查詢指令,然後透過 Port 9300 和 Kibana 進行 Keepalive。
|
|
然後檢查 Port 狀態:
|
|
注意 9200 與 9300:
|
|
如果 Logstash 已經在運作,我們會看得到 Elasticsearch 和 Logstash 建立的 connection:
|
|
接著等待 Logstash 傳送一些資料之後,可以透過 API 查詢看看是否收到資料。之前在 Logstash 的 output config 有定義 index 名稱為 logstash-pfSense-%{+YYYY.MM.dd}
,所以查詢所有資料可以在 URL 用logstash-pfSense-\*
,_search
就是查詢所有資料,?pretty=true
是為了讓輸出結果方便人類閱讀。
|
|
如果有看到一堆 JSON 格式的資料,就代表成功了,這邊沒有要特別研究查詢語法,因為接下來的工作就是讓 Kibana 查詢並製作視覺化 Dashboard。