从日志异象到自动加固实录
By: Cloud | 2026.04
在查看 Nginx 访问日志时,一些“熟悉又陌生”的访客开始出现:
👀 这些请求看起来很“不正常”,事实上也如此,它们的身份是: LLM 爬虫
不一定会攻击你,但会悄悄读取你的一切公开内容,然后奉献给使用它的用户,或者用作训练llm模型。
接下来,日志开始变得“不对劲”——
⚠️ 这些请求是在高强度,系统性地扫描敏感文件
这位站长,你也不想你的api被薅完,倒欠云服务厂商💰吧
既然 Bot 还会先看 robots.txt说明它们“尚存良知”。
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
拦得住循规蹈矩的君子,但防不住心怀鬼胎的小人。
面对自动化扫描,仅靠 robots.txt 显然不够——
👉 直接在 Nginx 层“物理断连”
# --- UA 黑名单(第一刀:识别身份) ---
if ($http_user_agent ~* (GPTBot|ClaudeBot|CCBot|ChatGPT-User)) {
return 403;
}
# --- 敏感文件封杀(第二刀:封资源) ---
location ~* \.(env|php|sql|bak|config|log|yaml|yml|ini)$ {
return 444;
}
# --- 恶意路径封杀(第三刀:封入口) ---
location ~* ^/(application|_profiler|backup|config|web-console|admin|wp-includes|wp-admin|wp-content) {
return 444;
}
# --- 隐藏文件保护(第四刀:补盲区) ---
location ~ /\.(?!well-known) {
deny all;
access_log off;
log_not_found off;
}
手动构造恶意请求测试效果:
出现 444 状态码,证明非法连接已在瞬间被物理切断。
手动写规则只是开始,真正的防御应该是:自动化 + 社区情报 + 持续进化
🧩 最终形态:
Nginx 静态规则拦截 → BadBot 黑名单过滤 → CrowdSec 行为封禁
✔ 从“被动挨打”进化为“主动狩猎”
我的自动化脚本(即将开源)🚧
让普通站长也能拥有企业级防护
特别感谢柴特寄屁踢以及Windows表情面板对本网页制作的鼎力支持