#002 · 2025-12-19✓ PASS
云服务器部署雷池 WAF + HFish 蜜罐全记录
在 2 核 2G 云服务器上用 Docker 部署 SafeLine 社区版 WAF 和 HFish 蜜罐,记录从架构设计到踩坑填坑的完整过程。
背景
有一台 2 核 2G 的云服务器(your-server-ip),上面跑着 example.com 静态博客(Nginx 直接对外 80/443)。想在这台机器上同时跑两样东西:
- 雷池 SafeLine WAF — 给博客加一层 Web 应用防火墙,拦截常见攻击
- HFish 蜜罐 — 布一些诱捕端口,看互联网上有多少自动扫描器在乱撞
最终架构:公网 80/443 → 雷池 WAF → 博客(127.0.0.1:8080),蜜罐独立运行在非标端口。
第 1 步:基础准备
2G 内存要跑 Nginx + SafeLine(7 个容器)+ HFish + 系统开销,swap 是刚需。
# 加 2G swap
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 装 Docker(国内用阿里云镜像)
curl -fsSL https://get.docker.com | sudo bash -s docker --mirror Aliyun
# 配置 Docker 镜像加速
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
EOF
sudo systemctl restart docker
第 2 步:把博客从 80/443 挪走
雷池的 tengine 需要监听 80/443,所以先把 Nginx 改成只监听 127.0.0.1:8080:
server {
listen 127.0.0.1:8080;
server_name example.com www.example.com;
root /原来的/web/根目录;
index index.html;
# 原有的 location 规则保持不变
}
验证 curl -I http://127.0.0.1:8080 返回 200,且 80/443 端口已空出。
第 3 步:部署雷池 SafeLine
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
安装完成后登入管理后台(https://服务器IP:9443),添加防护站点:
- 域名:
example.com - 上游地址:
http://127.0.0.1:8080 - 开启 HTTPS,上传证书(或用雷池免费证书)
内存限制(2G 小机器必做):
docker update --memory 900m --memory-swap 1200m \
$(docker ps --filter name=safeline -q)
验证拦截生效: 访问 https://example.com/?id=1 and 1=1 union select 1--,应出现雷池拦截页面。
第 4 步:部署 HFish 蜜罐
docker run -d --name hfish \
--restart unless-stopped \
-m 400m --memory-swap 600m \
-p 4433:4433 \
-p 21:21 -p 23:23 -p 3306:3306 \
-p 6379:6379 -p 9200:9200 -p 8081:8081 \
threatbook/hfish-server:latest
管理后台在 https://服务器IP:4433/web/,登录后到”服务管理”开启诱捕服务。
踩坑记录
- 雷池 mgt 容器偶发 502 — JWT 过期或 fvm 连接超时,重启整个栈恢复:
cd /data/safeline && docker compose down && docker compose up -d - HFish 初始密码找不到 —
docker logs hfish查看;如果已改过忘了,进容器直改 SQLite 数据库的 bcrypt hash - 蜜罐端口没流量 — 检查云安全组,诱捕端口必须对
0.0.0.0/0开放(这是故意的),但管理后台 9443/4433 只能对管理员 IP 开放
安全加固
| 端口 | 来源 | 用途 |
|---|---|---|
| 22 | 仅我的 IP | SSH |
| 80, 443 | 0.0.0.0/0 | 雷池(网站入口) |
| 9443 | 仅我的 IP | 雷池管理 |
| 4433 | 仅我的 IP | HFish 管理 |
| 21, 23, 3306, 6379, 9200, 8081 | 0.0.0.0/0 | 蜜罐诱捕 |
当前状态
- ✅ 博客通过雷池正常访问(HTTP/HTTPS)
- ✅ 雷池拦截测试生效,后台有攻击记录
- ⚠️ HFish 管理端已部署,诱捕端口待全部开启
- ⚠️ 蜜罐数据分析(攻击源统计、payload 分类)待完成