前天小站被不知道哪路dalao无情的C了一波,看了一下监控量还不是特别大,所以没上CF的五秒盾。由于自己图方便使用了宝塔面板,印象中宝塔6.8以前版本Nginx中直接带了防火墙功能,然鹅应该是考虑运营成本在6.8之后的版本中Nginx防火墙需要付费使用;在软件商店的【第三方软件】中有一个Nginx防火墙免费版,阉割了一些可视化的功能,规则我也不太会改也不敢改,另一个就是没有通过Cookie或Javascript的浏览器校验。话说回来其实是可以免费使用宝塔的收费waf的,只要在Nginx配置文件中将第17行的#include luawaf.conf;去掉注释即可,规则在/www/server/nginx/waf/下,这回记录使用VeryNginx为网站提供基础的waf功能


准备工作

  • VPS一台
  • 安装宝塔面板并已安装好Nginx(我用的面板上最新1.17.6版本)
  • 登录SSH

安装VeryNginx

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

看到有Success提示就OK了,中间有报错不用管,因为咱们不是安装的OpenResty,而是安装在/www/server下的Nginx

接下来登录到宝塔面板-软件商店-运行环境,找到Nginx-配置文件,填入如下配置先保存

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配置块内部

宝塔面板中建了多个站点都会有vhost单独的配置文件,每个站点配置文件server配置块中都加入include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf;保存

接下来回到宝塔面板-软件商店-运行环境-Nginx-重载配置/重启

VeryNginx已经部署完毕,测试地址就是http://域名/verynginx/index_zh.html (index.html是英文页面)默认账号密码页面中有提示,登录之后第一时间修改

VeryNginx状态.png

VeryNginx配置规则.png

VeryNginx配置CC防护.png

VeryNginx配置浏览器验证.png

配置CC防护规则

在配置CC规则的时候,推荐使用浏览器校验Javascript+频率限制配合使用,浏览器校验使用Cookie校验会导致搜索引擎无法正常抓取,特别提示一下,频率限制中的规则,最大请求数字段经我测试很多次貌似是每分钟请求,限定时间字段是触发规则对目标IP的惩罚时间,不要忘了单独计数选IP

测试CC防护能力

都已经搞完了自己就来试试,我要C自己(我要C自己)

使用wrk对自己网站进行了压力测试,2线程1000请求进行测试(wrk安装和使用),看看VeryNginx表现

CC测试.png

图上可以看出有将近4K请求数,上千TCP连接数,网站目前还稳。由此可见VeryNginx作为基础的网站防护还是不错的选择,但是如果遇到大量的CC量还是建议使用Cloudflare的五秒盾