【编译打包】带web防火墙的tengine

重新打包了tengine,集成了开箱即用的基于lua的web应用防火墙,特别感谢agentzh和loveshell 。

由于lua属于解释性的脚本语言,因此可以不用重启nginx,就可以方便地修改lua脚本中的规则。


二进制软件包内容如下

# rpm -qpl tengine-1.5.2-3.waf.el6.x86_64.rpm 
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/browsers
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/module_stubs
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/waf/config.lua
/etc/nginx/waf/init.lua
/etc/nginx/waf/rules.d
/etc/nginx/waf/rules.d/args
/etc/nginx/waf/rules.d/cookie
/etc/nginx/waf/rules.d/post
/etc/nginx/waf/rules.d/url
/etc/nginx/waf/rules.d/user-agent
/etc/nginx/waf/rules.d/whiteurl
/etc/nginx/waf/waf.conf
/etc/nginx/waf/waf.lua
/etc/nginx/win-utf
/etc/rc.d/init.d/nginx
/etc/sysconfig/nginx
/usr/sbin/dso-tool
/usr/sbin/nginx
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx


所谓web 应用防火墙,即WAF,实际上就是一个基于正则的黑名单,对于web请求中的不安全行为进行过滤,比如特殊的请求参数,url等。


注意:本文的WAF 工作在nginx的http段,而不是server段。


假设访问一个不存在的文件,本应该在server段匹配后,返回404,但是有了WAF,非法访问来不及到server段,就被拦截了,直接返回http 200 。


比如waf规则中禁止访问下载后缀名为sql的文件,不论文件是否存在,则直接被拦截,返回http200。


效果图如下:

wKioL1OB4uPw1n4CAACBwt_fecU157.jpg


如果你觉得直接返回 “Blocked by WAF”比较暴力,

可以尝试编辑/etc/nginx/waf/config.lua ,修改最后一行,我们让它跳转到百度或网站主页

html=[[<html><script language='javascript'>document.location = 'http://www.baidu.com'</script></html>]]


由于agentzh推荐使用luajit,而不是lua,所以附件加上了一个luajit的srpm软件包。

(从fedora 19 移植而来) 



参考文章

http://ju.outofmemory.cn/entry/36187

https://github.com/loveshell/ngx_lua_waf


注:附件上传时直接加了zip后缀,无需解压。


update 2014-08-07

发现一个小bug,lua无法写***日志,改变/var/log/nginx 目录权限即可

chown nginx:nginx /var/log/nginx


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值