快速搭建 ELK + OpenWAF 環境
摘要: OpenWAF是第一個全方位開源的Web應用防護系統; ELK 是比較火的開源日誌分析系統; 本節主要介紹,ELK 的 docker 部署及與 OpenWAF 的結合
OpenWAF簡介
OpenWAF是第一個全方位開源的Web應用防護系統(WAF),他基於nginx_lua API分析HTTP請求信息。OpenWAF由行為分析引擎和規則引擎兩大功能引擎構成。其中規則引擎主要對單個請求進行分析,行為分析引擎主要負責跨請求信息追蹤。
規則引擎的啟發來自modsecurity及lua-resty-waf,將ModSecurity的規則機制用lua實現。基於規則引擎可以進行協議規範,自動工具,註入攻擊,跨站攻擊,信息泄露,異常請求等安全防護,支持動態添加規則,及時修補漏洞。
行為分析引擎包含基於頻率的模糊識別,防惡意爬蟲,人機識別等防探測模塊,防CSRF,防CC,防提權,文件上傳防護等防攻擊模塊,cookie防篡改,防盜鏈,自定義響應頭,攻擊響應頁面等防信息泄露模塊。
除了兩大引擎之外,還包含統計,日誌,攻擊響應頁面,接入規則等基礎模塊。除了已有的功能模塊,OpenWAF還支持動態修改配置, 動態添加第三方模塊,使得在不重啟引擎中斷業務的條件下,升級防護。
OpenWAF支持將上述功能封裝為策略,不同的web application應用不同的策略來防護。將來還會打造雲平臺,策略還可分享供他人參考。
ELK簡介
ELK是三個不同工具的簡稱,組合使用可以完成各種日誌分析
Elasticsearch: 是一個基於 Apache Lucene(TM) 的開源搜索引擎,簡單點說就是用於建立索引並存儲日誌的工具
Logstash: 是一個應用程序,它可以對日誌的傳輸、過濾、管理和搜索提供支持。我們一般用它來統一對應用程序日誌進行收集管理,提供Web接口用於查詢和統計
Kibana: 用於更友好的展示分析日誌的web平臺,簡單點說就是有圖有真相,可以在上面生成各種各樣的圖表更直觀的顯示日誌分析的成果
安裝
ELK 的安裝,網上有很多,這裏只描述 docker 方式的部署
Elasticsearch
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
Logstash
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 文件內容如下: udp { # udp 服務配置 port => 60099 # 表示日誌服務器監聽在 60099 端口 codec => "json" # 接收 json 格式信息 } output { elasticsearch { hosts => ["192.168.39.17:9200"] # elasticsearch 的地址為 39.17,且端口為 9200 } } 上面的配置表示:openwaf 向 logstash 的 60099 端口,發送 udp 協議的 json 日誌,然後 logstash 將其存入 Elasticsearch
3、獲取 openwaf_logstash 地址
docker inspect openwaf_logstash | grep IPAddress
得到地址為:192.168.39.18
Kibana
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
OpenWAF配置
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
現訪問 192.168.36.44/?a=1 order by 1
訪問結果如下:
此時,訪問 192.168.39.19:5601,在 kibana 上查看日誌
若第一次使用 kibana,需要生成一個索引,如下(使用默認):
kibana 日誌顯示如下:
kibana 功能強大,可以做各種視圖,用來分析日誌,生成報表,更多功能請看 kibana官方文檔
文章轉自:https://my.oschina.net/qijian/blog/1186415
快速搭建 ELK + OpenWAF 環境