nginx lua和belial waf安装配置

技术文档网 2021-04-28

因为 belial waf 是基于 nginx lua 模块开发的,所以俺们必须先安装 nginx lua module。

具体咋安装~~ 我就不写了。。自己 google 或者百度下。 我贴个 轩脉刃 的 安装教程大家自己看吧

其实很简单。 先给个最简单的例子,我们只开启 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 模块被拦截了

相关文章

  1. app多版本的服务端部署

    背景 手机客户端按一定周期发版,但是客户不一定会及时更新到最新版本,所以需要服务端能支持旧版手机客户端。 服务端支持旧版手机客户端的方式主要有: 相同的接口支持不同版本手机端的请求,需要服务端接口

  2. 反向代理时URI的处理

    当使用proxy_pass的时候,请求的URI传递给服务器是有一定的规则的。 proxy_pass带有URI 比如下面的配置: location /name/ { proxy_pass htt

  3. nginx-echo-命令引发的探索

    起因 最初在 nginx.conf 中调试时,当时希望 echo 出对应的变量值,并没有成功。起初认为是 nginx 安装时,并没有安装 echo 模块,然而事后发现实际用的是 openresty,o

  4. nginx499状态码产生的原因

    什么是 nginx 的 499 499 是 nginx 扩展的 4xx 错误,目的只是用于记录,并没有实际的响应。看一下 nginx 源码 ngx_http_request.h 对 499 的定义:

  5. Nginx配置文件参数说明

    定义Nginx运行的用户和用户组 user www www; nginx进程数,建议设置为等于CPU数量*核数。 worker_processes 8; 全局错误日志定义类型,[ debug |

随机推荐

  1. app多版本的服务端部署

    背景 手机客户端按一定周期发版,但是客户不一定会及时更新到最新版本,所以需要服务端能支持旧版手机客户端。 服务端支持旧版手机客户端的方式主要有: 相同的接口支持不同版本手机端的请求,需要服务端接口

  2. 反向代理时URI的处理

    当使用proxy_pass的时候,请求的URI传递给服务器是有一定的规则的。 proxy_pass带有URI 比如下面的配置: location /name/ { proxy_pass htt

  3. nginx-echo-命令引发的探索

    起因 最初在 nginx.conf 中调试时,当时希望 echo 出对应的变量值,并没有成功。起初认为是 nginx 安装时,并没有安装 echo 模块,然而事后发现实际用的是 openresty,o

  4. nginx499状态码产生的原因

    什么是 nginx 的 499 499 是 nginx 扩展的 4xx 错误,目的只是用于记录,并没有实际的响应。看一下 nginx 源码 ngx_http_request.h 对 499 的定义:

  5. Nginx配置文件参数说明

    定义Nginx运行的用户和用户组 user www www; nginx进程数,建议设置为等于CPU数量*核数。 worker_processes 8; 全局错误日志定义类型,[ debug |