ELK 是比較火的開源日志分析系統(tǒng)
本節(jié)主要介紹,ELK 的 docker 部署及與 OpenWAF 的結(jié)合
ELK是三個不同工具的簡稱,組合使用可以完成各種日志分析
Elasticsearch: 是一個基于 Apache Lucene(TM) 的開源搜索引擎,簡單點說就是用于建立索引并存儲日志的工具
Logstash: 是一個應用程序,它可以對日志的傳輸、過濾、管理和搜索提供支持。我們一般用它來統(tǒng)一對應用程序日志進行收集管理,提供Web接口用于查詢和統(tǒng)計
Kibana: 用于更友好的展示分析日志的web平臺,簡單點說就是有圖有真相,可以在上面生成各種各樣的圖表更直觀的顯示日志分析的成果
ELK 的安裝,網(wǎng)上有很多,這里只描述 docker 方式的部署
1. 拉取 elasticsearch docker 鏡像
docker pull elasticsearch
2. 啟動 elasticsearch 容器
docker run -d --name openwaf_es elasticsearch
3. 獲取 openwaf_es 地址
docker inspect openwaf_es | grep IPAddress
得到地址為:192.168.39.17
PS: elasticsearch 服務端口為 9200
1. 拉取 logstash docker 鏡像
docker pull logstash
2. 啟動 logstash 容器
docker run -it --name openwaf_logstash -v /root/logstash.conf:/usr/share/logstash/config/logstash.conf logstash -f /usr/share/logstash/config/logstash.conf
PS:
/root/logstash.conf 文件內(nèi)容如下:
udp { # udp 服務配置
port => 60099 # 表示日志服務器監(jiān)聽在 60099 端口
codec => "json" # 接收 json 格式信息
}
output {
elasticsearch {
hosts => ["192.168.39.17:9200"] # elasticsearch 的地址為 39.17,且端口為 9200
}
}
上面的配置表示:openwaf 向 logstash 的 60099 端口,發(fā)送 udp 協(xié)議的 json 日志,然后 logstash 將其存入 Elasticsearch
3. 獲取 openwaf_logstash 地址
docker inspect openwaf_logstash | grep IPAddress
得到地址為:192.168.39.18
1. 拉取 kibana docker 鏡像
docker pull kibana
2. 啟動 logstash 容器
docker run -d --name openwaf_kibana -e ELASTICSEARCH_URL=http://192.168.39.17:9200 kibana
3. 獲取 openwaf_kibana 地址
docker inspect openwaf_kibana | grep IPAddress
得到地址為:192.168.39.19
PS: kibana 服務端口為 5601
conf/twaf_default_conf.json 中 twaf_log 模塊
"twaf_log": {
"sock_type":"udp",
"content_type":"JSON",
"host":"192.168.39.18",
"port":60099,
...
}
測試版 OpenWAF 地址 192.168.36.44,反向代理后端服務器 192.168.39.216
現(xiàn)訪問 192.168.36.44/?a=1 order by 1
訪問結(jié)果如下:
此時,訪問 192.168.39.19:5601,在 kibana 上查看日志
若第一次使用 kibana,需要生成一個索引,如下(使用默認):
kibana 日志顯示如下:
kibana 功能強大,可以做各種視圖,用來分析日志,生成報表,更多功能請看 kibana官方文檔
了解更多: OpenWAF OpenWAF安裝篇
更多建議: