日志里每分钟几十个 404、后台登录页被疯狂试探、漏洞扫描器全天候关照——你的网站每天都在被扫。这篇讲怎么识别扫描和爆破、怎么分层防御、误报了怎么办。全部配置可抄,30 分钟见效。
需要现成的游戏云服务器,可以看看财富云计算:一键开服面板,NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上,建站和游戏服都能快速部署。
一、先看懂攻击长什么样
1.1 目录扫描
# 日志里短时间内大量 404,路径还带漏洞扫描特征
grep " 404 " /var/log/nginx/access.log | tail -20
# 典型路径: /.env /wp-config.php.bak /phpmyadmin/ /.git/config特征:单个 IP 高频请求不存在的路径,User-Agent 常是扫描器默认值或伪装。
1.2 后台爆破
# 登录接口被疯狂 POST
grep "POST /wp-login.php" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
# 输出: 89 45.x.x.x ← 一个 IP 试了 89 次1.3 漏洞探测
请求里带 payload:?id=1' AND 1=1、/<script>alert(1)</script>、构造特殊的上传文件名。这些请求大部分进不了业务,但全打在你带宽和日志上。
识别脚本:
# 今日 Top 10 请求 IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# 404 最多的 IP(扫描器特征)
awk '$9==404 {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10日志分析方法见Web 日志分析实战。
二、第一层:fail2ban 自动封禁
扫描和爆破的主力防御,装完即生效:
sudo apt-get install fail2ban
sudo tee /etc/fail2ban/jail.d/web.conf >/dev/null <<'EOF'
[nginx-badbots]
enabled = true
port = http,https
filter = nginx-badbots
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 86400
findtime = 600
[nginx-404]
enabled = true
port = http,https
filter = nginx-404
logpath = /var/log/nginx/access.log
maxretry = 20
findtime = 60
bantime = 3600
EOF
# 自建 404 过滤器(默认没有)
sudo tee /etc/fail2ban/filter.d/nginx-404.conf >/dev/null <<'EOF'
[Definition]
failregex = ^<HOST> .* "(GET|POST|HEAD) [^"]*" (404|444) .*$
ignoreregex =
EOF
sudo systemctl restart fail2ban
sudo fail2ban-client status效果:一个 IP 一分钟内 20 个 404 就封一小时;试 3 次已知恶意 UA 封一天。完整配置见fail2ban 防暴力破解实战。
三、第二层:Nginx 限流限速
针对高频接口(登录、搜索、API):
# 定义限流区:每秒 10 个请求,突发 20
limit_req_zone $binary_remote_addr zone=login:10m rate=10r/s;
location = /wp-login.php {
limit_req zone=login burst=20 nodelay;
limit_req_status 429;
try_files $uri =404;
fastcgi_pass unix:/run/php/php-fpm.sock;
include fastcgi_params;
}
# 全局限速(可选):单 IP 总并发连接数
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn perip 20;详细限流策略见Nginx 限速与 CC 防护进阶。
四、第三层:WAF 规则
fail2ban 管「频率」,WAF 管「内容」——请求里带 SQL 注入、XSS、webshell 特征的直接拦:
# ModSecurity + OWASP CRS(开箱即用的规则集)
sudo apt-get install libapache2-mod-security2 # Nginx 用 libmodsecurity3
# 或国产方案:雷池(SafeLine),面板化管理更适合新手规则实战见WAF 规则实战。新手建议直接上雷池这类可视化 WAF:规则不用手写、误报能一键加白、攻击日志看得懂。
五、后台与入口加固
扫描器最爱找的是已知路径,改掉它们成本最低:
| 对象 | 默认路径 | 加固 |
|---|---|---|
| WordPress 后台 | /wp-login.php /wp-admin | 插件改登录地址 + IP 白名单 |
| phpMyAdmin | /phpmyadmin | 改端口 + HTTP Basic 认证 + IP 白名单 |
| 宝塔面板 | /8888 固定端口 | 改随机端口 + 安全入口 + 面板 Basic Auth |
| Typecho 后台 | /admin | Basic Auth 或 IP 白名单 |
# phpMyAdmin 只允许自己 IP + 加密码
location /phpmyadmin {
allow 你的IP/32;
deny all;
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}# 生成 Basic Auth 密码文件
sudo htpasswd -c /etc/nginx/.htpasswd admin后台加固全景见SSH 安全加固进阶。
六、验证与调优:别误伤自己
# 看封禁记录
sudo fail2ban-client status nginx-404
sudo fail2ban-client status nginx-badbots
# 误伤了正常用户/自己的监控?解封
sudo fail2ban-client set nginx-404 unbanip 1.2.3.4
# 把搜索引擎 UA 加白(否则爬虫被误封影响收录)
# filter 里 ignoreregex 加:
# ^.*"(Baiduspider|Googlebot|bingbot|Sogou|360Spider).*"$防误伤三原则:
- 搜索引擎 UA 加白(影响 SEO 的大事)
- 自己的办公 IP 加白(fail2ban 的
ignoreip) - 封禁阈值别太狠(404 阈值 20/分钟比较稳,5 太激进)
搜索引擎友好性见网站 SEO 基础优化指南。
七、被扫描时的日常心态
说句实话:被扫是常态,不是事故。互联网上任何暴露的 IP 每天都被扫几百次。你要做的不是「不被扫」,而是:
- 扫描打不进来(WAF+限流+加固)
- 爆破试不走(密钥登录+强密码+fail2ban)
- 日志看得见(异常有告警)
- 真出事了有预案(见应急排查)
按这个 checklist 过一遍,扫描器就只能在你门外转转:Nginx 挡目录、fail2ban 封频率、WAF 拦 payload、后台改路径加认证。四层配齐,日志里的 404 风暴就只是背景噪音。
需要现成的游戏云服务器,可以看看财富云计算:一键开服面板,NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上,建站快速部署。延伸阅读:网站被 CC 攻击怎么办、DDoS 攻击基础认知与防护、Linux 防火墙配置实战。
延伸阅读
- 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
- 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
- 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
- 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
- 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
- RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
- 短链接服务搭建:Shlink 自托管,链接数据自己掌握
- 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道

[...]4核16G照常有 公网IP:端口 才能进维度NAT 型独立 IPCPU / 内存 / 磁盘性能完全一致一致出站连接(你连别人)无限制无限制入站连接(别人连你)需端口映射IP 直连可映射端口数平台规则(通常 5-20)65535价格独立 IP 一半以下全价结论先行:对 90% 的个人用户场景,NAT 型和独立 IP 的体验差距只在「配置端口映射」这一步。二、完全无感的场景:映射[...]
2026-10-18 回复
[...]0 3 * tar -czf /backup/site_$(date +\%F).tar.gz /var/www/html -C /backup 2>/dev/null; rclone copy /backup/site_$(date +\%F).tar.gz remote:sitebackup/详细方案见网站迁移完整流程和rsync 同步与定时备份实战。六、安全三件套(小站也要装)[...]
2026-10-18 回复
[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-18 回复
[...]└─ 联系我们 ← 电话、地址、表单、地图文案的常见错误:满屏"引领行业、卓越品质"这种空话。客户只关心"你能解决我什么问题、多少钱、靠不靠谱"。五、性能与安全:上线前 checklist性能(官网打开超过 3 秒,一半访客流失):开页面缓存,动态页面静态化,见PHP-FPM 安装与性能调优图片压缩 + WebP,方法论见网站图片与静态资源优化上 CDN,静态资源走 CDN,见CDN 加速配置[...]
2026-10-18 回复
[...]sudo bash install.sh装完能做的事:建站点(自动配 Nginx)、一键申请 Let's Encrypt 证书、装 MySQL/Redis/PHP 多版本、计划任务(备份/清理)、文件管理、防火墙端口规则。安全必做两件事:改掉默认面板端口 + 设复杂登录路径 + 开 Basic Auth面板绑定域名或加 IP 白名单——把面板直接暴露在公网 8888 端口上,是被扫描器重点关照的对[...]
2026-10-18 回复