阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 8386阅读
  • 1回复

[教程]利用 NGINX 和 LuaJIT 构建精悍的 WAF 防火墙

级别: 论坛版主
发帖
9349
云币
14165
— 本帖被 linanxiaoxiao 设置为精华(2016-09-07) —
0 K T.@P  
I9xQ1WJc`  
前言 EbEQ@6t  
"bI'XaSv  
当 WEB应用 越来越为丰富的同时,WEB 服务以其强大的计算能力、处理性能及蕴含的较高价值逐渐成为主要攻击目标。SQL注入、网页篡改、网页挂马等安全事件,频繁发生。 B@P +b*%  
^gP pmb<x  
QU4/hS;Ux  
前面的是套话,WAF 的应用目前多见于一些主打安全性的 CDN 中,但是那些 CDN 用了以后的效果就是云减速或者变成 50X 网站,或者说不支持 HTTPS。因此建一套 WAF 系统也是比较必要的。 区别于像 WordPress 上的 WAF 插件,直接在 Nginx 上部署效率更高,且不影响网站的速度和性能。  4x.1J  
nVkPYeeT  
准备 =og5Mh,  
blbL49;  
nE$8-*BZ_  
首先我们需要 Nginx 作为 Web 服务器,并配备 ngx_lua 并使用 lujit2 做 lua 支持。大家可以自行编译,也可以直接使用 ngx_lua 作者开发的 OpenResty,基于 Nginx 默认集成 ngx_lua,新手还是推荐直接使用后者。 tO0MYEx"  
QWqEe|}6  
j<H5i}  
然后就是,ngx_lua_waf,包含多种防御规则,直接一键上手。 r_m*$r~f  
DG2CpR)S  
特征 N3J T[7  
5u(,g1s}UZ  
引用
防止 sql 注入,本地包含,部分溢出,fuzzing 测试,xss,SSRF 等 web 攻击 : ,0F_["3  
防止 svn/备份 之类文件泄漏 in>Os@e#  
防止 ApacheBench 之类压力测试工具的攻击 X~m*`UH  
屏蔽常见的扫描黑客工具,扫描器 2vb{PQ  
屏蔽异常的网络请求 ]yc&ffe%  
屏蔽图片附件类目录 php 执行权限 6N7^`ghTf  
防止 webshell 上传
qnFi./  
6V[ce4a%  
一般来说,基本的网络攻击都可以防御了,软件的缺陷导致的漏洞也可以一定弥补,还可以一定程度上拦截或者缓解 CC 攻击。 7w}PYp1Z'~  
0A]+9@W;  
安装 <4l;I*:2&  
= JE4C9$,  
注: lCyBdY9n  
oP[R?zN  
Zo=w8Hr  
这里默认安装了 OpenResty 在 /usr/local/openresty 目录下 y `)oD0)Fj  
}f/xMp-Y  
#3fS_;G  
一、下载 ngx_lua_waf &OK[n1M  
vvWje:H  
VLLE0W _]  
  1. git clone https://github.com/loveshell/ngx_lua_waf.git
  2. mv ngx_lua_waf waf
  3. mv waf /usr/local/openresty/nginx/
  4. #创建日志目录
  5. mkdir -p /usr/local/openresty/nginx/logs/hack/
  6. chmod -R 775 /usr/local/openresty/nginx/logs/hack/
17hFwo`  
)GbVgYkk  
二、修改 nginx.conf etcpto=Mo  
V_1'` F  
g}uVuK;<  
修改 /usr/local/openresty/nginx/conf/nginx.conf ,在 http{} 内加入     Wciw6.@  
  1. lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";
  2.     lua_shared_dict limit 10m; #开启拦截cc攻击
  3.     init_by_lua_file  /usr/local/openresty/nginx/conf/waf/init.lua;
  4.     access_by_lua_file /usr/local/openresty/nginx/conf/waf/waf.lua;
/'yi!:FZFC  
>~+'V.CNW  
三、修改 config.lua DK\Ud6w  
修改 /usr/local/openresty/nginx/conf/waf/config.lua 文件。 ,PmQ}1kGW  
N:4oVi@Je  
~8rVf+bg3  
对应地方修改为 : )MV`(/BC*  
)&jE<C0  
mN!5JZ' 2  
  1. RulePath = "/usr/local/openresty/nginx/conf/waf/wafconf/"
  2. attacklog = "on"
  3. logdir = "/usr/local/openresty/nginx/logs/hack/"
  4. UrlDeny="on"
GnCO{"n  
:)djHPP*  
此文件的详细配置内容:(每次修改,都要重启 Nginx 以便生效)     <Z0N)0|  
E#5$O2b#  
*>=|"ff  
  1. RulePath = "/usr/local/nginx/conf/waf/wafconf/"
  2.     --规则存放目录
  3.     attacklog = "off"
  4.     --是否开启攻击信息记录,需要配置logdir
  5.     logdir = "/usr/local/nginx/logs/hack/"
  6.     --log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限
  7.     UrlDeny="on"
  8.     --是否拦截url访问
  9.     Redirect="on"
  10.     --是否拦截后重定向
  11.     CookieMatch = "on"
  12.     --是否拦截cookie攻击
  13.     postMatch = "on"
  14.     --是否拦截post攻击
  15.     whiteModule = "on"
  16.     --是否开启URL白名单
  17.     black_fileExt={"php","jsp"}
  18.     --填写不允许上传文件后缀类型
  19.     ipWhitelist={"127.0.0.1"}
  20.     --ip白名单,多个ip用逗号分隔
  21.     ipBlocklist={"1.0.0.1"}
  22.     --ip黑名单,多个ip用逗号分隔
  23.     CCDeny="on"
  24.     --是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
  25.     CCrate = "100/60"
  26.     --设置cc攻击频率,单位为秒.
  27.     --默认1分钟同一个IP只能请求同一个地址100次
  28.     html=[[Please go away~~]]
  29.     --警告内容,可在中括号内自定义
  30.     备注:不要乱动双引号,区分大小写
J|'e.1v  
?zS t  
四、重启 (toN? ?r  
xJ0Q8A  
$ts%SDM  
重启你的 Nginx 服务,一般来说都是
  1. service nginx restart
P7X':  
%-A#7\  
=Wgz\uGJ  
五、检测是否生效 T+$Af,~  
``Yw-|&:Ae  
\[!k`6#t7  
在终端输入 CH`_4UAX%  
  1. curl http://www.mf8.biz/test.php?id=../etc/passwd
S8zc1!  
!BQ:R(w  
如果返回:网站防火墙 等内容,差不多就是了 KRL9dD,&  
2O*(F>>dT  
g_T[m*  
也可以直接浏览器访问 QcXqMx  
)q+Qtz6D  
t9Sog~:'  
http://www.mf8.biz/test.php?id=../etc/passwd qh40nqS;9  
uyp|Xh,  
K~U5jp c  
返回下图即可: 0-N"_1k|?  
"b#L8kN  
nc0!ag  
当然了,错误页面的内容都是可以自己定义的。 ^hMJNy&R  
原创文章转载请注明:转载自:https://www.mf8.biz/nginx-luajit-simple-waf/ e 1 yvvi  
[ 此帖被ivmmff在2016-09-07 10:13重新编辑 ]
级别: 管理员
发帖
759
云币
1687
只看该作者 沙发  发表于: 2016-09-07
不错~~推荐
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
验证问题: 13 - 3 = ?
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)