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博客原创,转载请注明。
ngx_lua_waf和verynginx这2个有什么大的区别地方吗?
这2个都可以基于自己的nginx来编译。