OneinStack部署VeryNginx实现WAF功能

OneinStack

OneinStack是一个集成安装包,支持多种环境的组合(LNMP、LAMP等),官方地址:https://oneinstack.com/,目前小z博客正是使用OneinStack提供的LNMP环境。

VeryNginx

VeryNginx 是一个功能强大而对人类友好的 Nginx 扩展程序。VeryNginx 基于 lua_nginx_module(openrestry) 开发,实现了高级的防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。

什么是WAF?

Web应用防护系统(也称:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

准备开始

了解前面的基本介绍后,话不多说,直接开始,此文适合对Linux管理和nginx有一点基础的朋友阅读,否则可能有点迷糊。

安装OneinStack

OneinStack官方已经给出了详细的安装教程,请访问:OneinStack安装参考教程进行安装,必要的环境是Nginx,其它可选。当然您可以自行编译安装Nginx,并非一定依赖于OneinStack。

编译LuaJIT

LuaJIT即采用C语言写的Lua代码的解释器。由于VeryNginx依赖与LUA,因此LuaJIT也是必不可少的环境。分别执行下面的命令即可:

### 下载
wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
### 解压
tar -zxvf LuaJIT-2.0.4.tar.gz
### 进入目录
cd LuaJIT-2.0.4
### 开始编译
make && make install
### 建立软连接
ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
### 设置环境变量
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0

添加lua-nginx-module模块

VeryNginx使用了下面三个模块,不过前两个模块OneinStack默认就装好了,我们只需要重新编译下Nginx,将lua-nginx-module模块加入即可。

 http_stub_status_module
 http_ssl_module
 lua-nginx-module

lua-nginx-module模块的地址是:lua-nginx-module,需要克隆到OneinStack的src目录,详细的编译过程请参考:Nginx编译安装Fancy Index模块

安装VeryNginx

上面的所有依赖环境都装好了,接下来安装VeryNginx就比较简单了,分别执行下面的命令即可。

### 克隆仓库到本地
git clone https://github.com/alexazhou/VeryNginx.git
### 进入目录
cd VeryNginx
### 安装verynginx
python install.py install verynginx

加入配置

找到OneinStack的nginx配置文件,在/usr/local/nginx/conf/nginx.conf,编辑这个配置加入下面的三条include指令。

 include /opt/verynginx/verynginx/nginx_conf/in_external.conf;
 include /opt/verynginx/verynginx/nginx_conf/in_http_block.conf;
 include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf;

以上三条指令分别放在 http 配置块外部,http 配置块内部,server 配置块内部,在修改时请保留这三条。这个需要特别注意,如果加载到了错误的位置,nginx将会报错。配置加载完毕后输入命令:service nginx restart重启nginx,到此已经全部安装完成。

最后访问您的地址:http://your_ip/verynginx/index.html ,默认用户名和密码为:verynginx,可以登录后自行修改。

VeryNginx功能特色

  • 可以查看请求数/连接数/当前带宽等信息
  • 可以自定义多种规则利用Filter实现强大的WAF功能
  • 统计URI的各种状态

总结

VeryNginx 预置了常用的过滤规则,可以在一定程度上阻止常见的 SQL 注入、Git 及 SVN 文件泄露、目录遍历攻击,并拦截常见的扫描工具。如果需要更强大的过滤功能,则需要自己摸索添加更多适合自己的规则。

另一位作者在github上开源了另一个基于nginx实现的WAF功能,若有需要的也可参考:ngx_lua_waf

此文参考了下面的文档,上面的整理说明均为小z博客原创,转载请注明。

 nginx编译安装ngx_lua模块
 VeryNginx项目

标签: nginx 配置 OneinStack waf

精彩评论
  1. nil nil

    ngx_lua_waf和verynginx这2个有什么大的区别地方吗?

    这2个都可以基于自己的nginx来编译。

发表评论: