1. 程式人生 > >快速搭建 ELK + OpenWAF 環境

快速搭建 ELK + OpenWAF 環境

日誌分析 功能 響應頭 使用 elastic 官方 升級 csr 視圖

摘要: 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 環境