【编译打包】带web防火墙的tengine 推荐
2014-05-25 20:17
891 查看
重新打包了tengine,集成了开箱即用的基于lua的web应用防火墙,特别感谢agentzh和loveshell 。
由于lua属于解释性的脚本语言,因此可以不用重启nginx,就可以方便地修改lua脚本中的规则。
二进制软件包内容如下
所谓web 应用防火墙,即WAF,实际上就是一个基于正则的黑名单,对于web请求中的不安全行为进行过滤,比如特殊的请求参数,url等。
注意:本文的WAF 工作在nginx的http段,而不是server段。
假设访问一个不存在的文件,本应该在server段匹配后,返回404,但是有了WAF,非法访问来不及到server段,就被拦截了,直接返回http 200 。
比如waf规则中禁止访问下载后缀名为sql的文件,不论文件是否存在,则直接被拦截,返回http200。
效果图如下:
如果你觉得直接返回 “Blocked by WAF”比较暴力,
可以尝试编辑/etc/nginx/waf/config.lua ,修改最后一行,我们让它跳转到百度或网站主页
由于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 目录权限即可
附件:http://down.51cto.com/data/2364470
由于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。
效果图如下:
如果你觉得直接返回 “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
附件:http://down.51cto.com/data/2364470
相关文章推荐
- 【编译打包】tengine 1.5.1 SRPM 推荐
- 【编译打包】nginx-1.4.7-1.pagespeed_1.7.30.4.el6.src.rpm 推荐
- Ant编译编译APK、打包打包JS 推荐
- 【编译打包】realsync-0.1-11.el6.src.rpm 推荐
- 【编译打包】tengine 1.5.2
- 2分钟教你玩转Tengine编译安装部署 推荐
- 【编译打包】tengine 1.3.0 SRPM
- 【编译打包】teamtalk 在CentOS 7 上的安装 推荐
- 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!
- [推荐]ASP.NET 2.0 中的代码隐藏和编译
- jar 打包已经编译好的目录结构
- 我来用javac编译,jar命令打包
- 使用ant编译打包应用程序
- 每天如何自动编译项目并将之打包添加到VSS中
- 用Eclipse将编译后的java字节码打包成JAR文件
- Java: CMD下编译,打包,运行
- 自己动手编译Linux内核 推荐
- 如何将Access程序打包(编译)成EXE文件用以发布?(转自access911.net)
- ANT打包编译部署工具学习笔记
- 本系列教程1-57级已经打包,希望大家推荐个地方提供下载!