宝塔面板安装VeryNginx – 自带控制面板的免费强大的WAF防火墙

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

VeryNginx 基于 OpenResty[^openresty],所以安装 VeryNginx 需要先安装好 OpenResty。但是VeryNginx 也支持安装在nginx中,但是需要lua-nginx-module,http_stub_status_module,http_ssl_module这3个模块的支持。碰巧的是,宝塔面板已经默认编译了这3个模块,所以我们只需要安装VeryNginx单个软件即可。

这篇文章就来谈谈如何在宝塔面板nginx环境中安装VeryNginx 防火墙,并且说说简单的防cc的设置。也算是对宝塔面板防cc的一个补充。

一:测试环境

宝塔面板7.0.3、nginx1.17.5、统:CentOS Linux 7.7.1908 (Core)

二:安装VeryNginx

github:https://github.com/alexazhou/VeryNginx

中文文档:https://github.com/alexazhou/VeryNginx/blob/master/readme_zh.md

克隆 VeryNginx 仓库到本地, 然后进入仓库目录,具体命令如下:

git clone https://github.com/alexazhou/VeryNginx.git
cd VeryNginx 
python install.py install verynginx

安装完成的示例:

[root@daniao VeryNginx]# python install.py install verynginx 
### copy VeryNginx files ...
mkdir -p /opt/verynginx
cp -r -f ./verynginx /opt/verynginx
openresty not fount, so not copy nginx.conf
chmod -R 755 /opt/verynginx/verynginx/configs
*** All work finished successfully, enjoy it~

这里提示我们已经完成了VeryNginx的安装。

三:配置VeryNginx

根据官网的设置要求,我们需要设置 Nginx 配置文件,添加三条 Include 指令来实现功能,分别为:

include /opt/verynginx/verynginx/nginx_conf/in_external.conf;   #http 配置块外部
include /opt/verynginx/verynginx/nginx_conf/in_http_block.conf;  #http 配置块内部
include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf;   #server 配置块内部

以上三条指令分别放在nginx配置文件的 http 配置块外部,http 配置块内部,server 配置块内部,在修改时请保留这三条。如果添加了新的 Server 配置块或 http 配置块,也需要在新的块内部加入对应的 include 行。

3.1设置Nginx配置文件

宝塔面板→ Nginx →设置 → 配置修改,将以下2条代码放到正确的位置。

此处为隐藏的内容 发表评论并刷新,方可查看
发表评论

3.3重启Nginx

宝塔面板→nginx→服务→重载/重启Nginx:

至此就算正确安装了VeryNginx。

四:配置VeryNginx

VeryNginx 启动后,可以通过浏览器访问管理面板来查看状态以及进行配置。

管理面板地址为 http://网站域名/verynginx/index.html

默认用户名和密码是 verynginx / verynginx

登陆界面如下:

4.1设置cookie验证

尝试添加自定义动作,浏览器校验,设置个cookie验证上去。保存之后,去刷新你的网址,看看是否多了一个叫verynginx_sign_cookie的cookie值。如何设置看图:

我们现在刷新自己的网站看看是否多了verynginx_sign_cookie的cookie值,如图:

确实是看到了这个cookie,这样VeryNginx就算正常运行了。

4.2设置防cc

VeryNginx如何设置防cc的规则呢。在自定义动作→拦截频率中可以设置。如图:

4.3测试效果

我们保存之后,可以打开自己的网站测试下效果,如图:

防cc已经起作用了。我们是封禁了300秒,之后,会自动解封。

4.4注意事项

  • 通过 VeryNginx 控制面板保存新配置之后,会立刻生效,并不需要 restart/reload Nginx。
  • VeryNginx 把配置保存在 /opt/verynginx/verynginx/configs/config.json 里面。
  • 状态页面图表默认带有动画效果,如果有卡顿,可以点右上角齿轮图标关掉动画效果
  • 如果因为配错了什么选项,导致无法登录,可以手动删除 config.json 来清空配置,或者手动编辑这个文件来修复。

4.5修改用户名密码

配置→系统→用户,这里面可以修改看图:

修改之后保存。

4.6更新 VeryNginx

你只需要先 pull github 上最新的代码到本地,然后通过以下命令来进行更新:

#更新 Verynginx
python install.py update verynginx

#更新 OpenResty
python install.py update openresty

4.7一些错误解决

修改配置后,页面底部会出现一个浮动条,提示保存,在点击浮动条上的保存按钮之后,配置才会进行写入。如果遇到无法保存配置的问题,可能是文件目录权限的问题,设置成755 www就可以了,如图:

或者是nginx 设置的 client body 太小,导致请求体被缓存到文件,导致 lua 代码没有获取到请求体,保存时会提示请求失败

在 nginx.conf 中 http 部分增加一句,client_body_buffer_size 128k;

4.8总结

以上的方法只适合宝塔面板的安装,如果你多次折腾不成功,还是用宝塔面板的免费防火墙吧,或者是宝塔面板的收费防火墙。

VeryNginx可以设置浏览器验证功能,可以选择cookie或者JavaScript验证,可以有效避免被采集。其他设置请自行研究。