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:

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