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则表示配置成功