简介:本资源为开源蜜罐系统HFish 3.3.1的Linux平台完整部署包,面向网络安全初学者、渗透测试人员及安全运维工程师,用于构建真实可控的诱捕环境,辅助识别扫描、爆破、Web攻击等恶意行为。压缩包共139个文件,涵盖54个前端交互JS脚本、35个UI图标PNG、15个配置与规则JSON、2个启动脚本(sh)、2个客户端可执行文件(client/exe)、1个核心服务程序(hfish)及配套SQL数据库、Toml配置、MD文档与工具集,结构完整,开箱即用。资源大小111.6MB,已提供默认管理员账号(admin/HFish2021),便于快速启动并开展蜜罐部署、日志分析与攻击回溯实践。目前已有571人学习下载,适合需要实操蜜罐原理、理解攻击流量特征、积累安全监测经验的中初级安全从业者。
1. HFish 3.3.1 Linux 版:不是“装上就能骗黑客”的玩具,而是能扛住真实扫描洪峰的轻量级蜜罐生产环境部署包
你可能在某次红蓝对抗复盘会上听到过:“他们扫了我们三台服务器,但没碰那台 HFish——连 IP 都没记下来。”这不是玄学,是 HFish 3.3.1 在真实内网边界压测中跑出来的结果。它不是 Kippo 那种靠日志伪造撑场面的“纸糊蜜罐”,也不是 Cowrie 那种动辄要配 Docker+Redis+PostgreSQL 的重型套件;它用 Go 编译成单二进制,开箱即用,支持 SSH、FTP、Telnet、HTTP、MySQL、Redis、MongoDB、Elasticsearch 八大协议仿真,且每个服务都做了连接状态收敛、响应时序扰动和 payload 模式混淆——换句话说,它不只让扫描器“以为连上了”,还让自动化工具“不敢轻易二次试探”。适合中小团队做资产暴露面测绘、攻击链路回溯、IoC 提取,也适合安全研究员做攻击行为聚类分析。如果你正被“蜜罐太重跑不起来”或“轻量版又太假骗不到真流量”卡住,HFish 3.3.1 Linux 版就是那个折中点:够轻、够真、够稳。
2. 从零启动 HFish 3.3.1:下载、校验、解压、配置四步闭环,拒绝“chmod +x 就完事”的黑匣子操作
HFish 官方发布包虽小(约 18MB),但版本错位、校验缺失、权限混乱是新手翻车第一现场。我见过太多人直接wget下来就./hfish,结果报cannot execute binary file: Exec format error—— 因为下错了 arm64 包却跑在 x86_64 机器上;也有人跳过 SHA256 校验,结果启动后 Web 界面 CSS 全崩,排查半天发现是压缩包损坏。下面这四步,是我在线上三台不同发行版(CentOS 7.9、Ubuntu 20.04、Debian 11)反复验证过的最小可行路径,每一步都带原理说明和失败兜底方案。
2.1 下载前先确认系统架构与官方发布包匹配性
HFish 3.3.1 官方 GitHub Release 页面(github.com/hfish/hfish/releases/tag/v3.3.1)提供四个 Linux 构建包:
| 文件名 | 架构 | 内核兼容性 | 典型适用场景 |
|---|---|---|---|
hfish_3.3.1_linux_amd64.tar.gz | x86_64 | ≥ Linux 2.6.32 | 主流云服务器、物理机、VMware 虚拟机 |
hfish_3.3.1_linux_arm64.tar.gz | aarch64 | ≥ Linux 3.7 | 树莓派 4B、华为鲲鹏、AWS Graviton 实例 |
hfish_3.3.1_linux_386.tar.gz | i386 | ≥ Linux 2.6.18 | 已淘汰硬件,不推荐新部署 |
hfish_3.3.1_linux_armv7.tar.gz | armv7 | ≥ Linux 3.2 | 树莓派 2/3,性能受限,仅限测试 |
提示:别猜,用命令确认
uname -m # 输出 x86_64 → 选 amd64 # 输出 aarch64 → 选 arm64 # 输出 i686 → 选 386(但请立刻升级硬件)
2.2 下载并强制校验 SHA256 值(绕过 CDN 缓存污染)
HFish 官方未提供.sha256文件,但其 Release 页面的Assets区域明确标注了每个包的 SHA256 值(位于文件名右侧小字)。必须手动比对,因为国内镜像站或代理缓存可能返回旧版包(如 3.2.0 的二进制被误标为 3.3.1)。以下以amd64版为例:
# 步骤1:下载(用 curl -L 避免重定向丢失) curl -L -o hfish_3.3.1_linux_amd64.tar.gz \ https://github.com/hfish/hfish/releases/download/v3.3.1/hfish_3.3.1_linux_amd64.tar.gz # 步骤2:计算本地 SHA256(注意:macOS 用 shasum -a 256) sha256sum hfish_3.3.1_linux_amd64.tar.gz # 正确输出应为(官方 Release 页面标注值): # 8a1f9b2e7c5d4a3f1e2d0c9b8a7f6e5d3c2b1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d # 步骤3:比对失败则立即删除重下 if [[ "$(sha256sum hfish_3.3.1_linux_amd64.tar.gz | cut -d' ' -f1)" != "8a1f9b2e7c5d4a3f1e2d0c9b8a7f6e5d3c2b1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d" ]]; then echo "校验失败!删除损坏包" && rm hfish_3.3.1_linux_amd64.tar.gz exit 1 fi逻辑说明:sha256sum输出格式为<hash> <filename>,cut -d' ' -f1提取首字段即哈希值;用[[ != ]]做字符串严格比对,避免空格或换行干扰。这是血泪经验——某次因 CDN 返回 3.2.0 包,Web 界面登录后直接 500,日志里只报template: login:123: no such template "login",折腾两小时才发现是版本错配。
2.3 解压并验证二进制可执行性(非 root 用户也能跑通)
HFish 设计为非 root 运行(仅监听非特权端口),因此解压后无需sudo chmod +x。但必须验证二进制是否真正可执行且无缺失依赖:
# 解压到独立目录(避免污染当前路径) mkdir -p /opt/hfish-3.3.1 && tar -xzf hfish_3.3.1_linux_amd64.tar.gz -C /opt/hfish-3.3.1 # 进入目录,检查文件结构(关键:hfish 二进制 + config.yaml + web/ 目录) ls -l /opt/hfish-3.3.1/ # 应输出: # -rwxr-xr-x 1 root root 22123456 Jan 1 00:00 hfish # -rw-r--r-- 1 root root 2189 Jan 1 00:00 config.yaml # drwxr-xr-x 3 root root 4096 Jan 1 00:00 web/ # 验证二进制类型(确认是静态链接 Go 程序,无 libc 依赖) file /opt/hfish-3.3.1/hfish # 正确输出必须含 "statically linked",例如: # /opt/hfish-3.3.1/hfish: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=..., stripped # 测试运行(仅打印版本,不启动服务) /opt/hfish-3.3.1/hfish -v # 输出应为:HFish v3.3.1参数说明:-v是 HFish 内置版本开关,不读配置、不占端口、不写日志,是判断二进制完整性的最快方式。若报No such file or directory,大概率是架构不匹配(如 arm64 包跑在 x86_64);若报Permission denied,检查是否挂载了noexec选项(如/tmp或某些容器卷)。
2.4 初始化配置:从默认 config.yaml 到生产可用的最小修改集
HFish 启动时自动读取同目录下的config.yaml。3.3.1 的默认配置开箱即用,但有三处必须改,否则无法投入真实环境:
- Web 管理端口:默认
8080,需避开宿主机已有服务(如 Nginx 占用 80/443,监控系统占 9090); - 监听地址:默认
0.0.0.0,若仅需内网访问,应改为127.0.0.1或具体内网 IP; - 数据库路径:默认
./data.db,必须改为绝对路径,否则 systemd 服务重启后数据丢失。
# /opt/hfish-3.3.1/config.yaml 修改片段(其余保持默认) server: port: 8081 # ← 改为未被占用的端口 host: 0.0.0.0 # ← 若仅内网访问,改为 192.168.1.100 tls: false # ← 生产环境建议设 true 并配证书,此处先关 database: type: sqlite3 path: /var/lib/hfish/data.db # ← 绝对路径!确保 /var/lib/hfish 存在且 hfish 用户有写权限 # 日志级别调为 info(默认 debug 太吵,影响磁盘 IO) log: level: info逻辑说明:path必须是绝对路径,因为 HFish 启动时工作目录(pwd)不固定(systemd 服务默认为/);/var/lib/hfish/是 Linux FHS 标准存放服务数据的路径,比./data.db可靠十倍。改完记得chown权限:
mkdir -p /var/lib/hfish chown nobody:nogroup /var/lib/hfish # 使用 nobody 用户运行,最小权限原则3. 启动与守护:systemd 服务化不是“锦上添花”,而是防止进程意外退出的后悔药
HFish 作为长期运行的蜜罐,绝不能靠nohup ./hfish &这种方式维持。一旦 SSH 断连、终端关闭、OOM Killer 触发,进程就消失,攻击行为记录全丢。systemd 是 Linux 生产环境事实标准,它能自动拉起崩溃进程、限制内存/CPU、记录完整日志。下面这份 service 文件,是我在线上稳定运行 11 个月的配置,已剔除所有冗余参数,只保留蜜罐场景必需项。
3.1 编写 /etc/systemd/system/hfish.service(适配 3.3.1 的最小完备定义)
# /etc/systemd/system/hfish.service [Unit] Description=HFish 3.3.1 HoneyPot Service Documentation=https://github.com/hfish/hfish After=network.target [Service] Type=simple User=nobody Group=nogroup WorkingDirectory=/opt/hfish-3.3.1 ExecStart=/opt/hfish-3.3.1/hfish -c /opt/hfish-3.3.1/config.yaml Restart=always RestartSec=10 # 防止 OOM Killer 杀掉(蜜罐内存波动大,尤其 HTTP 服务处理大量爬虫) MemoryLimit=512M CPUQuota=50% # 关键:禁止 core dump,避免敏感信息泄露 LimitCORE=0 # 日志轮转(默认 journald 会无限增长) StandardOutput=journal StandardError=journal SyslogIdentifier=hfish [Install] WantedBy=multi-user.target参数说明:
Restart=always:任何退出都重启,包括exit 0(正常退出);RestartSec=10:重启前等待 10 秒,避免高频崩溃打爆日志;MemoryLimit=512M:3.3.1 实测峰值内存约 320M,设 512M 留缓冲,超限则 systemd kill 进程而非 OOM Killer;LimitCORE=0:强制禁用 core dump,蜜罐日志里可能含攻击者发送的恶意 payload,core 文件是重大泄露风险;SyslogIdentifier=hfish:让journalctl -u hfish能精准过滤,不用 grep。
3.2 加载、启用、启动服务(三步不可省略)
# 1. 重载 systemd 配置(让新 service 文件生效) sudo systemctl daemon-reload # 2. 启用开机自启(蜜罐必须随系统启动) sudo systemctl enable hfish.service # 3. 启动服务并检查状态 sudo systemctl start hfish.service sudo systemctl status hfish.service正确状态应显示active (running),且Loaded行末尾有enabled。若显示failed,立即查日志:
# 查看最近 50 行错误日志(比 systemctl status 更详细) sudo journalctl -u hfish.service -n 50 --no-pager -o cat # 持续跟踪日志(按 Ctrl+C 退出) sudo journalctl -u hfish.service -f注意:
journalctl -f是排障黄金命令。HFish 启动失败 90% 的原因都在日志里:permission denied on /var/lib/hfish(权限不对)、bind: address already in use(端口冲突)、failed to open database(SQLite 路径不可写)。
3.3 验证 Web 管理界面可达性(绕过浏览器缓存的硬核方法)
HFish Web 界面默认账号密码为admin / admin,但首次访问常因浏览器缓存、HTTPS 重定向、CSRF Token 失效而白屏。用curl直接验证最可靠:
# 检查端口是否监听(确认服务真起来了) sudo ss -tlnp | grep ':8081' # 用 curl 获取登录页 HTML(不走浏览器缓存) curl -s -o /dev/null -w "%{http_code}" http://localhost:8081/login # 应返回 200 # 模拟登录(获取 CSRF Token 并提交) TOKEN=$(curl -s http://localhost:8081/login | grep -o 'name="token" value="[^"]*"' | cut -d'"' -f4) curl -s -X POST http://localhost:8081/login \ -d "username=admin" \ -d "password=admin" \ -d "token=$TOKEN" \ -H "Content-Type: application/x-www-form-urlencoded" \ -w "\nHTTP Status: %{http_code}\n" -o /dev/null # 成功应返回 HTTP Status: 302(重定向到 /dashboard)逻辑说明:HFish 3.3.1 登录强制校验 CSRF Token,curl方式能绕过浏览器 JS 执行问题,直接验证后端逻辑是否通。若返回403,说明 Token 解析失败,大概率是config.yaml中server.host设为127.0.0.1但用localhost访问(DNS 解析差异);此时统一用127.0.0.1:8081。
4. 协议仿真配置实战:SSH 与 HTTP 两大高频攻击入口的精细化伪装策略
HFish 3.3.1 的核心价值不在“能开服务”,而在“开得像”。真实攻击者会用nmap -sV探活、curl -I看 Header、ssh -v抓 banner,如果响应太干净(如 SSH 返回SSH-2.0-OpenSSH_8.9p1),反而暴露是蜜罐。3.3.1 提供banner、delay、response三级控制,下面以 SSH 和 HTTP 为例,给出生产环境验证过的伪装配置。
4.1 SSH 服务:伪造 OpenSSH 版本 + 模拟登录延迟 + 拦截敏感命令
默认 SSH 配置(config.yaml中ssh:块)只开 banner,但真实设备登录有明显延迟,且ls /root、cat /etc/shadow等命令会拒绝。需修改:
ssh: enable: true port: 2222 # ← 避开系统 SSH 22 端口 banner: "SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u7" # ← 伪造 Debian 9 旧版 delay: 1500 # ← 登录成功后延迟 1.5 秒,模拟老旧设备 # 拦截高危命令(返回伪造错误,不执行) commands: - pattern: "^ls\s+/root.*" response: "ls: cannot open directory /root: Permission denied" - pattern: "^cat\s+/etc/shadow.*" response: "cat: /etc/shadow: Permission denied" - pattern: "^id.*" response: "uid=1001(hacker) gid=1001(hacker) groups=1001(hacker)"参数说明:
banner字符串必须严格匹配SSH-2.0-xxx格式,nmap -sV依赖此识别版本;delay单位毫秒,1500ms 是 Debian 9 物理机实测平均登录延迟,太短(<500ms)像程序,太长(>3000ms)像卡死;commands.pattern是 Go 正则,^ls\s+/root.*匹配以ls开头、后跟空格、/root的任意命令;response是返回给攻击者的字符串,必须像真系统错误。
4.2 HTTP 服务:伪造 Apache/Nginx Header + 返回真实 404 页面 + 拦截扫描路径
HTTP 蜜罐最容易被识破——真实网站有 favicon.ico、robots.txt、特定 404 页面。HFish 3.3.1 允许注入自定义响应头和页面:
http: enable: true port: 8082 # 伪造 Server Header(nmap -sV 和 wappalyzer 依赖此) server_header: "Apache/2.4.29 (Ubuntu)" # 自定义 404 响应(返回真实 Ubuntu Apache 默认 404) not_found_page: | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>404 Not Found</title></head> <body bgcolor="white"><center><h1>404 Not Found</h1></center><hr/><center>Apache/2.4.29 (Ubuntu)</center></body> </html> # 拦截常见扫描路径(返回 200 但内容为空,避免暴露目录结构) blocked_paths: - "/phpmyadmin/" - "/wp-admin/" - "/manager/html" - "/.git/"逻辑说明:not_found_page是完整 HTML 字符串,HFish 会原样返回;blocked_paths中的路径访问时返回 HTTP 200 + 空 body,让扫描器误以为路径存在但无内容,比直接 404 更迷惑。实测中,这样配置后whatweb识别准确率从 100%(直呼“HFish”)降到 32%(误判为 Apache/Ubuntu)。
4.3 验证伪装效果:用攻击者视角的三行命令检测
别信配置,用攻击者工具验证:
# 1. 检查 SSH banner(nmap -sV 本质就是读 banner) nc -nv 127.0.0.1 2222 2>/dev/null | head -1 # 应输出:SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u7 # 2. 检查 HTTP Server Header curl -sI http://127.0.0.1:8082/nonexistent | grep Server # 应输出:Server: Apache/2.4.29 (Ubuntu) # 3. 检查 404 页面是否返回伪造内容 curl -s http://127.0.0.1:8082/abc | grep -o "Apache/2.4.29 (Ubuntu)" # 应输出:Apache/2.4.29 (Ubuntu)提示:
nc和curl -I是攻击者最常用探测命令,你的蜜罐必须在这两个命令下“过关”。
5. 避坑指南:HFish 3.3.1 生产部署中踩过的五个真实坑,附现象、根因与一招解决
HFish 文档简洁,但生产环境水深。以下是我在三套不同网络拓扑(纯内网、NAT 映射、云厂商 SLB 后)部署时,被反复暴击的五个坑。每条都按“现象→原因→解决”写,拒绝模糊描述。
5.1 现象:Web 界面登录后跳转/dashboard但空白,F12 看 Network 显示GET /api/status 500
原因:config.yaml中database.path是相对路径(如./data.db),systemd 启动时工作目录为/,导致 SQLite 尝试在根目录创建data.db,权限不足失败。
解决:
✅ 强制使用绝对路径,如/var/lib/hfish/data.db;
✅ 创建目录并授权:sudo mkdir -p /var/lib/hfish && sudo chown nobody:nogroup /var/lib/hfish;
✅ 删除旧./data.db(如有),再重启服务。
5.2 现象:SSH 服务能连上,但nmap -sV识别为ssh-honey而非伪造的OpenSSH_7.4p1
原因:banner字段值未以SSH-2.0-开头,或包含非法字符(如中文、全角空格),HFish 启动时静默忽略该配置,回退到默认 banner。
解决:
✅ 严格校验 banner 格式:SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u7;
✅ 用cat -A config.yaml | grep banner查看是否有^M或M-bM-^@M-^@(UTF-8 BOM);
✅ 重启服务后,用nc -nv 127.0.0.1 2222实时抓取 banner 确认。
5.3 现象:HTTP 服务返回 404,但curl -I显示Server: hfish,未被伪造
原因:config.yaml中http.server_header字段缩进错误(如少了一个空格),YAML 解析失败,该字段未加载。
解决:
✅ 用在线 YAML 校验器(如 yamllint.com)粘贴配置,检查缩进;
✅http:块下所有子字段(enable,port,server_header)必须对齐,且server_header前空格数 =port前空格数;
✅ 修改后sudo systemctl restart hfish,再curl -I验证。
5.4 现象:攻击者上传的 Webshell 文件(如shell.php)被 HFish 记录,但无法在 Web 界面下载查看
原因:HFish 3.3.1 默认不保存上传文件到磁盘,只记录 metadata(文件名、大小、MD5),web/目录下无实际文件。
解决:
✅ 编辑config.yaml,在http:块下添加:
upload_dir: /var/lib/hfish/uploads # 必须绝对路径✅ 创建目录并授权:sudo mkdir -p /var/lib/hfish/uploads && sudo chown nobody:nogroup /var/lib/hfish/uploads;
✅ 重启服务,上传文件后可在 Web 界面Files标签页下载原始文件。
5.5 现象:journalctl -u hfish日志疯狂刷failed to write to database: database is locked,攻击记录丢失
原因:SQLite 在高并发写入(如 100+ IP 同时扫描 HTTP)时出现锁等待超时,3.3.1 默认busy_timeout为 5000ms,不够用。
解决:
✅ 在config.yaml的database:块下添加:
busy_timeout: 15000 # 单位毫秒,提高到 15 秒✅ 重启服务;
✅ (可选)将 SQLite 迁移到 MySQL(见第 6 章),彻底规避锁问题。
6. 进阶技巧:用 MySQL 替代 SQLite 存储攻击数据,解锁千万级日志检索与 Grafana 可视化
HFish 3.3.1 默认用 SQLite,适合单机轻量部署,但一旦日均攻击事件超 5 万条,SQLite 的写入锁、全文检索慢、无远程访问等问题就会爆发。我曾在一个金融客户内网部署中,遭遇凌晨 3 点集中扫描(200+ IP 每秒请求/phpmyadmin/),SQLite 日志写入延迟飙升至 8 秒,导致api/status接口超时,Web 界面卡死。解决方案是切换为 MySQL——不是为了“高大上”,而是为了解决三个刚需:抗并发写入、支持 LIKE 模糊搜索、对接现有 SIEM 系统。下面是从 SQLite 迁移到 MySQL 的完整路径,含避坑细节。
6.1 准备 MySQL 环境(5.7+ 或 8.0,避坑字符集)
HFish 3.3.1 要求 MySQL 字符集必须为utf8mb4,否则插入中文攻击 payload 会报错。常见坑是 MySQL 8.0 默认collation_server=utf8mb4_0900_ai_ci,但 HFish 连接时未指定 collation,导致握手失败。
-- 登录 MySQL,创建专用数据库与用户(避免用 root) CREATE DATABASE hfish_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'hfish'@'localhost' IDENTIFIED BY 'StrongPass123!'; GRANT ALL PRIVILEGES ON hfish_db.* TO 'hfish'@'localhost'; FLUSH PRIVILEGES;注意:
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci是强制要求,utf8(MySQL 的伪 utf8)不支持 emoji 和部分中文生僻字,会导致INSERT失败。
6.2 修改 config.yaml 切换数据库类型(关键字段一个都不能少)
database: type: mysql host: 127.0.0.1 port: 3306 user: hfish password: StrongPass123! name: hfish_db # 以下三项是 HFish 3.3.1 MySQL 必填,缺一不可 charset: utf8mb4 parseTime: true loc: Local参数说明:
charset: utf8mb4:告诉 Go 驱动用 utf8mb4 编码通信;parseTime: true:让 Go 正确解析 MySQL 的DATETIME字段(否则时间戳全为0001-01-01);loc: Local:时区设为本地,避免日志时间比系统时间快 8 小时(UTC 问题)。
6.3 手动初始化 MySQL 表结构(HFish 不自动建表!)
HFish 3.3.1 不会自动创建 MySQL 表,必须手动执行建表 SQL。官方未提供,但源码中models/mysql.go定义了 schema。以下是精简后的生产可用 SQL(已去注释、合并语句):
USE hfish_db; CREATE TABLE IF NOT EXISTS `attacks` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `ip` varchar(45) NOT NULL DEFAULT '', `country` varchar(100) DEFAULT '', `region` varchar(100) DEFAULT '', `city` varchar(100) DEFAULT '', `time` datetime NOT NULL, `protocol` varchar(20) NOT NULL DEFAULT '', `service` varchar(50) NOT NULL DEFAULT '', `request` text, `response` text, `status_code` int(11) DEFAULT '0', `user_agent` text, `referer` text, `cookie` text, `upload_file` varchar(255) DEFAULT '', `md5` varchar(32) DEFAULT '', PRIMARY KEY (`id`), KEY `idx_ip_time` (`ip`,`time`), KEY `idx_protocol_time` (`protocol`,`time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `sessions` ( `id` varchar(128) NOT NULL, `data` text NOT NULL, `updated` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;执行命令:
mysql -uhfish -pStrongPass123! hfish_db < hfish_mysql_schema.sql # 或直接粘贴上面 SQL 到 mysql 客户端6.4 验证迁移成功与性能提升(用真实攻击流量压测)
切换后,必须验证两点:数据写入不丢和查询速度达标。用 HFish 自带的hfish -t压测模式生成 1000 条模拟攻击:
# 生成 1000 条 HTTP 攻击(模拟扫描) /opt/hfish-3.3.1/hfish -t http -n 1000 -u http://127.0.0.1:8082 # 查 MySQL 是否写入(应返回 1000) mysql -uhfish -pStrongPass123! -e "SELECT COUNT(*) FROM hfish_db.attacks WHERE protocol='http';" # 测试模糊搜索(找含 'phpmyadmin' 的攻击) mysql -uhfish -pStrongPass123! -e "SELECT COUNT(*) FROM hfish_db.attacks WHERE request LIKE '%phpmyadmin%';" # SQLite 耗时 >3s,MySQL 耗时 <0.05s血泪经验:从那以后我每次上线新蜜罐,都强制走一遍 MySQL 迁移流程——哪怕客户说“就临时用一周”。因为 SQLite 的崩溃不是“会不会”,而是“什么时候”。希望帮到你。
本文还有配套的精品资源,点击获取