摘要:说明防止注入,本地包含,部分溢出,测试,等攻击防止备份之类文件泄漏防止之类压力测试工具的攻击屏蔽常见的扫描黑客工具,扫描器屏蔽异常的网络请求屏蔽图片附件类目录执行权限防止上传下载使用使用安装下载解压后,将整放到目录中,并命名为配置安装路径假
1. Ngx lua waf 说明
防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击
防止svn/备份之类文件泄漏
防止ApacheBench之类压力测试工具的攻击
屏蔽常见的扫描黑客工具,扫描器
屏蔽异常的网络请求
屏蔽图片附件类目录php执行权限
防止webshell上传
使用git
git clone https://github.com/loveshell/...
使用wget
3. 安装wget https://github.com/loveshell/...
下载解压后,将整 ngx_lua_waf 放到 nginx conf 目录中,并命名为 waf;4. 配置
4.1. 在nginx.conf的http段添加nginx安装路径假设为:/usr/local/nginx/conf/ ;以下都将以此配置为例进行说明
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;4.2. 配置config.lua
--配置waf规则目录 RulePath = "/usr/local/nginx/conf/waf/wafconf/" --修改失败提示 html=[[{"retcode":"21000","messages":"请求失败,请稍后再试","body":{}}]] --开启cc攻击,需要在nginx.conf http 段配置lua_shared_dict CCDeny="on" -- 设置cc攻击频率,单位为秒 (如:同一个ip请求同一个地址,每秒最多请求50次) CCrate = "50/1"4.3. 其他详细配置说明
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~~]] --警告内容,可在中括号内自定义5 修改 waf/init.lua 文件
替换sys_html 函数:
function say_html() if Redirect then ngx.header.content_type = "text/html;charset=UTF-8" ngx.status = ngx.HTTP_FORBIDDEN ngx.say(html) ngx.exit(ngx.status) end end
替换denycc 函数:
function denycc() if CCDeny then local uri=ngx.var.uri CCcount=tonumber(string.match(CCrate,"(.*)/")) CCseconds=tonumber(string.match(CCrate,"/(.*)")) local token = getClientIp()..uri local limit = ngx.shared.limit local req,_=limit:get(token) if req then if req > CCcount then ngx.header.content_type = "application/json;charset=UTF-8" local ret={returncode="22000",messages="请求拒绝,请稍后再试",body={}} --ngx.header["Content-Type"]="text/html;charset=UTF-8" ngx.say(json.encode(ret)) ngx.exit(200) return true else limit:incr(token,1) end else limit:set(token,1,CCseconds) end end return false end6. 启用waf
然后重启nginx,或reload 即可: /user/local/nginx/sbin/nginx -s reload7. 测试
curl http://17.16.200.20/test/index?id=../etc/passwd 返回:{"retcode":"21000","messages":"请求失败,请稍后再试","body":{}} 说明生效
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/39633.html
摘要:说明防止注入,本地包含,部分溢出,测试,等攻击防止备份之类文件泄漏防止之类压力测试工具的攻击屏蔽常见的扫描黑客工具,扫描器屏蔽异常的网络请求屏蔽图片附件类目录执行权限防止上传下载使用使用安装下载解压后,将整放到目录中,并命名为配置安装路径假 1. Ngx lua waf 说明 防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击防止svn/备份之类文件泄...
摘要:是一个基于的,提供及自定义规则的监控和管理,如访问统计流量切分重定向防火墙等功能。第三方版的已在开发中,届时会伴随一起发布。 Orange Orange是一个基于OpenResty的API Gateway,提供API及自定义规则的监控和管理,如访问统计、流量切分、API重定向、WEB防火墙等功能。它有以下特性: 配置项支持文件存储和MySQL存储(0.2.0版本开始将去除文件支持) ...
摘要:多返回值开始变得越来越与众不同了允许函数返回多个结果。这种情况函数没有足够的返回值时也会用来补充。中的索引习惯以开始。 showImg(https://segmentfault.com/img/bVIcQU?w=136&h=103); 为什么值得入手? Nginx作为现在使用最广泛的高性能后端服务器,Openresty为之提供了动态预言的灵活,当性能与灵活走在了一起,无疑对于被之前陷于...
阅读 1696·2021-10-09 09:44
阅读 3261·2021-09-27 13:36
阅读 1518·2021-09-22 15:33
阅读 1273·2021-09-22 15:23
阅读 1159·2021-09-06 15:02
阅读 1695·2019-08-29 16:14
阅读 2900·2019-08-29 15:26
阅读 2407·2019-08-28 18:08