给 Nginx 加一道自动防护——WardenNet 一键部署记录

背景

自己维护的博客服务器,每天被各种自动化扫描器扫几千甚至上万次。访问日志里 /.env/wp-login.php/admin 的 404 请求刷屏,而博客本身的真实访问量才 2000 UV 左右。

试过几个方案:

  • Nginx rate_limit:扫描器把 QPS 压到 2-5 就绕过去了
  • fail2ban:正则匹配容易误封搜索引擎爬虫,关了
  • 手动 ipset add:每周花 20 分钟手动操作,太累

发现 WardenNet

在搜索解决方案时看到了 WardenNet:Go 编写,基线自学习评分引擎,内核级拦截,还有个亮点是 deploy.sh 一键部署脚本

一键部署(3 步)

服务器:阿里云轻量应用服务器 2C4G / Ubuntu 22.04 / Nginx

Step 1:下载

# 下载官方打包好的压缩包
wget https://github.com/wardennet/wardennet/releases/download/v1.0.0/wardennet.zip
unzip wardennet.zip

# 文件清单
ls -lh
# wardennet_linux       # Go 二进制,5.8MB
# deploy.sh             # 部署脚本
# wardennet.production.yaml
# AGENT_OPS.md

Step 2:执行部署

sudo bash deploy.sh

脚本自动检测:

[INFO] 检测系统基础信息...
[INFO] 检测 Web 服务器...
[INFO] 检测认证日志...

+---------------------------------------------------------+
|          服务器环境检测结果                               |
+---------------------------------------------------------+
  操作系统:             ubuntu 22.04
  架构:                 amd64
  Init:                 systemd
  Web 服务器:           nginx
  日志源:
    - nginx_access    /var/log/nginx/access.log
+---------------------------------------------------------+

自动生成配置 -> 安装二进制 -> 注册 systemd service -> 启动成功。

整个过程不到 2 分钟。

Step 3:验证

wardennet status                        # CLI 自检
systemctl status wardennet-agent        # 服务状态
ipset list wardennet_blacklist          # ipset 集合
iptables -S INPUT | grep wardennet      # DROP 规则

效果

运行一周,数据对比:

effect-comparison

指标 部署前 部署后
独立扫描 IP 1247 89
4xx 占比 37% 5%
扫描请求 53210 1230
误报 - 0
内存 - 16MB

扫描请求下降 97.7%,Nginx 响应时间从 128ms 降到 94ms。

运维小贴士

  • CLI 命令wardennet statuswardennet blocklist statuswardennet blocklist add/del <ip>
  • 配置热重载:改 /etc/wardennet/config.yaml 后 5 秒自动生效,不用重启
  • 首次上线建议 report 模式:改 mode: report 观察 24 小时再切 mode: block
  • 白名单别忘了内网10.0.0.0/8192.168.0.0/16 加进 ipset.whitelist

工作原理

architecture

核心链路:tail 采集 Nginx access log -> 基线自学习评分 -> 决策引擎 -> 评分 >= 50 写入 ipset -> iptables DROP 内核级拦截。

总结

deploy.sh 脚本做得比我预期的好很多——自动检测环境、自动发现日志路径、自动注册服务。加上 WardenNet 基线自学习的防误杀机制,对中小站点来说是个省心的选择。


GitHub:github.com/wardennet/wardennet
下载:wardennet.zip
许可:AGPLv3

posted @ 2026-09-16 08:57  liguojun  阅读(3)  评论(0)    收藏  举报