Nginx编译安装ngx_lua_waf安全防护

VPS

Nginx编译安装ngx_lua_waf安全防护

前言

ngx_lua_waf 是一个基于 ngx_lua 的 web 应用防火墙,使用简单,高性能和轻量级。

  • 防止 sql 注入,本地包含,部分溢出,fuzzing 测试,xss,SSRF 等 web 攻击
  • 防止 svn/备份之类文件泄漏
  • 防止 ApacheBench 之类压力测试工具的攻击
  • 屏蔽常见的扫描黑客工具,扫描器
  • 屏蔽异常的网络请求
  • 屏蔽图片附件类目录 php 执行权限
  • 防止 webshell 上传

准备

ngx_lua_waf 推荐使用 Luajit 做 lua 支持,而 Luajit 需要 ngx_devel_kit 模块与 lua-nginx-module 模块。进入/usr/local/src 目录准备以上文件。
1、下载 ngx_devel_kit

wget //github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
tar zxvf v0.3.0.tar.gz

2、下载 lua-nginx-module

wget //github.com/openresty/lua-nginx-module/archive/v0.10.10.tar.gz
tar zxvf v0.10.10.tar.gz

3、安装 Lua 环境

wget http://luajit.org/download/LuaJIT-2.0.3.tar.gz
tar xf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5
make && sudo make install

编译

1、进入 Nginx 安装目录:

cd /usr/local/src/nginx-1.13.3

2、导入环境变量

#这个很有可能不一样
export LUAJIT_LIB=/usr/local/lib
#这个很有可能不一样
export LUAJIT_INC=/usr/local/include/luajit-2.0

3、查看目前 Nginx 的版本

nginx -V

4、加载模块

./configure(Nginx-V 已有的模块)--add-module=/usr/local/src/ngx_devel_kit-0.3.0 --add-module=/usr/local/src/lua-nginx-module-0.10.10 --with-ld-opt=-Wl,-rpath,$LUAJIT_LIB

5、编译参数

# 注意不要 make install
make
#重命名 nginx 旧版本二进制文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
#拷贝一份新编译的二进制文件
cp objs/nginx /usr/local/nginx/sbin/
#升级
make upgrade
#确认
nginx -V
#重新加载 Nginx
nginx -s reload

安装

1、准备 Luajit
//github.com/loveshell/ngx_lua_waf下载 Luajit。
nginx 安装路径假设为/usr/local/nginx/,把 ngx_lua_waf 下载到 conf 目录下,解压命名为 waf。
2、在 nginx.conf 的 http 段添加

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;

配置 config.lua 里的 waf 规则目录(一般在 waf/conf/目录下),绝对路径如有变动,需对应修改:

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

然后重启 nginx 即可

service nginx restart

配置

1、配置文件详细说明

    RulePath = "/usr/local/nginx/conf/waf/wafconf/"
    --规则存放目录
    attacklog = "on"n
    --是否开启攻击信息记录,需要配置 logdir
    logdir = "/home/wwwlogs/"
    --log 存储目录,需要 nginx 用户的可写权限。该目录 LNMP 默认建立,放在这个目录即可
    --日志文件名称格式如下:虚拟主机名 _sec.log
    UrlDeny="on"
    --是否拦截 url 访问
    Redirect="on"
    --是否拦截后重定向
    CookieMatch = "on"
    --是否拦截 cookie 攻击
    postMatch = "on"
    --是否拦截 post 攻击
    whiteModule = "on"
    --是否开启 URL 白名单
    black_fileExt={"php","jsp"}
    --填写不允许上传文件后缀类型
    ipWhitelist={"127.0.0.1"}
    --ip 白名单,多个 ip 用逗号分隔
    ipBlocklist={"1.0.0.1"}
    --ip 黑名单,多个 ip 用逗号分隔
    CCDeny="on"
    --是否开启拦截 cc 攻击(需要 nginx.conf 的 http 段增加 lua_shared_dict limit 10m;)
    CCrate = "100/60"
    --设置 cc 攻击频率,单位为秒.
    --默认 1 分钟同一个 IP 只能请求同一个地址 100 次
    html=[[Please go away~~]]
    --警告内容,可在中括号内自定义
    备注:不要乱动双引号,区分大小写

2、部署完毕可以尝试如下命令进行测试:

curl //www.youfencun.com/index.php?id=../etc/passwd

返回网站防火墙 Html 源码即表示配置成功,也可通过网页访问,返回如下图所示:
Nginx编译安装ngx_lua_waf安全防护

© 声明:本站原创文章采用BY-NC-SA创作共用协议,转载时请标明本文地址;非原创(转载)文章版权归原作者所有。

RECENT POSTS

Stay Hungry. Stay Foolish.

数据库查询次数:11次,页面生成时间:0.030秒。