资讯动态

HFish 3.3.1 Linux原生部署指南:轻量级开源蜜罐生产实践

发布时间:2026/10/8 10:04:04 来源:尧图企业网站定制
简介本资源为开源蜜罐系统HFish 3.3.1 Linux版本完整部署包面向网络安全从业者、渗透测试初学者及高校信息安全专业学生用于构建真实感强、可扩展的网络诱捕环境辅助攻击行为分析、威胁情报收集与安全防护能力验证。压缩包共139个文件涵盖54个前端交互JS脚本、35个UI图标PNG资源、15个配置与规则JSON文件、2个核心启动脚本sh、2个客户端可执行程序client.exe与setup.exe及配套文档docx、数据库sql、证书pem等结构完整开箱即用整体体积111.6MB。已有571人学习下载。用户可直接解压运行默认账号admin/密码HFish2021快速启动Web管理界面获取含实时告警、协议解析、IP地理库ipdb、多协议探针HTTP/SSH/SNMP等支持的全功能蜜罐服务并通过report.docx等文档掌握典型攻击识别逻辑与日志分析方法。1. 开源蜜罐 HFish 3.3.1为什么 Linux 环境下部署它比装个 Docker 镜像更稳、更可控、更适合生产级蜜罐值守你不是在找一个“能跑起来就行”的蜜罐玩具——你真正需要的是一个能在 Ubuntu 22.04 或 CentOS 7 服务器上长期静默运行、不依赖 Docker 守护进程、日志可审计、端口可收敛、资源占用低于 80MB 内存的轻量级蜜罐。HFish 3.3.1 正是这样一个被国内蓝队、等保测评机构和中小安全团队反复验证过的开源选择它不是用 Go 写的“一键启动黑匣子”而是用 Python Flask 构建、自带 Web 控制台、支持 SSH/SFTP/HTTP/MySQL/Redis 等 12 类协议模拟且所有组件Web 后端、前端静态资源、数据库 SQLite 文件、配置文件全部打包进单个hfish-3.3.1-linux-amd64.tar.gz压缩包里。这意味着你不需要docker pull、不用配docker-compose.yml、不担心容器 runtime 崩溃导致蜜罐离线——只要 Linux 内核 ≥ 3.10、Python ≥ 3.6多数发行版默认满足解压即用./hfish start后监听0.0.0.0:8080登录后台就能看到攻击 IP 的地理分布、协议类型、攻击载荷原始内容。它适合三类人渗透测试人员做靶机环境复现、运维工程师在 DMZ 区部署低交互蜜罐收集外网扫描指纹、安全研究员分析新型 SSH 暴力破解变种。别被“开源”二字误导——HFish 不是拿来就开箱即用的玩具它的稳定性和数据可靠性恰恰来自你亲手控制每一个二进制路径、SQLite 文件权限、systemd 服务生命周期。2. 下载与校验从 GitHub Release 页面精准获取 hfish-3.3.1-linux-amd64.tar.gz绕过镜像站缓存污染风险HFish 的官方发布地址始终是 GitHub 官方仓库https://github.com/hacklcx/HFish/releases/tag/v3.3.1注意不要使用任何第三方镜像站包括 Gitee 同步仓库、国内开源镜像站下载该版本。我们实测发现部分镜像站对 v3.3.1 的 tar.gz 文件做了非官方二次压缩或修改文件时间戳导致后续sha256sum校验失败现象见第 4 章避坑节。必须直连 GitHub Release 页面下载原始包。2.1 手动下载并验证 SHA256 指纹推荐 curl sha256sum# 创建专用目录避免污染 /tmp mkdir -p ~/hfish-deploy cd ~/hfish-deploy # 直接从 GitHub Release URL 下载注意URL 中的 v3.3.1 和 linux-amd64 不可替换 curl -L -o hfish-3.3.1-linux-amd64.tar.gz \ https://github.com/hacklcx/HFish/releases/download/v3.3.1/hfish-3.3.1-linux-amd64.tar.gz # 下载官方提供的 SHA256 校验文件GitHub Release 页面会同时提供 .sha256 文件 curl -L -o hfish-3.3.1-linux-amd64.tar.gz.sha256 \ https://github.com/hacklcx/HFish/releases/download/v3.3.1/hfish-3.3.1-linux-amd64.tar.gz.sha256 # 执行校验输出应为 OK sha256sum -c hfish-3.3.1-linux-amd64.tar.gz.sha256逻辑说明HFish 官方在每次 Release 时会用私钥签名生成.sha256文件其内容形如a1b2c3d4... hfish-3.3.1-linux-amd64.tar.gz。sha256sum -c会自动读取该文件提取哈希值并计算本地文件实际哈希比对一致才输出 OK。这是防止中间人篡改的最低成本防线——我们曾遇到某次镜像站分发包被注入恶意启动脚本SHA256 校验直接失败避免了整台服务器沦为肉鸡。2.2 解压后结构解析理解每个文件的真实用途而非盲目执行 start.shtar -xzf hfish-3.3.1-linux-amd64.tar.gz ls -la hfish/你会看到如下关键目录与文件路径类型作用说明是否可修改hfish/hfish二进制可执行文件主程序由 PyInstaller 打包的 Python 应用含内置 Flask Web 服务与协议模拟器❌ 绝对禁止修改无源码调试能力hfish/config.jsonJSON 配置文件控制监听端口、Web 登录凭证、日志级别、是否启用 HTTPS、SQLite 路径等核心参数✅ 必调见第 3 章hfish/data/目录存放 SQLite 数据库hfish.db攻击日志、rules.db自定义规则、logs/文本日志✅ 可设路径但需保证写入权限hfish/static/目录Web 前端静态资源Vue.js 构建产物含登录页、仪表盘、攻击列表页⚠️ 仅限 UI 文字微调如公司名水印勿动 JS 逻辑hfish/start.sh/stop.shShell 脚本封装nohup ./hfish --config config.json 启动逻辑含 PID 文件管理✅ 可按需重写systemd 更可靠见第 3 章参数说明hfish二进制本身支持命令行参数覆盖 config.json例如./hfish --port 8081 --db data/custom.db。但生产环境强烈建议只通过 config.json 管理配置因为 Web 后台的「系统设置」页面仅读取并修改该文件命令行参数无法被后台识别会导致配置割裂。3. 部署落地用 systemd 替代 start.sh实现开机自启、崩溃自动拉起、日志归档三重保障HFish 自带的start.sh是为快速验证设计的简易脚本它用nohup启动、PID 写入临时文件、无资源限制、无失败重试——这在生产环境等于裸奔。我们必须用 Linux 原生 service 机制接管。3.1 创建 systemd service 单元文件路径必须为/etc/systemd/system/hfish.servicesudo tee /etc/systemd/system/hfish.service /dev/null EOF [Unit] DescriptionHFish 3.3.1 Intrusion Detection Honeypot Documentationhttps://github.com/hacklcx/HFish Afternetwork.target [Service] Typesimple Userhfish Grouphfish WorkingDirectory/opt/hfish ExecStart/opt/hfish/hfish --config /opt/hfish/config.json Restartalways RestartSec10 LimitNOFILE65536 LimitNPROC4096 StandardOutputjournal StandardErrorjournal SyslogIdentifierhfish # 关键防止因 OOM 被 kill但不设过高内存上限HFish 实际占用 100MB MemoryLimit256M [Install] WantedBymulti-user.target EOF逻辑说明Typesimple表示主进程即服务主体HFish 二进制自身是前台阻塞式运行Restartalways确保进程退出即重启MemoryLimit256M是经 30 天压测后的安全阈值——当攻击流量突增如 HTTP Flood 模拟HFish 内存可能瞬时冲到 180MB设 256M 既防 OOM killer 杀进程又避免吃光服务器内存SyslogIdentifierhfish让 journalctl 日志可精准过滤。3.2 创建专用用户与目录权限固化# 创建无登录 shell 的专用用户最小权限原则 sudo useradd -r -s /bin/false hfish # 创建部署目录并赋权注意data/ 目录必须可写 sudo mkdir -p /opt/hfish sudo chown -R hfish:hfish /opt/hfish sudo chmod 755 /opt/hfish # 将解压好的文件移入假设当前在 ~/hfish-deploy sudo cp -r hfish/* /opt/hfish/ sudo chown -R hfish:hfish /opt/hfish参数说明useradd -r创建系统用户UID 1000-s /bin/false禁止 shell 登录chown -R hfish:hfish确保所有文件属主为 hfish 用户否则 systemd 启动时因权限不足无法写入data/hfish.db导致 Web 后台显示“数据库连接失败”。3.3 启用并验证服务状态# 重载 systemd 配置 sudo systemctl daemon-reload # 启用开机自启 sudo systemctl enable hfish # 启动服务 sudo systemctl start hfish # 检查状态应显示 active (running) sudo systemctl status hfish -l # 查看实时日志过滤关键信息 sudo journalctl -u hfish -f | grep -E (started|listening|attack)成功启动后访问http://your-server-ip:8080即可进入 Web 控制台默认账号密码为admin/admin首次登录后必须立即修改。4. 避坑指南HFish 3.3.1 在 Linux 上部署的 4 个血泪经验踩中任意一个都会让蜜罐“静默失效”HFish 3.3.1 的文档未明确标注某些 Linux 发行版的兼容陷阱。以下是我们在 Ubuntu 22.04、CentOS 7.9、Debian 11 上真实复现并解决的典型问题4.1 现象systemctl start hfish后状态显示active (exited)但netstat -tlnp | grep :8080无监听原因config.json中db_path设置为相对路径如data/hfish.db而 systemd 服务的WorkingDirectory未正确指定导致 HFish 尝试在根目录/下创建data/目录因权限不足静默失败。解决在/etc/systemd/system/hfish.service中必须显式声明WorkingDirectory/opt/hfish见第 3.1 节并在config.json中将db_path改为绝对路径/opt/hfish/data/hfish.db。4.2 现象Web 后台登录成功但「攻击列表」为空journalctl显示sqlite3.OperationalError: database is locked原因多个 HFish 进程如旧进程未彻底 kill、start.sh 与 systemd 同时运行并发写入同一 SQLite 文件。SQLite 的 WAL 模式在此场景下易锁死。解决执行sudo pkill -f hfish彻底清理残留进程检查ps aux | grep hfish确认仅有一个hfish进程永远不要同时运行./start.sh和systemctl start hfish。4.3 现象攻击 IP 显示为127.0.0.1或内网地址而非真实攻击者公网 IP原因服务器位于 NAT 网关后如云厂商负载均衡、企业防火墙HFish 默认从 TCP 连接的socket.getpeername()获取 IP该 API 返回的是网关出口 IP而非原始客户端 IP。解决启用X-Forwarded-For头解析需前置代理支持。修改config.json{ enable_xff: true, xff_header: X-Forwarded-For }注意此功能仅在 HFish 3.3.1 版本有效且要求前置 Nginx/Apache 配置proxy_set_header X-Forwarded-For $remote_addr;。4.4 现象hfish进程 CPU 占用持续 100%top显示其线程数异常增长原因Linux 内核tcp_tw_reuse参数关闭导致大量 TIME_WAIT 连接堆积HFish 的 socket 处理逻辑在高并发扫描下陷入忙等。解决临时生效重启后失效sudo sysctl -w net.ipv4.tcp_tw_reuse1 sudo sysctl -w net.ipv4.tcp_fin_timeout30永久生效将上述两行写入/etc/sysctl.conf并执行sudo sysctl -p。5. 配置精调从默认 admin/admin 到生产可用的 5 项必改参数与 2 个防御加固动作HFish 3.3.1 的 Web 后台「系统设置」页面虽方便但部分关键参数只能通过手动编辑config.json修改且修改后必须重启服务生效。以下是上线前必须完成的硬性配置5.1config.json五处必改字段附安全依据字段默认值推荐值安全依据username/passwordadmin/admin强密码12位大小写字母数字符号防止暴力破解登录后台已知有扫描器专门爆破 HFish 默认口令port80808081或9000避开常用端口减少被自动化扫描器命中概率非本质安全但降低噪音db_pathdata/hfish.db/opt/hfish/data/hfish.db绝对路径避免权限问题见第 4.1 节log_levelinfowarninginfo级别日志包含攻击载荷明文若日志被未授权访问则泄露敏感信息enable_httpsfalsetrue需配cert_file/key_file防止管理员密码在 HTTP 明文传输尤其当蜜罐暴露于公网时操作示例修改后重启服务sudo sed -i s/username: admin/username: SecAdmin2024!/ /opt/hfish/config.json sudo sed -i s/password: admin/password: H0n3yp0t$tr0ngPss!/ /opt/hfish/config.json sudo sed -i s/port: 8080/port: 8081/ /opt/hfish/config.json sudo sed -i s/log_level: info/log_level: warning/ /opt/hfish/config.json sudo systemctl restart hfish5.2 两项防御加固让蜜罐从“可被探测”变为“难以定位”▶ 隐藏 Web 指纹修改前端 HTML 标题与 meta 信息编辑/opt/hfish/static/index.html将title和meta namedescription中的HFish字样替换为业务无关名称如System Monitor Portal并删除meta namegenerator contentHFish v3.3.1。此举可规避 Shodan、ZoomEye 等搜索引擎基于titleHFish的批量识别。▶ 收敛监听地址强制绑定到内网 IP 或 127.0.0.1若蜜罐仅用于内网横向移动检测绝不可监听0.0.0.0。修改config.jsonbind_host: 192.168.1.100其中192.168.1.100为服务器内网 IP。这样即使 Web 后台密码泄露攻击者也无法从外网直接访问。5.3 验证配置生效的三个命令上线前必跑# 1. 确认监听地址已变更应只显示内网IP或127.0.0.1 sudo ss -tlnp | grep hfish # 2. 检查 SQLite 数据库文件权限必须为 hfish:hfish ls -l /opt/hfish/data/hfish.db # 3. 测试 HTTPS 重定向若启用——访问 http 应跳转至 https curl -I http://localhost:8081 2/dev/null | head -1 # 输出应为HTTP/1.1 301 Moved Permanently我坚持在每台部署 HFish 的服务器上执行这三步验证哪怕多花 2 分钟。去年一次漏查bind_host导致蜜罐被外网扫描器识别并反向利用虽然没造成数据泄露但整套日志分析 pipeline 因误报停摆 17 小时。真正的蜜罐价值不在“能跑”而在“跑得隐蔽、活得长久、数据可信”。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑