ModSecurity
在Ubuntu和Nginx上安装,nginx版本为1.14.0。
安装需要包
下载编译ModSecurity 3.0源代码
进入目录运行编译
如果出现fatal: No names found, cannot describe anything.,是可以忽略的。
ModSecurity连接器
下载连接器代码
根据已安装的nginx版本安装需要的nginx原代码
需要把连接器编译为动态模块到nginx中,到nginx目录下,其中的编译命令根据nginx -V来决定。
PS:运行nginx -t测试nginx运行,如果出现报错ModSecurity二进制文件不匹配,则可能是nginx版本验证不匹配,那就需要源码编译安装nginx,同时把ModSecurity一起编译。
加载nginx动态模块
编译完成后的动态模块需要到配置文件中启动加载,修改配置文件/etc/nginx/nginx.conf中
启用和测试规则
安装Spiderlabs的规则
把ModSecurity中的unicode.mapping文件复制到以上目录
修改配置文件,其中配置部分被注释,需要安需要启用。
添加owasp的规则,在nginx下创建目录
在modsec中修改modsecurity.conf,添加配置文件,同时把rules目录下的配置文件添加进去
在nginx配置文件中添加此配置
可以到crs配置文件中找到对应的规则来启用,比如如下启用id为900240的后缀文件检测
默认情况下会拦截常见的web攻击,比如
配置新的conf文件
如果默认的规则文件不符合需求,获取由于其他原因需要添加规则。先看一个普通的规则是怎么样的
相当于在wp-login.php页面中,禁用对参数pwd的拦截检查。其中的格式是
比如,我们打算写一个只允许特定IP访问的路径。这时候需要两条规则来判断,需要chain来连接动作。把它保存到上面crs配置文件路径。重启nginx
配置文档参考:http://www.modsecurity.cn/chm/ConfigurationDirectives.html
VeryNginx
VeryNginx 基于 lua_nginx_module(openrestry) 开发。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。本质上这并不是一个WAF,只是openrestry的界面化。但是可以通过界面化的配置规则来实现waf的功能。
https://github.com/alexazhou/VeryNginx
一键配置
克隆 VeryNginx 仓库到本地, 然后进入仓库目录,执行以下命令
即可一键安装 VeryNginx 和 以及依赖的 OpenResty,可以先修改其中的版本为新版本地址再安装。
手动安装
手动安装,需要本地的nginx有openrestry,所以先安装。
这时候会把openrestry加入快捷命令,如果直接执行openrestry将开启自带的nginx。
再来安装verynginx
在nginx的配置文件中添加以下规则,需要配置到不同的地方。
在地址/verynginx/index_zh.html下即可访问到页面。
默认的账号密码都是verynginx / verynginx。添加规则的方式比modsecurity简单,但自带的规则过于简单,需要自己添加规则。
已有的规则可以参考:https://github.com/unixhot/waf
JxWaf
https://github.com/jx-sec/jxwaf
jxwaf(锦衣盾)是一款开源WEB应用防火墙,分为客户端和服务端,客户端也是openrestry开发而来。
服务端安装
采用私有化部署
拉取后,访问地址邮箱验证码随便填写,注册账号在全局配置页面获取”api key”和”api password”
客户端安装
在下载的文件内:
在网站管理中添加对应的域名和IP端口
Janusec
可多节点布置的应用网关。https://github.com/Janusec/janusec
此处选择的是1,主节点。默认安装的路径为 /usr/local/janusec/
由于需要postgresql
然后编辑 /usr/local/janusec/config.json ,尝试开启waf
设置中管理太台监听设置为true,则使用http:9080端口,此处修改为false,直接在目录janusec-admin/
默认用户名:admin,默认口令:J@nusec123。在应用管理中添加IP端口信息即可。