Nginx安装ngx_lua_waf

9 篇文章 0 订阅

ngx_lua_waf改版,增加网段、UA、主机白名单等功能,修复了一些bug,项目地址:https://github.com/whsir/ngx_lua_waf

ngx_lua_waf改版基于ngx_lua_waf二次修改,增加了一些必要的功能,使用起来简单,高性能和轻量级。

主要功能如下:

♦防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击
♦防止svn/备份之类文件泄漏
♦防止ApacheBench之类压力测试工具的攻击
♦屏蔽常见的扫描黑客工具,扫描器
♦屏蔽异常的网络请求
♦屏蔽图片附件类目录php执行权限
♦防止webshell上传
♦可以根据ip、网段、server_name、User-Agent做白名单

本文基于Centos7.x系统,关闭selinux,关闭防火墙(或自行设置规则)

想要使用ngx_lua_waf改版,首先要编译Nginx增加lua模块。

配置方法如下

1、安装所需依赖

 

1

yum install wget gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel

2、下载ngx_devel_kit

 

1

2

3

cd /usr/local/src

wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.1rc1.tar.gz

tar xf v0.3.1rc1.tar.gz

3、下载lua-nginx-module

 

1

2

wget https://github.com/openresty/lua-nginx-module/archive/v0.10.14.tar.gz

tar xf v0.10.14.tar.gz

4、安装luajit

 

1

2

3

4

wget https://github.com/openresty/luajit2/archive/v2.1-20190329.tar.gz

cd luajit2-2.1-20190329

make

make install

5、导入环境变量

 

1

2

export LUAJIT_LIB=/usr/local/lib

export LUAJIT_INC=/usr/local/include/luajit-2.1

6、编译nginx模块

 

1

2

3

4

5

6

7

8

useradd -s /bin/false -M www

cd /usr/local/src

wget http://nginx.org/download/nginx-1.14.2.tar.gz

tar xf nginx-1.14.2.tar.gz

cd nginx-1.14.2

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --add-module=/usr/local/src/ngx_devel_kit-0.3.1rc1 --add-module=/usr/local/src/lua-nginx-module-0.10.14 --with-ld-opt=-Wl,-rpath,$LUAJIT_LIB

make

make install

7、设置Nginx启动服务

 

1

2

3

4

5

6

ln -sv /usr/local/nginx/sbin/nginx /usr/local/sbin/

wget -P /etc/init.d/ http://down.whsir.com/downloads/nginx

chmod +x /etc/init.d/nginx

chkconfig --add nginx

chkconfig nginx on

/etc/init.d/nginx start

8、下载ngx_lua_waf改版

 

1

2

3

4

cd /usr/local/nginx/conf

wget https://github.com/whsir/ngx_lua_waf/archive/v1.0.3.tar.gz

tar xf v1.0.3.tar.gz

mv ngx_lua_waf-1.0.3/ waf

9、在nginx.conf的http字段内添加以下内容

 

1

2

3

4

lua_package_path "/usr/local/nginx/conf/waf/?.lua";

lua_shared_dict limit 10m;

init_by_lua_file  /usr/local/nginx/conf/waf/init.lua;

access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;

10、最后重启nginx(reload也可以的)

 

1

/etc/init.d/nginx restart

11、验证

访问http://域名或IP地址/index.php?id=../etc/passwd

例如:http://192.168.157.132/index.php?id=../etc/passwd

看到503 Service Temporarily Unavailable则表示配置成功

 

config.lua配置文件说明

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

    RulePath = "/usr/local/nginx/conf/waf/wafconf/"

    --规则存放目录

    attacklog = "off"

    --是否开启攻击信息记录,需要配置logdir

    logdir = "/usr/local/nginx/logs/hack/"

    --log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限

    UrlDeny="on"

    --是否拦截url访问(如果你用了phpmyadmin,开启此项会有问题)

    Redirect="on"

    --是否拦截后重定向

    CookieMatch = "on"

    --是否拦截cookie攻击

    postMatch = "on"

    --是否拦截post攻击(可能会导致上传功能异常)

    whiteModule="off"

    --是否开启URL白名单

    whiteHostModule="off"

    --是否开启server_name白名单

    black_fileExt={"php","jsp"}

    --填写不允许上传文件后缀类型

    ipWhitelist={"127.0.0.1","172.16.1.0-172.16.1.255"}

    --ip白名单,多个ip用逗号分隔

    ipBlocklist={"1.0.0.1","2.0.0.0-2.0.0.255"}

    --ip黑名单,多个ip用逗号分隔

    hostWhiteList = {"blog.whsir.com","down.whsir.com"}

    --server_name白名单,多个用逗号分隔

    CCDeny="off"

    --是否开启拦截cc攻击

    CCrate = "100/60"

    --设置cc攻击频率,单位为秒.

    --默认1分钟同一个IP只能请求同一个地址100次

    html=[[~~]]

    --警告内容,可在中括号内自定义

    备注:不要乱动双引号,区分大小写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值