Featured image of post HFish 蜜罐部署实战:低交互诱捕与威胁感知

HFish 蜜罐部署实战:低交互诱捕与威胁感知

HFish 蜜罐 Docker 一键部署、节点端口规划(4433/4434/22)、Web 控制台初始化、蜜罐类型选型、与 SOC/EDR 联动

背景

蜜罐(Honeypot)是一种主动防御技术:故意暴露"看似有价值但实际是诱饵"的服务,吸引攻击者来探测/爆破/上传,全程记录攻击者行为,作为威胁情报和反制的依据。

HFish 是国内微步在线(github.com/hacklcx/HFish)开源的蜜罐平台,特点:

  • 部署简单:Docker 一行命令
  • 多协议支持:SSH、Telnet、FTP、MySQL、Redis、HTTP、HTTPS、Web 登录等 20+ 蜜罐服务
  • Web 控制台:实时看攻击源、攻击方式、被攻击蜜罐
  • 告警联动:支持钉钉、企业微信、飞书告警
  • 威胁情报对接:与微步 XTI 等威胁情报平台集成

适用场景

  • 真实生产网络旁路部署,感知来自内/外的攻击
  • 暴露在公网,吸引扫描器、勒索病毒、挖矿木马的"先头部队"
  • 安全运营中心(SOC)补充威胁情报

前置知识

  • Docker 基础
  • Linux 端口/防火墙
  • 安全运营基础(告警分诊)

重要原则:蜜罐必须部署在独立网络旁路,绝不能跟真实业务混用——一旦攻击者通过蜜罐横向移动到生产网,损失巨大。


一、部署架构

HFish 部署两种角色

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
                ┌──────────────┐
                │  HFish 服务端 │  ←  Web 控制台、数据聚合
                │  (主控节点)   │     监听 4433(Web) 4434(数据回传) 22(SSH 蜜罐)
                └──────┬───────┘
                       │ 数据回传(TCP 4434)
        ┌──────────────┼──────────────┐
        │              │              │
   ┌────▼─────┐   ┌────▼─────┐   ┌────▼─────┐
   │ HFish 节点│   │ HFish 节点│   │ HFish 节点│
   │ (按需部署) │   │ (按需部署) │   │ (按需部署) │
   └──────────┘   └──────────┘   └──────────┘
   跑各种蜜罐服务

最小化部署(单节点):

  • Web 控制台:TCP 4433(HTTPS)
  • 数据回传:TCP 4434
  • SSH 蜜罐:TCP 22可选,与真实 SSH 冲突需改端口)
  • 其他蜜罐:FTP 21、Telnet 23、MySQL 3306、Redis 6379、HTTP 80 等

⚠️ 端口冲突:如果生产机器 SSH 是 22,HFish 的 SSH 蜜罐需要改端口(如 2222),或者用 iptables 做端口转发:把到达 22 的攻击流量到 HFish(用 iptables -m statistic --mode random 概率引流),再让真实 SSH 兜底。


二、Docker 一键部署

2.1 启动命令

1
2
3
4
5
6
docker run -d --restart=always \
  --name hfish \
  -v /home/docker/hfish:/usr/share/hfish \
  --net=host \
  --privileged=true \
  threatbook/hfish-server:latest

参数解释:

参数作用
--net=host蜜罐服务监听主机端口,必须 host 模式
--privileged=true蜜罐需要权限(如模拟 iptables 阻断)
-v /home/docker/hfish:/usr/share/hfish持久化数据、配置
--restart=always守护进程挂了自动拉起

2.2 升级

1
2
3
# 用 watchtower 自动升级(推荐)
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower -cR hfish

2.3 配置文件位置

容器内 /usr/share/hfish/config.toml 挂载到宿主 /home/docker/hfish/config.toml改完配置重启容器

1
docker restart hfish

三、初始化 Web 控制台

3.1 登录

浏览器访问 https://<蜜罐IP>:4433/web/login

首次登录会提示初始化管理员密码,原始默认:

  • 账号:admin
  • 密码:HFish2021

强烈建议:登录后立刻改密码(系统设置 → 账户管理),并开启二次验证。

3.2 初始配置

  1. 集群节点:默认就是单机版,多节点需要"添加子节点"
  2. 蜜罐模板:内置 20+ 模板(SSH/Telnet/FTP/MySQL/Redis/HTTP 等)
  3. 告警通道:钉钉机器人、企业微信、飞书、SMTP

四、蜜罐模板与典型部署

4.1 启用 SSH 蜜罐

最常被攻击的蜜罐

  • 模板:选 “SSH 22” 或自定义端口
  • 模拟 banner:伪装成 OpenSSH 7.4(CentOS 7 默认)
  • 弱口令字典:内置常见 root/123456admin/admin

攻击者尝试登录时,HFish 会故意放慢响应(避免被识别为蜜罐),同时记录尝试的用户名/密码/源 IP/时间

4.2 启用 MySQL 蜜罐

  • 端口:3306
  • banner:伪装成 MySQL 5.7.38
  • 漏洞模拟:可模拟 cve-2021-27928 等已知漏洞的响应

4.3 启用 HTTP/HTTPS 登录页蜜罐

  • 内置仿登录页面(OA、邮箱、VPN、RouterOS)
  • 攻击者输入的账号密码全部记录
  • 上传文件时接收并保存到分析目录

4.4 启用 Web 蜜罐(含 CVE 仿真)

内置 WordPress、Struts2、ThinkPHP、Confluence 等 30+ Web 蜜罐模板,攻击者访问会触发"漏洞利用尝试"记录。


五、告警对接

5.1 钉钉机器人

1
2
3
4
系统设置 → 告警管理 → 钉钉
Webhook:https://oapi.dingtalk.com/robot/send?access_token=xxxxx
签名密钥:(可选)
事件:攻击告警、蜜罐失联、节点掉线

5.2 企业微信 / 飞书

类似钉钉,填 Webhook URL 即可。

5.3 Syslog / SIEM

1
2
3
4
5
6
# config.toml
[syslog]
enabled = true
host = "siem.internal.example.com"
port = 514
protocol = "udp"

HFish 会把攻击事件以 CEF/LEEF 格式推送到 SIEM(如 Splunk、ELK、QRadar)。


六、威胁情报价值

蜜罐数据最大的价值是威胁情报

  1. 攻击源 IP:可以批量加入防火墙黑名单
  2. 攻击载荷:上传的 WebShell、勒索病毒样本,可喂给沙箱分析
  3. 攻击者画像:通过历史记录建立攻击者画像(IP 段、UA、TLS fingerprint)
  4. 新漏洞预警:HFish 内置最新 CVE 仿真模板,新漏洞爆发几小时内就有攻击数据

七、生产部署建议

7.1 旁路部署(推荐)

1
2
3
[公网] → [边界防火墙] → [生产网] ← 攻击者尝试突破
                       [旁路蜜罐网] ← HFish 监听公网 IP

HFish 服务器单独一个网段,与生产网互通。攻击者即使拿到蜜罐 shell 也"逃不出去"。

7.2 分布式节点

大型企业多机房部署:

  • 中心节点(北京):聚合所有数据,Web 控制台
  • 边缘节点(上海/广州/深圳):跑蜜罐服务,回传数据到中心

/etc/hfish/cluster.toml

1
2
3
4
[cluster]
enabled = true
node_id = "edge-shanghai-01"
master_url = "https://hfish-master.internal.example.com:4434"

7.3 防止蜜罐被识别

  • 响应时间随机化:HFish 自带
  • Banner 真实化:选对目标系统的版本
  • 避免过于完美:故意留一些"小破绽"让攻击者觉得是真实系统
  • 不要主动告警给攻击者:蜜罐被识破后,攻击者会切换通道

7.4 容量规划

蜜罐数量建议配置日志量级
1-5 个2 核 4G1-10 MB/天
5-20 个4 核 8G10-100 MB/天
20-50 个8 核 16G100MB-1GB/天
50+集群1GB+/天

八、常见问题

8.1 蜜罐被反扫

攻击者通过 IP 段扫描发现"全是蜜罐",会标记后跳过。对策

  • 真实业务系统旁挂几个蜜罐(不是全部
  • 蜜罐与真实服务用不同 IP 段

8.2 蜜罐被攻破后反向被利用

经典场景:蜜罐的 SSH 蜜罐被攻破 → 攻击者用 SSH 蜜罐的跳板去打别人 → 蜜罐 IP 被列入 RBL 黑名单。

对策

  • 蜜罐出口严格限制(iptables OUTPUT 限制只能连到日志服务器)
  • 启用 iptables 蜜罐流量主动劫持到本地黑洞

8.3 HFish 容器起不来

1
2
3
docker logs hfish
# 常见原因:4433 端口被占
lsof -i :4433

九、卸载

1
2
3
docker stop hfish
docker rm hfish
rm -rf /home/docker/hfish

小结

HFish 是国内最易上手的蜜罐平台:

  1. Docker 一行命令即可部署
  2. Web 控制台实时看攻击,比纯文本日志好用 10 倍
  3. 告警对接钉钉/企微/SIEM,让安全运营团队能即时响应
  4. 威胁情报输出:攻击源 IP、攻击手法、上传样本

生产部署三原则

  • 旁路部署,不与生产网互通
  • 限制出口,蜜罐被攻破后不能跳板
  • 真实化配置,banner、响应时间贴近目标系统

下一步

  • T-Pot(多蜜罐整合平台)做欧洲风格的蜜罐矩阵
  • 把蜜罐数据接入 SOAR(如华为 Intewell、阿里云安全编排)
  • 与 ATT&CK 框架对齐,看攻击者覆盖了哪些战术

2024 视角:蜜罐 + XDR + 主动防御的"现代融合"

2021 那篇是 HFish 蜜罐单点部署的实战。2024 视角下,蜜罐已经融入 XDR(Extended Detection and Response)生态

一、蜜罐 + XDR 的"杀伤链"早期发现

  • 传统蜜罐价值:记录攻击、收集样本、威胁情报。
  • 2024 升级:蜜罐数据接入 XDR / SIEM 后,能在攻击者"横向移动"前发现他们:
1
2
[攻击者] → 扫公网 → 命中蜜罐 → XDR 告警 → 自动隔离可疑 IP → 追踪 APT
                ↑ 早期发现                ↑ 自动响应
  • XDR 平台:CrowdStrike Falcon XDR / Microsoft Defender XDR / 阿里云 XDR / 华为 HSS XDR。

二、HFish 2024 的版本变化

  • HFish 3.0+(2022 起)支持:
    • 蜜罐指纹模拟:模拟真实业务系统(MySQL 8.0.30 vs MySQL 5.7.38 的 banner 差异)
    • 多租户:多个业务部门用同一套 HFish,按部门隔离数据
    • WebSocket 蜜罐:模拟 Web 服务的实时连接
    • 蜜罐集群:中心-边缘架构(中心管数据,边缘跑蜜罐)
1
2
3
4
5
6
7
# 2024 装 HFish 3.x
docker run -d --restart=always \
  --name hfish \
  -v /home/docker/hfish:/usr/share/hfish \
  --net=host \
  --privileged=true \
  threatbook/hfish-server:3.0.0

三、T-Pot 2024:蜜罐"全家桶"事实标准

  • T-Pot(由 T-Mobile Security 维护)2024 已是蜜罐"全家桶"标准——20+ 蜜罐工具 一键集成:
1
2
3
4
5
# 装 T-Pot 2024
# 最小 8G RAM / 128G SSD / 单网卡
git clone https://github.com/telekom-security/tpotce
cd tpotce/iso/installer
./install.sh --type=user
  • T-Pot 2024 自带
    • 蜜罐:Cowrie(SSH/Telnet)、Dionaea(FTP/SMB)、Glastopf(HTTP)、Conpot(ICS/SCADA)、Honeysap(SAP)、Mailoney(SMTP)、Rdpy(RDP)等
    • 可视化:Kibana + Elasticsearch(攻击大屏)
    • 威胁情报:自动对接 MISP、AlienVault OTX

四、蜜罐 + eBPF 的"高级对抗"

  • 2024 高级蜜罐用 eBPF 拦截系统调用,比用户态蜜罐更难被检测
1
2
3
4
5
# 用 Tracee(Aqua Security 开源 eBPF 蜜罐)跟踪可疑行为
kubectl apply -f https://raw.githubusercontent.com/aquasecurity/tracee/master/deploy/kubernetes/tracee-daemonset.yaml

# 触发"反弹 shell"告警
tracee --trace 'comm=bash AND syscall=connect'
  • Tracee 能检测到:
    • 反弹 shell(bash connect)
    • 容器逃逸
    • 隐藏进程
    • 凭证读取
    • 文件篡改

五、云原生时代的"蜜罐 Pod"

  • 2024 蜜罐可以跑在 K8s 里——以 Pod 形式存在:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# fake-ssh-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: fake-ssh
  namespace: honeypot
spec:
  replicas: 3
  selector:
    matchLabels:
      app: fake-ssh
  template:
    metadata:
      labels:
        app: fake-ssh
    spec:
      containers:
      - name: cowrie
        image: cowrie/cowrie:latest
        ports:
        - containerPort: 22
        resources:
          limits:
            memory: 256Mi
            cpu: 500m
  • 优势:蜜罐被攻击 → K8s 自动重启 / 漂移 / 隔离。
  • 风险:被攻击者反控 K8s 集群。必须配 NetworkPolicy 严格限制
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# honeypot-isolation.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: honeypot-isolation
  namespace: honeypot
spec:
  podSelector: {}
  policyTypes:
    - Ingress
    - Egress
  ingress:
    - from:
        - namespaceSelector: {}
  egress:
    - to:
        - namespaceSelector:
            matchLabels:
              name: monitoring
      ports:
        - port: 9200   # ES

六、ATT&CK 框架的"蜜罐数据映射"

2021 那篇提到"与 ATT&CK 框架对齐"。2024 实战

  • ATT&CK 矩阵(v14,2023-10):14 大战术、200+ 技术、600+ 子技术。
  • 蜜罐数据打 ATT&CK 标签——每次攻击记录映射到具体技术:
攻击者行为ATT&CK 技术
扫 SSH 22 端口T1046(Network Service Scanning)
试 root/123456 登录T1110.001(Password Guessing)
反弹 shellT1059.004(Unix Shell)
写 crontabT1053.003(Cron)
横向 SMBT1021.002(SMB/Windows Admin Shares)
  • 价值:让 SOC 知道攻击者覆盖了哪些战术差哪些战术(= 防护盲点)。

七、HFish 的"蜜罐溯源"能力

  • 蜜罐溯源:故意在蜜罐里放"假数据"(伪造的用户名、API key、token),攻击者拿走后会回连蜜罐:
    • 浏览器指纹(Canvas 指纹、WebGL 指纹)
    • 真 IP(WebRTC 暴露)
    • QQ / 微信 ID(社交钓鱼)
1
2
3
4
5
# 在 HTTP 蜜罐里加追踪代码
<script>
  // 拿到攻击者真实 IP(WebRTC)
  fetch('/api/webrtc-leak').then(r => r.json()).then(console.log)
</script>
  • 2024 法规:蜜罐溯源不能主动攻击攻击者(“反杀"违法),但被动记录完全合法。

源文档os/linux/第三方tools/safe/hfish/hfish.md(Docker 部署、初始账号、Web 控制台)

使用 Hugo 构建
主题 StackJimmy 设计