yuexuan521/honeypot-blocklist
GitHub: yuexuan521/honeypot-blocklist
一个基于HFish蜜罐观测数据自动生成、定期更新的高保真恶意IP情报源,旨在为安全设备提供即用的防御性拦截列表。
Stars: 218 | Forks: 4
[English](README.md) | [简体中文](README_CN.md) | [繁體中文](README_TW.md) | [日本語](README_JP.md) | [Français](README_FR.md) | [Español](README_ES.md)
# HFish 蜜罐威胁情报源
[](https://github.com/yuexuan521/honeypot-blocklist)
[](https://hfish.net/)
[](LICENSE)
[](https://github.com/yuexuan521/honeypot-blocklist/actions/workflows/data_quality.yml)
[](https://github.com/yuexuan521/honeypot-blocklist/releases)
基于**HFish 蜜罐遥测数据**生成的高保真恶意 IP 情报源,专为**防火墙 / WAF / SIEM / IPSet / EDL** 工作流构建。
该项目持续收集公网暴露的 HFish 蜜罐观测到的攻击者 IP,应用自动化过滤和白名单处理,并发布可供安全控制措施和自动化流水线使用的纯净拦截列表。
## 项目存在的原因
面向互联网的蜜罐会观测到大量暴力破解尝试、漏洞扫描和机会性入侵流量。本仓库将这些观测转化为可重复使用的**防御性威胁情报源**,以便运维人员:
- 在网络边界拦截近期攻击者 IP
- 用已知恶意源丰富 SIEM 检测能力
- 在 Linux 防火墙和 Web 基础设施中自动化拒绝规则
- 构建他们自己的基于 HFish 的威胁情报源工作流
## 你将获得什么
- **24 小时滚动恶意 IP 情报源**
- **每 2-4 小时自动刷新**
- **纯文本订阅 URL**
- **Python SDK 和 CLI**
- **Docker 支持**
- **参考集成方案**,适用于 Nginx、Linux 防火墙、Cloudflare 和 Palo Alto
- **MIT 许可的开源工具**
## 威胁情报源 URL
直接在受支持的安全产品和脚本中使用此 URL:
| 格式 | URL | 推荐用途 |
| ------ | ------------------------------------------------------------ | ----------------------------------------------- |
| TXT | `https://yuexuan521.github.io/honeypot-blocklist/ip_list.txt` | 防火墙 EDL、Linux IPSet、WAF、SIEM 情报丰富 |
## 情报源概况
| 项目 | 值 |
| ------------------ | ------------------------------------------------------------ |
| 来源 | HFish 蜜罐 (V3+) |
| 观测范围 | 公网互联网 |
| 包含的活动类型 | SSH/RDP 暴力破解、Web 利用/扫描、未授权服务探测 |
| 时间窗口 | 最近 24 小时 |
| 更新频率 | 每 2-4 小时 |
| 过滤 | 自动清理和基础白名单 |
| 典型排除项 | 已知合法基础设施,如 GoogleBot、BingBot、GitHub 服务以及适用的 Cloudflare 等 |
## 为何信任此情报源
本仓库设计为简单、可审查且易于自动化:
- **开放数据格式**:每行一个 IP,易于审计和使用
- **开放工具**:生成、客户端和 CLI 逻辑均在仓库中
- **有文档说明的风险边界**:存在误报可能性并已明确说明
- **运营导向**:为直接用于实际安全控制措施而构建,不仅仅是作为演示数据集
尽管如此,没有任何自动化威胁情报源是完美的。共享主机、NAT 网关、被入侵的终端以及动态 IP 重新分配都可能产生噪声。在全局应用拦截前,请评估执行策略。
## 快速入门
### ut I should translate where possible. I'll translate "+" to "和" for clarity. So, "Linux IPSet 和 iptables".
```
# 2. "1) Download the latest feed": Translate "Download the latest feed". "Feed" in this context might be technical, like data feed. Keep it in English if it's a term, but the instruction says to keep technical jargon in English. "Feed" could be a professional term in data feeds, so perhaps keep it in English. However, the example has "API Reference" -> "API 参考", so "Reference" is translated. "Feed" might be translated to "数据源" or kept as "feed". To be safe, I'll translate "download the latest feed" to "下载最新的 feed". But "feed" is a noun, so it might be kept as is. In the context of IP feeds, it's common to use "feed" in English. I'll keep "feed" in English. So, "下载最新的 feed".
wget -O /tmp/blacklist.txt https://yuexuan521.github.io/honeypot-blocklist/ip_list.txt
# 3. "2) Create an IP set": "IP set" – "IP" is technical, keep in English. "Set" might be translated, but "IP set" is a technical term in iptables, so keep it as "IP set" or translate? The instruction says to keep technical jargon in English, so "IP set" should be kept as "IP set". But in the heading "Create an IP set", "Create" is translated, so "创建 IP set".
ipset create honeypot_blacklist hash:ip hashsize 4096
# 4. "3) Import IPs": "IPs" – keep "IP" in English, plural might be "IPs". Translate "Import" to "导入". So, "导入 IPs".
while read ip; do
ipset add honeypot_blacklist "$ip"
done < /tmp/blacklist.txt
# 5. "4) Drop matching traffic": "Drop" in networking context means to discard, so translate to "丢弃". "Matching traffic" – "matching" is "匹配的", "traffic" is "流量". So, "丢弃匹配的流量".
iptables -I INPUT -m set --match-set honeypot_blacklist src -j DROP
```
## 开发者用法
### 6. "Python SDK": "Python" is a proper noun, keep in English. "SDK" is technical, keep in English. So, "Python SDK" might be kept as is, but since it's a heading, translate to Chinese? The example has "Kubernetes Setup" -> "Kubernetes 设置", so "Setup" is translated. Similarly, here "SDK" might be considered a term, but it's an acronym. I think "Python SDK" should be kept as "Python SDK" in Chinese context, but the instruction says to translate to Simplified Chinese. Perhaps translate it to "Python SDK" but since it's a name, keep it in English. I'll follow the example: for "API Reference", it's translated to "API 参考", so "API" stays in English, "Reference" translated. Here, "SDK" might be kept as "SDK", but "Python" is already English. So, "Python SDK" could be "Python SDK" or translate "SDK" to "软件开发工具包", but that might be too long. In technical contexts, "SDK" is often kept in English. I'll keep it as "Python SDK".
```
from tools.client import ThreatFeedClient
feed = ThreatFeedClient()
feed.fetch_data()
if feed.is_malicious("1.2.3.4"):
print("Block this IP")
else:
print("IP not currently listed")
```
### 7. "CLI": Command Line Interface, technical term, keep in English. So, "CLI".
```
# 8. "Download the latest feed": Same as line 2, so "下载最新的 feed".
python3 tools/cli.py --update
# 9. "Check a single IP": "Check" translate to "检查" or "检测". "Single IP" – "single" is "单个", "IP" keep in English. So, "检查单个 IP" or "检测单个 IP".
python3 tools/cli.py --check 1.2.3.4
# 10. "Export as JSON": "Export" translate to "导出", "as" as "为", "JSON" keep in English. So, "导出为 JSON".
python3 tools/cli.py --export json
# 11. "Export as TXT": Similarly, "导出为 TXT". "TXT" might be kept as "TXT" or translated, but it's a file format, so keep in English.
python3 tools/cli.py --export txt
```
### 12. "Docker": Proper noun, keep in English. So, "Docker".
```
docker build -t hfish-feed .
docker run --rm hfish-feed --check 1.1.1.1
```
## 集成方案
`integrations/` 目录包含特定平台的示例:
| 平台 | 类型 | 用途 |
| -------------- | ------------- | ----------------------------------------------- |
| Nginx | 脚本 | 为 Web 服务器生成拒绝规则 |
| Linux 防火墙 | 脚本 | 使用 `ipset` + `iptables` 进行高效拦截 |
| Cloudflare | Worker | 边缘侧拦截逻辑 |
| Palo Alto | 文档 | 外部动态列表 (EDL) 集成 |
## 从 HFish 构建你自己的情报源
如果你运行自己的 HFish 部署,可以复用此项目生成私有或组织特定的拦截列表。
相关工具:
- `tools/generate_feed.py`
- `tools/update_feed.sh`
参考文章:
- **实用指南:基于 HFish + Python + GitHub Pages 构建自动化威胁情报源**
## 仓库结构
```
.
├── .github/workflows/ # data quality / automation
├── integrations/ # platform-specific integration examples
├── tools/ # generator, client SDK, CLI, update scripts
├── tests/ # tests
├── ip_list.txt # published threat feed
└── README*.md # multilingual documentation
```
## 项目成熟度
本仓库作为实用安全工具维护,而非仅限研究的概念验证。
当前项目特征:
- 公开仓库
- 开放许可证
- 文档化的 feed 语义
- CLI 和 SDK 访问模式
- 集成示例
- 自动化数据质量工作流徽章
对于生产采用,用户仍应评估:
- 执行范围
- 误报处理
- 预期刷新频率
- 回滚策略
- 本地白名单需求
## 报告误报
误报是可能发生的。
如果你认为某个 IP 被错误列入,请开一个 Issue 并包含:
- 受影响的 IP
- 它应该被移除的原因
- 相关支持证据
- 如果知道,大概的时间戳
这有助于随时间提高情报源质量。
## 安全
本仓库发布拦截列表和辅助工具。它**不是**防护保证,也不应被视为完整的威胁情报解决方案。
推荐用法:
- 作为多种控制措施中的一个信号应用
- 与本地白名单结合使用
- 在强制执行前先以监控模式测试
- 审查对共享或动态 IP 范围的影响
对于与仓库代码或自动化相关的漏洞报告,除非你希望使用私下披露途径,否则请使用 GitHub Issues。
## 贡献
欢迎贡献。
好的贡献领域包括:
- 提升 feed 质量
- 减少误报
- 改进解析器和客户端
- 新的集成方案
- 文档和翻译修正
- 测试和 CI 加固
对于较大的更改,请先开一个 Issue,以便在实现前讨论设计和范围。
## 路线图
计划或理想的未来改进:
- 更丰富的元数据 feed 格式
- 更严格的误报抑制
- 额外的防火墙 / SIEM 集成
- 更好的测试覆盖
- Feed 统计和透明度报告
## 免责声明
1. **准确性**
数据是自动收集和处理的。我们旨在减少噪声,但被入侵的主机、共享基础设施或动态 IP 仍可能出现。
2. **使用风险自负**
你有责任在将此情报源用于生产前评估其适用性。
3. **无责任**
维护者不对因基于此情报源的执行决策所导致的服务中断、连接丢失或数据丢失负责。
## 许可证
基于 **MIT 许可证** 发布。
由 [HFish](https://hfish.net/) 和 Python 自动化提供支持。
标签:Cloudflare, Cutter, Docker, HTTP攻击, IP黑名单, MITRE ATT&CK, Nginx, Palo Alto, Python, SSH攻击, WAF, 二进制发布, 威胁情报, 威胁情报源, 安全威胁, 安全防御评估, 开发者工具, 开源工具, 恶意IP列表, 攻击源分析, 数据库攻击, 数据质量, 无后门, 白名单, 结构化查询, 网络安全, 网络调试, 自动化, 自动化安全, 蜜罐, 蜜罐技术, 证书利用, 请求拦截, 逆向工具, 防火墙集成, 隐私保护