OpenWAF+ elk 安裝

 最近公司需要搭建保護,公司網站的軟件,於是選擇了,OpenWAF+elk結合的搭建方式具體過程如下:

過程中參考連接有:

1.openwaf :

https://www.w3cschool.cn/openwaf/openwaf-8tr524ot.html)

2. ELK的幫助手冊:

Docker Hub官網:https://hub.docker.com/r/sebp/elk/

Docker ELK使用文檔:http://elk-docker.readthedocs.io/

下面開始正文:

一、安裝openwaf

  1. Deb安裝OpenWAF依賴
  1.     cd /opt
  2.     apt-get install wget git swig make perl build-essential zlib1g-dev libgeoip-dev libncurses5-dev libreadline-dev -y
  3.     wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
  4.     wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
  5.     wget https://openresty.org/download/openresty-1.11.2.2.tar.gz
  6.     tar -zxvf pcre-8.40.tar.gz
  7.     tar -zxvf openssl-1.0.2k.tar.gz
  8.     tar -zxvf openresty-1.11.2.2.tar.gz
  9.     rm -rf pcre-8.40.tar.gz \
  10.            openssl-1.0.2k.tar.gz \
  11.            openresty-1.11.2.2.tar.gz

 

  1. PS:
  2.     1.1 OpenSSL 版本要求
  3.  
  4.         OpenResty 要求 OpenSSL 最低版本在 1.0.2e 以上,但 apt-get 安裝 openssl 並不滿足此版本,因此提供解決方法如下:
  5.  
  6.         方法 1. apt-get 使用 backports 源安裝 openssl,如 jessie-backports 
  7.             echo "deb http://mirrors.163.com/debian/ jessie-backports main" >> /etc/apt/sources.list 
  8.             apt-get update 
  9.             apt-get install -t jessie-backports openssl 
  10.  
  11.         方法 2. 下載 openssl 源代碼,如 1.0.2k 版本 
  12.             wget -c http://www.openssl.org/source/openssl-1.0.2k.tar.gz 
  13.             tar -zxvf openssl-1.0.2k.tar.gz
  14.             ./config 
  15.             make && make install 
  16.  
  17.         若用方法 1 方法 2 後, openssl version 命令顯示的版本依舊低於 1.0.2e 版本,請求方法 3
  18.  
  19.         方法 3. 編譯 openresty 時指定 openssl 安裝目錄
  20.             wget -c http://www.openssl.org/source/openssl-1.0.2k.tar.gz
  21.             tar -zxvf openssl-1.0.2k.tar.gz
  22.             編譯 openresty 時通過 --with-openssl=/path/to/openssl-xxx/ 指定 openssl 安裝路徑 
  23.  
  24.         本示例使用方法 3
  25.  
  26.     1.2 pcre-jit
  27.  
  28.         OpenResty 依賴 PCRE ,但通過 apt-get 安裝無法開啓 pcre-jit,解決方法: 
  29.  
  30.         方法 1. 源碼編譯
  31.             wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz 
  32.             tar -zxvf pcre-8.40.tar.gz 
  33.             cd pcre-8.40 
  34.             ./configure --enable-jit 
  35.             make && make install 
  36.  
  37.         方法 2. 編譯 openresty 時指定 openssl 安裝目錄
  38.             wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz 
  39.             tar -zxvf pcre-8.40.tar.gz 
  40.             編譯 openresty 時通過 --with-pcre=/path/to/pcre-xxx/ 指定 pcre 安裝路徑
  41.  
  42.         本示例使用方法 2
  1. 安裝 OpenWAF
  1.     cd /opt 
  2.     git clone https://github.com/titansec/OpenWAF.git
  3.     mv /opt/OpenWAF/lib/openresty/ngx_openwaf.conf /etc
  4.     mv /opt/OpenWAF/lib/openresty/configure /opt/openresty-1.11.2.2
  5.     mv /opt/OpenWAF/lib/openresty/* /opt/openresty-1.11.2.2/bundle/
  6.     rm -rf /opt/OpenWAF/lib/openresty
  1. PS:
  2.     2.1 ngx_openwaf.conf
  3.         ngx_openwaf.conf OpenResty [nginx](http://nginx.org/en/docs/) 配置文件
  4.  
  5.     2.2 configure
  6.         configure OpenResty 的編譯文件
  7.         OpenWAF 修改了此文件,用於編譯 OpenWAF 所依賴的第三方模塊
  1. 編譯 openresty
  1.     cd /opt/openresty-1.11.2.2/ 
  2.     ./configure --with-pcre-jit --with-ipv6 \ 
  3.                 --with-http_stub_status_module \ 
  4.                 --with-http_ssl_module \ 
  5.                 --with-http_realip_module \ 
  6.                 --with-http_sub_module  \ 
  7.                 --with-http_geoip_module \ 
  8.                 --with-openssl=/opt/openssl-1.0.2k \
  9.                 --with-pcre=/opt/pcre-8.40 \
  10.     make && make install

 

二、OpenWAF配置

1.簡介:

  1. 發佈應用,需要配置 OpenWAF 的接入規則,配置文件位置:/opt/OpenWAF/conf/twaf_access_rule.json
  2.  
  3. OpenWAF的接入規則和nginx的配置結合,達到發佈應用的目的

2.接入規則配置簡要說明

  1. {
  2.     "twaf_access_rule": [
  3.         "rules": [                                 -- 數組,注意先後順序
  4.             {                                     
  5.                 "ngx_ssl": false,                  -- nginx認證的開關
  6.                 "ngx_ssl_cert": "path",            -- nginx認證所需PEM證書地址
  7.                 "ngx_ssl_key": "path",             -- nginx認證所需PEM私鑰地址
  8.                 "host": "www.baidu.com",           -- 域名,正則匹配
  9.                 "port": 80,                        -- 端口號(缺省80
  10.                 "path": "\/",                      -- 路徑,正則匹配
  11.                 "server_ssl": false,               -- 後端服務器ssl開關
  12.                 "forward": "server_5",             -- 後端服務器upstream名稱
  13.                 "forward_addr": "1.1.1.2",         -- 後端服務器ip地址
  14.                 "forward_port": "8080",            -- 後端服務器端口號(缺省80
  15.                 "policy": "policy_uuid"            -- 安全策略ID
  16.             }
  17.         ]
  18.     }
  19. }

3.發佈應用舉例

  1. 接下來結合nginx配置舉例講解接入規則的使用 

4.使用OpenWAF提供的nginx配置文件

  1. 如果用 OpenWAF 默認的 /etc/ngx_openwaf.conf 配置文件(默認監聽 80 端口)
  2.  
  3. 修改 /opt/OpenWAF/conf/twaf_access_rule.json 文件中第一條接入規則的"forward_addr" 
  1.     要防護的服務器爲192.168.3.1:80,配置如下:
  2.         "forward_addr": "19168.3.1"
  3.  
  4.     要防護的服務器爲22.22.22.22:8090,配置如下:
  5.         "forward_addr": "22.22.22.22",
  6.         "forward_port": 8090
  1. 此時啓動nginx,進行訪問即可   
  1. 小提示:
  2.     啓動nginx命令  /usr/local/openresty/nginx/sbin/nginx -c /etc/ngx_openwaf.conf 
  3.     停止nginx命令  /usr/local/openresty/nginx/sbin/nginx -c /etc/ngx_openwaf.conf -s stop
  1. 默認SQLICC防護都是開啓的,可以進行SQL注入或CC攻擊,看防護效果 
  2.  
  3. 深入防護,深入測試,請看其他文檔 

5.使用自己原有的nginx配置

  1. 擁有自己的nginx配置,僅需以下兩步即可體驗OpenWAF防護
  1. nginx配置修改
    在 nginx 的 http 級別添加如下兩行:

include /opt/OpenWAF/conf/twaf_main.conf;

include /opt/OpenWAF/conf/twaf_api.conf;

要防護的 server 或 location 級別添加如下一行:

    1. include /opt/OpenWAF/conf/twaf_server.conf;

OpenWAF接入規則修改:
修改/opt/OpenWAF/conf/twaf_access_rule.json文件
將"state"值設爲false即可。

 

2. conf/twaf_default_conf.json 中 twaf_log 模塊

  1. "twaf_log": {
  2. "sock_type":"udp",
  3. "content_type":"JSON",
  4. "host":"192.168.39.18",
  5. "port":60099,
  6. ...

三、elk環境搭建

1、安裝先決條件:

Elasticsearch至少需要單獨2G的內存;

防火牆開放相關端口;

vm.max_map_count至少需要262144,附永久修改vm.max_map_count方法如下圖:

 

執行命令:sysctl -p 查看

 

2、安裝Docker ELK:

1、執行命令:docker pull sebp/elk 將鏡像pull到本地來;

2、執行命令:docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 60099:60099 -it --name elk sebp/elk(-p是開啓端口映射,由主機映射到docker)

3、進入容器:docker exec -it elk /bin/bash:

/etc/logstash/conf.d/02-beats-input.conf添加

udp { # udp 服務配置

  port => 60099 # 表示日誌服務器監聽在 60099 端口

  codec => "json" # 接收 json 格式信息

}

/etc/logstash/conf.d/30-output.conf將

output {

    elasticsearch {

        hosts => ["192.168.39.17:9200"]

……下的其餘格式都刪除

4、打開瀏覽器,輸入:http://<your-host>:5601 點擊創建

 

5、看到如下界面,到此安裝結束

ps:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章