OpenWAF快速上手

服务器

浏览数:59

2020-6-9

安装

安装最新文档,请参考《轻松玩转OpenWAF之安装篇》

OpenWAF简介

OpenWAF是第一个全方位开源的Web应用防护系统(WAF),他基于nginx_lua API分析HTTP请求信息。OpenWAF由行为分析引擎和规则引擎两大功能引擎构成。其中规则引擎主要对单个请求进行分析,行为分析引擎主要负责跨请求信息追踪。

规则引擎的启发来自modsecuritylua-resty-waf,将ModSecurity的规则机制用lua实现。基于规则引擎可以进行协议规范,自动工具,注入攻击,跨站攻击,信息泄露,异常请求等安全防护,支持动态添加规则,及时修补漏洞。

行为分析引擎包含基于频率的模糊识别,防恶意爬虫,人机识别等防探测模块,防CSRF,防CC,防提权,文件上传防护等防攻击模块,cookie防篡改,防盗链,自定义响应头,攻击响应页面等防信息泄露模块。

除了两大引擎之外,还包含统计,日志,攻击响应页面,接入规则等基础模块。除了已有的功能模块,OpenWAF还支持动态修改配置, 动态添加第三方模块,使得在不重启引擎中断业务的条件下,升级防护。

OpenWAF支持将上述功能封装为策略,不同的web application应用不同的策略来防护。将来还会打造云平台,策略还可分享供他人参考。

发布应用

简介

发布应用,需要配置 OpenWAF 的接入规则,配置文件位置:/opt/OpenWAF/conf/twaf_access_rule.json

OpenWAF的接入规则和nginx的配置结合,达到发布应用的目的

接入规则配置简要说明

{
    "twaf_access_rule": [
        "rules": [                                 -- 数组,注意先后顺序
            {                                      
                "ngx_ssl": false,                  -- nginx认证的开关
                "ngx_ssl_cert": "path",            -- nginx认证所需PEM证书地址
                "ngx_ssl_key": "path",             -- nginx认证所需PEM私钥地址
                "host": "www.baidu.com",           -- 域名,正则匹配
                "port": 80,                        -- 端口号(缺省80)
                "path": "\/",                      -- 路径,正则匹配
                "server_ssl": false,               -- 后端服务器ssl开关
                "forward": "server_5",             -- 后端服务器upstream名称
                "forward_addr": "1.1.1.2",         -- 后端服务器ip地址
                "forward_port": "8080",            -- 后端服务器端口号(缺省80)
                "policy": "policy_uuid"            -- 安全策略ID
            }
        ]
    }
}

发布应用举例

接下来结合nginx配置举例讲解接入规则的使用

初次使用OpenWAF

使用OpenWAF提供的nginx配置文件

如果用 OpenWAF 默认的 /etc/ngx_openwaf.conf 配置文件(默认监听 80 端口)

修改 /opt/OpenWAF/conf/twaf_access_rule.json 文件中第一条接入规则的”forward_addr”值

    要防护的服务器为192.168.3.1:80,配置如下:
        "forward_addr": "192.168.3.1"
    
    要防护的服务器为22.22.22.22:8090,配置如下:
        "forward_addr": "22.22.22.22",
        "forward_port": 8090

此时启动nginx,进行访问即可

小提示:
    启动nginx命令  /usr/local/openresty/nginx/sbin/nginx -c /etc/ngx_openwaf.conf  
    停止nginx命令  /usr/local/openresty/nginx/sbin/nginx -c /etc/ngx_openwaf.conf -s stop

默认SQLI,CC防护都是开启的,可以进行SQL注入或CC攻击,看防护效果

深入防护,深入测试,请看其他文档

使用自己原有的nginx配置

拥有自己的nginx配置,仅需以下两步即可体验OpenWAF防护

  1. nginx配置修改
    在 nginx 的 http 级别添加如下两行:
    include /opt/OpenWAF/conf/twaf_main.conf;
    include /opt/OpenWAF/conf/twaf_api.conf;
要防护的 server 或 location 级别添加如下一行:
    include /opt/OpenWAF/conf/twaf_server.conf;
  1. OpenWAF接入规则修改
    修改/opt/OpenWAF/conf/twaf_access_rule.json文件
    将”state”值设为false即可

作者:温柔魔君