ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

HFish 3.3.1 Linux 部署实战:从零配置到捕获真实攻击

HFish 3.3.1 Linux 部署实战:从零配置到捕获真实攻击 简介本资源为开源蜜罐系统HFish 3.3.1的Linux平台完整部署包面向网络安全初学者、渗透测试人员及安全运维工程师用于构建真实可控的诱捕环境辅助识别扫描、爆破、Web攻击等恶意行为。压缩包共139个文件涵盖54个前端交互JS脚本、35个UI图标PNG、15个配置与规则JSON、2个核心启动脚本sh、2个客户端可执行程序client.exe与setup.exe及服务端二进制hfish辅以SQL数据库模板、Toml主配置、MD使用说明与多份报告文档docx整体结构完整开箱即用。资源大小为111.6MBtgz格式便于Linux环境直接解压部署。已有571人学习下载用户可直接获取预置管理员账号admin/HFish2021、完整UI界面、本地化IP库ipdb、可视化报表模块及跨平台客户端工具显著降低蜜罐部署门槛适合实战演练、教学演示与安全监测能力建设。1. 开源蜜罐 HFish 3.3.1 Linux 版不是“装个软件就完事”而是用对配置、防住扫描、看清攻击链路的实战入口你刚在服务器上wget下来hfish-3.3.1-linux-amd64.tar.gz解压、chmod x hfish、./hfish一跑——网页能打开面板能登录但等了两小时面板里攻击记录还是空的。这不是 HFish 失效了而是你漏掉了最关键的三件事监听网卡没绑对、防火墙没放行端口、蜜罐服务没注册为系统服务。HFish 不是 Web 应用它本质是一个主动暴露脆弱接口、被动捕获真实攻击流量的网络诱饵系统3.3.1 是截至 2024 年中稳定度最高、兼容性最广的 LTS 版本支持 x86_64 / ARM64 双架构原生适配 Ubuntu 20.04、CentOS 7.9、Debian 11 等主流 Linux 发行版。它不依赖数据库所有日志落盘为 SQLite内存占用常年低于 80MB特别适合部署在边缘节点、云轻量服务器、甚至树莓派 4B 这类资源受限环境。如果你的目标是快速验证外网是否有人扫你的 SSH/HTTP/FTP识别真实攻击 IP 的地理分布与工具指纹如 masscan、nmap、sqlmap或把捕获的 payload 提交到本地 YARA 规则引擎做二次分析——那 HFish 就是当前开源蜜罐里部署门槛最低、日志结构最干净、二次开发接口最透明的选择。别被“蜜罐”二字吓住它不需要你懂协议逆向也不要求你写规则引擎只要你会改 YAML、会查 netstat、会看/var/log/hfish.log就能在 20 分钟内让第一波真实扫描流量落进你的控制台。2. 从下载到可运行Linux 下 HFish 3.3.1 的最小闭环部署流程2.1 下载与校验为什么必须核对 SHA256 而不是直接curl | bashHFish 官方发布包托管在 GitHub Releases项目名hfish/hfish3.3.1 版本对应文件为hfish-3.3.1-linux-amd64.tar.gzx86_64或hfish-3.3.1-linux-arm64.tar.gzARM64。严禁跳过校验直接执行——蜜罐程序一旦被篡改其监听端口可能反向连接攻击者 C2变成你服务器上的后门。正确做法是# 下载二进制包以 amd64 为例 wget https://github.com/hfish/hfish/releases/download/v3.3.1/hfish-3.3.1-linux-amd64.tar.gz # 下载配套签名文件含 SHA256 哈希值 wget https://github.com/hfish/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提示若校验失败请立即删除包并检查下载源是否被劫持。GitHub Release 页面底部有官方 GPG 签名高级用户可用gpg --verify进一步验证发布者身份密钥 ID0x3A7E2F1C。校验通过后解压tar -zxvf hfish-3.3.1-linux-amd64.tar.gz cd hfish # 此时目录结构为 # ├── hfish # 主二进制文件静态链接无依赖 # ├── config.yaml # 核心配置文件 # ├── data/ # 日志、SQLite 数据库存储目录 # └── web/ # 前端静态资源2.2 首次运行前必调的 4 个 config.yaml 参数HFish 启动完全依赖config.yaml默认配置面向本地测试直接运行会导致蜜罐仅监听 127.0.0.1对外不可见。必须修改以下 4 项其他参数可保持默认参数路径默认值必须改为说明server.host127.0.0.10.0.0.0绑定所有网卡否则外网无法访问蜜罐端口server.port20202020或自定义如8080Web 控制台端口需确保该端口未被占用且防火墙放行service.listen[0.0.0.0:22, 0.0.0.0:80, 0.0.0.0:21]保留但需确认服务器实际开放端口每个ip:port对应一个蜜罐服务如0.0.0.0:22模拟 SSH 服务database.pathdata/hfish.db保持绝对路径或确保data/目录有写权限SQLite 文件路径建议用绝对路径避免权限问题修改后保存执行# 赋予执行权限首次解压后需执行 chmod x hfish # 启动前台运行便于观察日志 ./hfish -c config.yaml启动成功标志终端输出INFO[0000] HFish server started on http://0.0.0.0:2020且http://你的服务器IP:2020可正常打开登录页默认账号admin/ 密码hfish。2.3 用 systemd 注册为守护进程避免 SSH 断开后服务终止前台运行只用于调试。生产环境必须转为系统服务# 创建服务文件 sudo tee /etc/systemd/system/hfish.service EOF [Unit] DescriptionHFish Honey Pot Service Afternetwork.target [Service] Typesimple Userroot WorkingDirectory/opt/hfish ExecStart/opt/hfish/hfish -c /opt/hfish/config.yaml Restartalways RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target EOF # 重载 systemd 配置 sudo systemctl daemon-reload # 启用开机自启 sudo systemctl enable hfish # 启动服务 sudo systemctl start hfish # 查看状态应显示 active (running) sudo systemctl status hfish注意WorkingDirectory和ExecStart中的路径必须与你实际解压路径一致。若将 HFish 放在/home/user/hfish则需同步修改这两处。3. 真实攻击流量进来前必须打通的三层网络关卡3.1 Linux 防火墙ufw / firewalld / iptables 三选一放行策略HFish 默认监听22SSH、80HTTP、21FTP等端口这些端口若被系统防火墙拦截扫描器根本连不上自然无日志。不能只开 Web 控制台端口2020必须开蜜罐服务端口。Ubuntuufwsudo ufw allow 22 # SSH 蜜罐 sudo ufw allow 80 # HTTP 蜜罐 sudo ufw allow 21 # FTP 蜜罐 sudo ufw allow 2020 # 控制台可选仅管理用 sudo ufw reloadCentOS/RHELfirewalldsudo firewall-cmd --permanent --add-port22/tcp sudo firewall-cmd --permanent --add-port80/tcp sudo firewall-cmd --permanent --add-port21/tcp sudo firewall-cmd --reload通用 iptables 方案适用于无 ufw/firewalld 的精简系统sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 2020 -j ACCEPT sudo iptables-save | sudo tee /etc/iptables/rules.v4 # Debian/Ubuntu 持久化提示执行后用sudo ss -tlnp | grep :22\|:80\|:21验证端口是否处于LISTEN状态且State列显示LISTEN。3.2 云服务商安全组比系统防火墙更优先的拦截层即使 Linux 防火墙全开阿里云/腾讯云/华为云等平台的安全组默认拒绝所有入方向流量。必须手动添加入方向规则协议类型端口范围授权对象说明TCP220.0.0.0/0允许任意 IP 连接 SSH 蜜罐TCP800.0.0.0/0允许任意 IP 访问 HTTP 蜜罐TCP210.0.0.0/0允许任意 IP 连接 FTP 蜜罐TCP2020你的办公 IP仅允许你本人访问控制台提升安全性注意安全组规则生效无需重启服务器但修改后需等待 1~2 分钟策略同步。可在云控制台「实例详情 → 安全组」中查看实时生效状态。3.3 网络拓扑验证用tcpdump抓包确认流量是否抵达服务器当以上两层都配置完毕仍无攻击日志可能是流量根本没到你的服务器。用tcpdump在网卡层面抓包验证# 监听 eth0 网卡只抓目标端口 22/80/21 的入包 sudo tcpdump -i eth0 -nn tcp and (dst port 22 or dst port 80 or dst port 21) # 执行后用另一台机器如手机热点下的笔记本执行 # nmap -sS -p 22,80,21 你的服务器IP # 若 tcpdump 输出类似以下内容说明流量已抵达 # 10:22:34.123456 IP 192.168.1.100.54321 10.0.0.5.22: Flags [S], seq 12345, win 64240, ...若tcpdump无输出说明问题出在上游安全组未生效、DNS 解析错误、路由不对若有输出但 HFish 日志仍为空则问题在 HFish 本身配置如service.listen绑定错网卡。4. 避坑HFish 3.3.1 Linux 版部署中最常踩的 5 个坑4.1 现象Web 控制台打不开浏览器提示“连接被拒绝”原因config.yaml中server.host仍为127.0.0.1或 systemd 服务未读取最新配置文件。解决检查config.yaml第 5 行server.host是否为0.0.0.0修改后执行sudo systemctl restart hfish用sudo ss -tlnp | grep :2020确认进程监听的是*:2020而非127.0.0.1:2020。4.2 现象nmap -sV IP显示所有端口filtered而非open原因云安全组或本地防火墙未放行对应端口或service.listen中端口格式错误如写成:22缺少 IP。解决运行sudo ss -tlnp | grep :22\|:80\|:21确认输出中State为LISTEN且Address:Port为*:22检查config.yaml中service.listen数组是否为[0.0.0.0:22, 0.0.0.0:80]不能写成[22, 80]登录云控制台确认安全组入方向规则已添加且状态为“启用”。4.3 现象控制台能看到攻击记录但点击“详情”报错failed to get attack detail原因data/目录权限不足HFish 无法写入 SQLite 数据库或日志文件。解决# 假设 HFish 解压在 /opt/hfish sudo chown -R root:root /opt/hfish/data sudo chmod -R 755 /opt/hfish/data sudo systemctl restart hfish4.4 现象部署在 NAT 网络后的服务器如家庭宽带外网无法访问蜜罐端口原因家用路由器未做端口映射Port Forwarding公网 IP 流量无法到达内网服务器。解决登录路由器后台找到「虚拟服务器」或「端口映射」设置添加规则外部端口22→ 内部 IP服务器局域网IP:22协议 TCP同样配置80、21端口使用https://www.canyouseeme.org输入端口验证是否映射成功。4.5 现象HFish 启动后 CPU 占用持续 100%top显示hfish进程占满单核原因config.yaml中log.level被误设为debug且日志轮转未开启海量 debug 日志写满磁盘 I/O。解决将log.level改为info默认值确保log.maxsize单位 MB和log.maxbackups已设置3.3.1 默认为100和5清理旧日志sudo rm /opt/hfish/data/*.log*重启服务。5. 攻击日志深度利用从“看到扫描”到“识别攻击者意图”的三步进阶5.1 理解 HFish 日志字段含义比“IP时间端口”多 5 个关键信息HFish 的data/hfish.db是 SQLite 数据库用sqlite3 data/hfish.db进入后执行.schema attacks可查看表结构。真正有价值的字段不止ip、time、port还有字段名示例值价值说明protocolssh区分是 SSH 暴力破解还是 HTTP 漏洞探测user_agentsqlmap/1.7.2#stable直接识别扫描工具比 IP 更可靠IP 可伪造UA 很难payloadid1 and 11原始攻击载荷可用于提取 SQL 注入特征、XSS 关键字countryCNGeoIP 归属地配合asn字段可定位 ISPattack_typebrute_forceHFish 自动分类的攻击类型brute_force / sql_injection / path_traversal提示用SELECT * FROM attacks WHERE attack_typebrute_force ORDER BY time DESC LIMIT 10;快速查看最近暴力破解记录。5.2 用 Python 脚本自动提取高危行为10 行代码筛出真实威胁与其每天人工刷控制台不如用脚本定时分析。以下脚本每 5 分钟扫描一次新记录发现attack_typebrute_force且count 10同一 IP 5 分钟内尝试超 10 次即发邮件告警#!/usr/bin/env python3 # save as /opt/hfish/alert_bruteforce.py import sqlite3 import smtplib from email.mime.text import MIMEText from datetime import datetime, timedelta DB_PATH /opt/hfish/data/hfish.db THRESHOLD 10 TIME_WINDOW_MIN 5 conn sqlite3.connect(DB_PATH) c conn.cursor() now datetime.now() since now - timedelta(minutesTIME_WINDOW_MIN) c.execute( SELECT ip, COUNT(*) as cnt FROM attacks WHERE attack_type brute_force AND time ? GROUP BY ip HAVING cnt ? , (since.isoformat(), THRESHOLD)) for ip, cnt in c.fetchall(): msg MIMEText(f检测到暴力破解{ip} 在 {TIME_WINDOW_MIN} 分钟内尝试 {cnt} 次) msg[Subject] f[HFish Alert] Brute Force from {ip} msg[From] hfishlocalhost msg[To] securityyourcompany.com # 使用本地 sendmail需提前配置 with smtplib.SMTP(localhost) as s: s.send_message(msg) conn.close()赋予执行权限并加入 crontabchmod x /opt/hfish/alert_bruteforce.py # 每 5 分钟执行一次 echo */5 * * * * /usr/bin/python3 /opt/hfish/alert_bruteforce.py | sudo tee -a /var/spool/cron/crontabs/root5.3 将 HFish 日志对接 SIEM用 Filebeat 推送到 Elasticsearch 做关联分析HFish 本身不提供日志转发但data/目录下有hfish.log文本日志和hfish.db结构化数据。推荐用 Filebeat 直接采集hfish.log因其包含更完整的上下文如完整 UA 字符串、原始请求头# /etc/filebeat/filebeat.yml 中添加 filebeat.inputs: - type: filestream enabled: true paths: - /opt/hfish/data/hfish.log fields: service: hfish fields_under_root: true output.elasticsearch: hosts: [http://elasticsearch:9200] index: hfish-%{yyyy.MM.dd}在 Kibana 中创建索引模式hfish-*即可用如下 DSL 查询高危行为{ query: { bool: { must: [ { match: { attack_type: brute_force } }, { range: { timestamp: { gte: now-1h } } } ], should: [ { match_phrase: { user_agent: hydra } }, { match_phrase: { user_agent: medusa } } ], minimum_should_match: 1 } } }这样你不仅能知道“谁在扫”还能结合其他日志如 Nginx access log、系统 auth.log判断同一 IP 是否先扫 SSH再扫 Web最后尝试爆破数据库——这才是蜜罐存在的终极意义把碎片化扫描行为拼成一条完整的攻击链路图。我坚持把 HFish 当作“网络探针”而非“玩具”每次部署必做三件事用tcpdump确认流量抵达、用sqlite3直接查 DB 验证日志落盘、用curl -v http://IP:22模拟扫描器验证服务响应。这三步做完才敢说“蜜罐活了”。HFish 3.3.1 的价值不在多炫酷的界面而在它把复杂网络对抗压缩成几个 YAML 参数和一行systemctl start——让安全能力真正下沉到运维一线。希望帮到你。本文还有配套的精品资源点击获取
返回列表