docs: 写清「封的是一把键」与取证地址的区别

honeypot.md:
- §3 新增小节:LimitKey 折叠规则(IPv4 原样 / IPv6 折 /64)、邮件里两个地址
  各自含义、封禁只在内存里、建封 WARN 的字段与 grep 方法;
- §4 注明取证存的是精确地址,不是 /64 聚合键;
- §8 排障首行补「邮件说封了但还能访问」的三种原因与判定路径,
  并提醒「邮件里的来源 IP 不是封禁键,拿它对 ban_key 永远对不上」。
cli.md:stats 说明改为「来源排行(IPv6 按 /64 聚合)」,补 ip 语义。
This commit is contained in:
tamakyi
2026-10-23 10:53:12 +08:00
parent 818fa74160
commit 90a284a3dd
2 changed files with 37 additions and 2 deletions
+3 -1
View File
@@ -298,7 +298,7 @@ pg_dump -Fc <dbname> > before-$(date +%F-%H%M).dump
| 子命令 | 作用 | 改数据 |
|---|---|---|
| `hits` | 列出捕获到的凭据(时间倒序,密码默认脱敏) | 否 |
| `stats` | 来源 IP / 路径排行(库)+ 凭据排行(文件) | 否 |
| `stats` | 来源排行(IPv6 按 /64 聚合)+ 路径排行(库)+ 凭据排行(文件) | 否 |
| `paths` | 列出当前生效的诱饵路径 | 否 |
| `size` | 表行数、磁盘占用、凭据文件体积 | 否 |
| `prune` | 按保留期清元数据 + 凭据文件 | 是 |
@@ -320,6 +320,8 @@ pg_dump -Fc <dbname> > before-$(date +%F-%H%M).dump
(目录 0700、文件 0600),数据库里只有 IP / 路径 / UA / 是否封禁这些元数据。
所以 `hits` / `paths` **不连数据库**,DB 挂了也能查。
- 密码默认脱敏(保留首尾各 1 位)。终端输出常被贴进工单或截图,`--show-password` 只在确有取证需要时开。
- `hits` / `stats` 里的 `ip` 是**精确**客户端地址;封禁用的是 `shared.LimitKey` 折叠后的键
(IPv6 为 `/64` 前缀)。两者在 IPv6 下不一致是正常的,别拿邮件里的精确地址去对封禁键。
- `purge-creds` 用于清掉早期版本存在 `honeypot_hits` 上的明文列(AutoMigrate 不删既有列)。
执行前先 `pg_dump`;它只处理当前库,**历史备份与从库里的明文需要自行清理**。
- 封禁语义:GET 探测走常规阈值(默认 10 次 / 60 秒),**提交凭据才一次即封**。