核心是通过策略性伪造路径与行为触发机制构建动态蜜罐防御体系:统一返回404、禁用目录列表、屏蔽扫描请求头以切断反馈链;在robots.txt、错误页和静态资源中植入可信诱饵;基于ModSecurity识别扫描行为并动态重定向至蜜罐;联动日志分析、自动封禁与威胁情报输出形成闭环。

直接配置 Web 服务器防扫描、防枚举并引导攻击者进蜜罐,关键不是“堵死所有入口”,而是有策略地制造“可被发现但不可利用”的虚假路径,让自动化扫描器主动踩坑。核心逻辑是:用最小改动干扰扫描节奏,用可信伪装降低攻击者警惕,再通过行为触发精准跳转。
关闭无意义响应,切断扫描反馈链
多数扫描器依赖 HTTP 状态码和响应内容做判断。比如 Nmap 扫到 200 就继续探测目录,扫到 403 就尝试绕过,扫到 404 就放弃——这些反馈都在帮攻击者优化下一步动作。
- 统一返回 404(而非 403 或 500):对所有未明确定义的路径(如 /admin、/phpmyadmin、/.git、/backup.zip)一律返回标准 404 页面,不暴露目录结构、服务版本或后端技术栈
- 禁用目录列表:Apache 加
Options -Indexes;Nginx 加autoindex off;,避免泄露文件名和时间戳 - 屏蔽探测性请求头:用 ModSecurity 或 Nginx 的
map指令识别常见扫描工具 User-Agent(如 sqlmap、dirb、gobuster),直接返回空响应或重定向到蜜罐入口
植入可信诱饵,让扫描器“自愿上钩”
纯 404 不够,得给扫描器一点“甜头”。诱饵要符合真实业务习惯,不能太假。
- 在 robots.txt 中故意暴露“敏感路径”:比如添加
Disallow: /api/v1/internal/或Disallow: /debug/config.php,这些路径实际不存在,但会触发扫描器重点探测 - 在错误页面中埋藏“低权限入口”:404 页面里加一段隐藏 HTML,例如
<a href="/login_dev.php" style="display:none">Dev login</a>,正常用户看不到,但爬虫会提取并访问 - 提供看似可利用的静态资源:部署一个伪造的
/phpinfo.php(返回固定 HTML)、/test.jsp(返回 JSP 注释模板),它们不执行代码,但响应头带X-Powered-By: PHP/7.4.33这类真实指纹,增强可信度
基于行为触发蜜罐跳转,不靠静态路径
不能把蜜罐放在固定 URL(如 /honeypot),否则会被人工识别或白名单过滤。要用动态规则,在攻击行为发生瞬间切换流量。
- 用 ModSecurity 规则识别扫描特征:比如同一 IP 5 秒内请求 ≥10 个不同 404 路径,或 URL 含
union select../etc/passwdjavascript:等关键词,立即设置 cookiehoney=1并重定向至蜜罐域名(如scan.example.com) - 反向代理层分流:在 Nginx 或 Traefik 中配置条件路由,当请求携带特定 cookie 或来自已标记扫描 IP 段时,将后续所有请求代理到蜜罐服务(如 HoneyDrive 或自建 Flask 蜜罐),原站完全无感知
- 蜜罐环境模拟真实交互:比如伪造的 phpMyAdmin 登录页允许输入任意账号密码,提交后跳转至“数据库连接失败”页面,同时记录 POST 数据、User-Agent、来源 IP 和完整请求体,供分析攻击载荷
联动日志与响应,形成闭环防御
蜜罐不是摆设,它的价值在于把扫描行为转化为可操作的情报。
- 所有蜜罐访问日志实时写入 ELK 或 Loki,字段包含:攻击 IP、触发规则 ID、请求时间、原始 UA、Referer、完整 URL 参数
- 自动封禁高频扫描 IP:用 Fail2ban 监控蜜罐 access.log,对单 IP 10 分钟内请求 >50 次的,自动加入防火墙黑名单并同步至 WAF 的 IP 黑名单策略
- 生成威胁情报快照:每小时汇总新出现的 UA 字符串、扫描路径组合、SQLi/XSS 变种 payload,输出为 STIX 格式,推送到内部 SOC 平台或用于更新 WAF 自定义规则

















