Nginx+lua后续添加waf支持

6 篇文章 0 订阅
1 篇文章 0 订阅

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

近期公司测试环境的应用经常被扫描出来有一些安全漏洞,然而测试环境的入口是一个暴露在公网的nginx,这样的话没有安全防护措施,还是比较危险的。
这次通过给nginx加上waf插件来实现web安全防护。


一、waf是什么?

Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

二、安装使用

1.前提

安装nginx + lua 的环境,安装教程可以参考我之前的一篇文章[nginx 中添加 lua 模块,支持lua脚本以及遇到的坑]

2.开始安装

本次使用ngx_lua_waf 模块来给nginx添加waf的支持。
ngx_lua_waf的相关信息可以点击ngx_lua_waf查看。
ngx_lua_waf的开发者也提供了一键安装脚本包括(nginx + lua + waf),克隆其项目后,执行install.sh就可以了。不过脚本很久没有维护了,比较老,可以自行更改一些参数后再运行。

1.下载并解压ngx_lua_waf
cd /usr/local/nginx-1.22.0/conf
wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip --no-check-certificate
unzip master.zip
mkdir waf
mv ngx_lua_waf-master/* waf/
rm -rf ngx_lua_waf-master

在这里插入图片描述

2. 创建攻击日志目录hack并授予权限
cd /usr/local/nginx-1.22.0/logs
mkdir hack
chmod -R 775 hack

在这里插入图片描述

3. 修改waf的相关配置

ngx_lua_waf的配置文件名称为 config.lua
因为我服务器上安装的nginx版本比较多,所以目录加了版本区分,我这次的nginx目录为/usr/local/nginx-1.22.0
所以waf配置修改如下:

vim /usr/local/nginx-1.22.0/conf/waf/config.lua

在这里插入图片描述
其他相关配置信息如下:

	RulePath = "/usr/local/nginx/conf/waf/wafconf/"
    --规则存放目录
    attacklog = "off"
    --是否开启攻击信息记录,需要配置logdir
    logdir = "/usr/local/nginx/logs/hack/"
    --log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限
    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~~]]
    --警告内容,可在中括号内自定义
    备注:不要乱动双引号,区分大小写
4. 修改nginx.conf 配置

在nginx.conf的http段添加

	lua_package_path "/usr/local/nginx-1.22.0/conf/waf/?.lua";
    lua_shared_dict limit 10m;
    init_by_lua_file  /usr/local/nginx-1.22.0/conf/waf/init.lua; 
	access_by_lua_file /usr/local/nginx-1.22.0/conf/waf/waf.lua;

在这里插入图片描述

5. 重启nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

在这里插入图片描述

6. 检查规则是否生效

在正常的访问URL后面加上参数 ?id=../etc/passwd
返回如下页面,说明规则生效。
在这里插入图片描述

7.规则说明

ngx_lua_waf的规则目录在/usr/local/nginx-1.22.0/conf/waf/wafconf下,其中已经内置了一些默认规则,按行,使用正则表达式匹配。
在这里插入图片描述
也可以对其中的规则进行自定义补充。
可以参考ngx_lua_waf

过滤规则在wafconf下,可根据需求自行调整,每条规则需换行,或者用|分割

	args里面的规则get参数进行过滤的
	url是只在get请求url过滤的规则		
	post是只在post请求过滤的规则		
	whitelist是白名单,里面的url匹配到不做过滤		
	user-agent是对user-agent的过滤规则


默认开启了get和post过滤,需要开启cookie过滤的,编辑waf.lua取消部分--注释即可

日志文件名称格式如下:虚拟主机名_sec.log
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值