docs: 蜜罐文档补家族伪装与资源开销
honeypot.md: - 开篇从「一个假 WordPress 后台」改为「按扫描目标伪装成对应后台」,列出 9 个家族 与各自触发路径; - §1 补静态资源的处理(回占位内容、不落库、插件 .php 回 404 的理由); - §3 封禁路径表补一行「Tomcat Basic 认证」的归属,说明 401 也走凭据通道; - 补资源开销的实际数字,便于运维判断这功能值不值。 cli.md:paths 说明补家族汇总。
This commit is contained in:
+24
-3
@@ -1,6 +1,6 @@
|
||||
# 蜜罐(虚假后台登录页)
|
||||
|
||||
给扫描器一个假的 WordPress 登录页:它探后台路径时返回 200 假页面,它提交账号密码时把凭据记下来、并把它临时封掉。
|
||||
给扫描器一组假的后台登录页(WordPress / phpMyAdmin / Jenkins / Tomcat / Grafana …):它探后台路径时返回对应产品外观的假页面,它提交账号密码时把凭据记下来、并把它临时封掉。
|
||||
|
||||
一句话取舍:**这套功能的价值是「拿到对方正在用的字典」,不是「挡住扫描」。** 挡扫描靠 CDN 和 `autoban`;蜜罐只在「有人真的往假后台里填账号密码」时才有意义。
|
||||
|
||||
@@ -25,7 +25,27 @@
|
||||
|
||||
业务路由前缀(`/login`、`/api`、`/static` 等)即使出现在自定义清单里也会被强制剔除,构成第二道保险。
|
||||
|
||||
改完路径后用 `tamabox honeypot paths` 看最终生效的完整清单。
|
||||
改完路径后用 `tamabox honeypot paths` 看最终生效的完整清单(会按家族汇总条数)。
|
||||
|
||||
### 会伪装成哪几类后台
|
||||
|
||||
| 家族 | 典型路径 | 表单字段 / 响应 |
|
||||
|---|---|---|
|
||||
| WordPress | `/wp-login.php`、`/wp-admin`、`/wp-json` | `log` / `pwd`,带 `wordpress_test_cookie` |
|
||||
| phpMyAdmin | `/phpmyadmin`、`/pma`、`/adminer.php` | `pma_username` / `pma_password` |
|
||||
| Tomcat | `/manager/html`、`/host-manager` | **401 + `WWW-Authenticate`**(Basic,凭据从 `Authorization` 头取) |
|
||||
| Jenkins | `/jenkins`、`/jnlpJars` | `j_username` / `j_password`,带 `X-Jenkins` 头 |
|
||||
| Grafana | `/grafana` | `user` / `password`(深色主题) |
|
||||
| GitLab | `/users/sign_in` | `user[login]` / `user[password]` |
|
||||
| LuCI(路由器) | `/cgi-bin/luci`、`/luci` | `luci_username` / `luci_password` |
|
||||
| Joomla | `/administrator` | `username` / `passwd` |
|
||||
| 通用后台 | `/admin`、`/console`、`/zabbix`、`/jira` … | `username` / `password` |
|
||||
|
||||
**为什么要分类**:扫描器和爆破脚本都是「先按路径判断这是什么后台,再用它认识的字段名填表」。所有路径都回 WordPress 页面,等于在 `/phpmyadmin/index.php` 上告诉对方「这里不是 PMA」,对方直接换目标 —— 我们既拿不到凭据,也留不下有效取证。
|
||||
|
||||
**静态资源也一起伪装**:`/wp-admin/css/login.min.css`、`/wp-includes/js/*.js`、`/wp-admin/images/*.png` 这类请求回占位 CSS/JS/真 1×1 PNG。这些请求**不落库、不计数** —— 一次页面加载会打 5–10 个资源,逐个 INSERT 等于帮攻击者把写入放大十倍。插件目录下的 `.php` 则回 404(那是 webshell 探测,回登录页反而不像)。
|
||||
|
||||
单页渲染约 3.7 µs / 2 次分配、页面 1.5–2.5 KB,资源请求 0 分配(`BenchmarkRenderFamily` / `BenchmarkAssetFor` 守着)。
|
||||
|
||||
---
|
||||
|
||||
@@ -65,7 +85,8 @@ honeypot_cred_dir = data/honeypot-creds
|
||||
| 行为 | 走哪条通道 | 阈值 | 是否立即封 |
|
||||
|---|---|---|---|
|
||||
| `GET /wp-login.php` 看一眼假页面 | 常规 `autoban.Record` | `ban_threshold_sensitive`(默认 10 次 / 60 秒) | 否 |
|
||||
| `POST` 带 `log` / `pwd` 提交 | 蜜罐 `autoban.RecordHoneypot` | `honeypot_threshold`(默认 1) | 是,立即封 |
|
||||
| `GET /wp-admin/css/login.min.css` 等资源 | **不计数、不落库** | — | 否 |
|
||||
| `POST` 带该家族的凭据字段(`log`/`pwd`、`pma_*`、`j_*`、`user[login]` …) | 蜜罐 `autoban.RecordHoneypot` | `honeypot_threshold`(默认 1) | 是,立即封 |
|
||||
| `POST` 不带任何凭据字段 | 常规通道 | 同上 | 否 |
|
||||
|
||||
**为什么 GET 不立即封**:爆破脚本的标准流程是「先 GET 探表单 → 再 POST 提交」。如果 GET 就吃 403,假登录页只被看了一次,对方根本没机会填表,凭据永远拿不到 —— 而这个功能的全部价值就在那份凭据上。
|
||||
|
||||
Reference in New Issue
Block a user