栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Nginx+lua后续添加waf支持

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nginx+lua后续添加waf支持

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

Nginx+lua后续添加waf支持
  • 前言
  • 一、waf是什么?
  • 二、安装使用
    • 1.前提
    • 2.开始安装
        • 1.下载并解压ngx_lua_waf
        • 2. 创建攻击日志目录hack并授予权限
        • 3. 修改waf的相关配置
        • 4. 修改nginx.conf 配置
        • 5. 重启nginx
        • 6. 检查规则是否生效
        • 7.规则说明


前言

近期公司测试环境的应用经常被扫描出来有一些安全漏洞,然而测试环境的入口是一个暴露在公网的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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/974400.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号