安装
安装最新文档,请参考《轻松玩转OpenWAF之安装篇》
OpenWAF简介
OpenWAF是第一个全方位开源的Web应用防护系统(WAF),他基于nginx_lua API分析HTTP请求信息。OpenWAF由行为分析引擎和规则引擎两大功能引擎构成。其中规则引擎主要对单个请求进行分析,行为分析引擎主要负责跨请求信息追踪。
规则引擎的启发来自modsecurity及lua-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防护
- 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;
- OpenWAF接入规则修改
修改/opt/OpenWAF/conf/twaf_access_rule.json文件
将"state"值设为false即可