nginx lua和belial waf安装配置
因为 belial waf 是基于 nginx lua 模块开发的,所以俺们必须先安装 nginx lua module。
具体咋安装~~ 我就不写了。。自己 google 或者百度下。 我贴个 轩脉刃 的 安装教程大家自己看吧
安装nginx lua module 模块 http://www.dwz.cn/awDdZ
安装和配置 belial waf
其实很简单。 先给个最简单的例子,我们只开启 GET POST COOKIE 防御(开启了 SQL注入,遍历路径等攻击就没那么容易了)
1. 下载 belial waf 源代码,放到服务器某目录下,比如放到 /data/belial 下
2. 编辑 belial waf 配置文件 config.lua。 根据自己的情况主要修改如下,没列出来的选项 别动保留就行:
belialFileLogPath = "/data/belial/cake/log.belial", -- 日志的目录,所有的错误信息和攻击拦截信息所在
attackHtmlPageName = "",
regularRule = "default",
allowIpAccess = {},
alloAccessSpidersIp = {},
denyIPAccess = "",
globaldenyIpNgxShareDictExptimeSecond = 3600,
toLog = "On", -- 攻击信息是否纪录到日志文件
cookieMatch = "On", -- 是否对cookie进行关键字匹配判断
postMatch = "On", -- 是否对post请求进行关键字匹配判断
whiteModule = "Off", -- post白名单模块 是否开启
ngxPathInfoFixModule = "Off", --nginx 畸形路径解释防御
autoDenyIpModule = "Off", --自动拦截:根据攻击次数进行拦截 On 开启 Off关闭
ccGlobalLog = "Off", --cc全局记录模块
ccMatch = "Off", --是否开启CC防御
3. 编辑 nginx.conf 文件,在 http 节点下 加入以下参数
lua_package_path "/data/belial/?.lua"; # /data/belial 替换成你 belial源代码的路径
lua_shared_dict belial_global_deny_ip 50m;
init_by_lua_file /data/belial/init.lua; # /data/belial/init.lua 替换成你 belial源代码的路径下的 init.lua
lua_need_request_body on;
access_by_lua_file /data/belial/belial.lua; #/data/belial/belial.lua 替换成你 belial源代码的路径下的 belial.lua
4、确保 /data/belial/cake 目录 nginx 进程能读写。
chown -R www:www /data/belial/cake
5、 nginx 重启。 没看到啥错误就是配置OK了。
然后我们试试防御效果。我们模拟GET的 SQL注入探测, 在URL 里 假如 and 1=2 等之类的探测字符窜。 然后就可以看到 探测被拦截了。
6、我们去日志 log.belial 文件里看下 被拦截的信息
[get] 10.211.55.2 [2013-08-31 08:07:35] 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17=>>www.xxoo.com/php.php?sdf=dss and 1=2
可以看到 在 get 模块被拦截了
相关文章
- app多版本的服务端部署
背景 手机客户端按一定周期发版,但是客户不一定会及时更新到最新版本,所以需要服务端能支持旧版手机客户端。 服务端支持旧版手机客户端的方式主要有: 相同的接口支持不同版本手机端的请求,需要服务端接口
- 反向代理时URI的处理
当使用proxy_pass的时候,请求的URI传递给服务器是有一定的规则的。 proxy_pass带有URI 比如下面的配置: location /name/ { proxy_pass htt
- nginx-echo-命令引发的探索
起因 最初在 nginx.conf 中调试时,当时希望 echo 出对应的变量值,并没有成功。起初认为是 nginx 安装时,并没有安装 echo 模块,然而事后发现实际用的是 openresty,o
- nginx499状态码产生的原因
什么是 nginx 的 499 499 是 nginx 扩展的 4xx 错误,目的只是用于记录,并没有实际的响应。看一下 nginx 源码 ngx_http_request.h 对 499 的定义:
- Nginx配置文件参数说明
定义Nginx运行的用户和用户组 user www www; nginx进程数,建议设置为等于CPU数量*核数。 worker_processes 8; 全局错误日志定义类型,[ debug |
随机推荐
- app多版本的服务端部署
背景 手机客户端按一定周期发版,但是客户不一定会及时更新到最新版本,所以需要服务端能支持旧版手机客户端。 服务端支持旧版手机客户端的方式主要有: 相同的接口支持不同版本手机端的请求,需要服务端接口
- 反向代理时URI的处理
当使用proxy_pass的时候,请求的URI传递给服务器是有一定的规则的。 proxy_pass带有URI 比如下面的配置: location /name/ { proxy_pass htt
- nginx-echo-命令引发的探索
起因 最初在 nginx.conf 中调试时,当时希望 echo 出对应的变量值,并没有成功。起初认为是 nginx 安装时,并没有安装 echo 模块,然而事后发现实际用的是 openresty,o
- nginx499状态码产生的原因
什么是 nginx 的 499 499 是 nginx 扩展的 4xx 错误,目的只是用于记录,并没有实际的响应。看一下 nginx 源码 ngx_http_request.h 对 499 的定义:
- Nginx配置文件参数说明
定义Nginx运行的用户和用户组 user www www; nginx进程数,建议设置为等于CPU数量*核数。 worker_processes 8; 全局错误日志定义类型,[ debug |