开独立站这五六年,我见过太多新手站长的服务器被折腾得半死不活。站点刚上线没两天,Google还没来得及收录几页,后台CPU先干到了100%。一翻Nginx日志,密密麻麻全是扫.env、扫phpmyadmin、扫wp-login.php的恶意请求。遇到这种情况,靠人肉去防火墙里拉黑IP纯属浪费生命。今天我就掏箱底聊聊Fail2ban自动化封禁恶意扫描IP实操,顺便借着这个话题,跟各位聊聊咱们技术站长在写运维文档、技术博客以及SEO文案时,怎么把一些看似高深或生硬的词儿写得入木三分。
很多技术人员写博客,读者看不下去,原因不是技术不行,而是文字太“塑料”。不管是做外贸站的技术文案,还是在个人博客里分享运维技巧,选词必须精准狠辣。
iptables -A INPUT -s x.x.x.x -j DROP手动封IP,这叫“扬汤止沸”;而配置Fail2ban让系统自动读日志、自动算频次、自动拉黑,这才是“釜底抽薪”。讲完文案的劲道,咱们直接上生产环境见真章。这套配置是我在外贸VPS上跑了3年多的稳定方案,专门用来收拾那些无脑的自动化扫描器。
安装很简单,直接命令走起:
# Ubuntu/Debian系统 sudo apt-get update && sudo apt-get install fail2ban -y # CentOS/RockyLinux系统 sudo yum install epel-release -y && sudo yum install fail2ban -y
老站长避坑血泪史:千万不要直接修改
/etc/fail2ban/jail.conf!这个文件在软件包更新时会被覆盖,所有的心血瞬间归零。一定要拷贝一份成jail.local:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
市面上的扫描脚本千篇一律,扫的都是敏感文件。我们新建一个规则文件: sudo nano /etc/fail2ban/filter.d/nginx-scanner.conf
粘贴下面这段经过无数次实战验证的正则:
[Definition] # 捕获高危嗅探路径:包括各类配置泄露、管理后台试探 failregex = ^ -.* "(GET|POST|HEAD) \/(wp-admin|wp-login|\.env|\.git|phpmyadmin|pma|config\.bak|actuator).* HTTP\/.*" (403|404|444) ignoreregex =
.env、phpmyadmin等老站长根本没开放的目录,且状态码返回了403、404或Nginx的444,立即判定为一次恶意扫描。打开/etc/fail2ban/jail.local,在文件末尾追加:
[nginx-scanner] enabled = true port = http,https filter = nginx-scanner logpath = /var/log/nginx/access.log maxretry = 2 findtime = 600 bantime = 86400 action = %(action_mwl)s
| 参数说明 | 配置值 | 老站长白话解读 |
|---|---|---|
findtime | 600 | 10分钟的观察期,只要在这个窗口期内触犯规则就记录。 |
maxretry | 2 | 忍耐底线只有2次。正常的访客谁没事连点两次你的.env? |
bantime | 86400 | 封禁24小时。足够让扫描脚本放弃你的机器去扫下一家。 |
改完保存,重启服务:
sudo systemctl restart fail2ban # 查看封禁战报 sudo fail2ban-client status nginx-scanner
做外贸站或国内SEO,最怕的就是防了贼,却把财神爷拒之门外。我见过有哥们配置完Fail2ban,第二天兴高采烈地跟我炫耀“抓了上千个恶意IP”,结果第三天哭着找我,说Google Search Console里提示抓取错误全线飙红。
Googlebot、Bingbot有时抓取频率极高,甚至有些404页面它也会反复探寻。如果你把规则写成了“只要404达到5次就封”,那你的SEO排名基本走到头了。
编辑jail.local中的ignoreip:
[DEFAULT] # 必须加入本地回环、你自己的固定公网IP、CDN回源IP段(如果用了Cloudflare) ignoreip = 127.0.0.1/8 ::1 你的办公室固定公网IP
如果你套了Cloudflare,务必把CF的回源IP全段加入白名单,否则Fail2ban抓到的是CDN节点IP,一封封一片,全站直接瘫痪。
运维安全从来不是靠花里胡哨的商业软件堆出来的,真正的独立站老鸟,往往就靠这套轻量级组合拳守住底线。做好这次Fail2ban自动化封禁恶意扫描IP实操,不仅能直接卸掉服务器70%的垃圾请求压力,把宝贵的CPU资源省下来分给真实的意向客户,更能保障网站在搜索引擎爬虫面前秒开不卡顿。
写作与做站同理,写技术文章别搞那些玄而又玄的假大空词汇,把踩坑细节挖透,把实操代码写对,这本身就是最顶级的SEO技巧。赶紧连上你的SSH终端,把那些每天暗戳戳摸你服务器的脚本小子,一个一个请进Fail2ban的冷宫里去。