ziyadnz/threat-intel-ip-feeds

GitHub: ziyadnz/threat-intel-ip-feeds

自动聚合20多个威胁情报源的恶意IP黑名单,每小时通过GitHub Actions更新,输出可直接导入防火墙和SIEM的纯净IP列表。

Stars: 3 | Forks: 0

# 威胁情报 IP 黑名单聚合器 ![Build Status](https://img.shields.io/github/actions/workflow/status/ziyadnz/threat-intel-ip-feeds/update.yml) ![License](https://img.shields.io/github/license/ziyadnz/threat-intel-ip-feeds) ![Last Commit](https://img.shields.io/github/last-commit/ziyadnz/threat-intel-ip-feeds) ![Stars](https://img.shields.io/github/stars/ziyadnz/threat-intel-ip-feeds) 企业级威胁情报收集器,聚合来自全球 **21 个免费来源** 的恶意 IP 地址,生成去重后的 IPv4 和 IPv6 黑名单。 ## 功能 - **21 个来源** - Spamhaus, abuse.ch, DShield, Blocklist.de, CINS Army, Emerging Threats, USOM, AbuseIPDB, AlienVault OTX 等 - **IPv4/IPv6 分离** - 独立的输出文件,便于防火墙/SIEM 集成 - **并行收集** - 通过 ThreadPoolExecutor 并发获取所有来源 - 每次运行从全球威胁情报源获取 **约 120,000+ 个唯一 IP** ## 故障安全机制 | 机制 | 工作原理 | |-----------|-------------| | **错误隔离** | 每个来源在独立的 try/except 块中运行。一个来源崩溃不会影响其他 20 个来源 | | **自动重试** | 失败的 HTTP 请求使用指数退避(2s, 4s, 8s)重试 3 次。永久性错误(4xx)跳过重试 | | **回滚保护** | 如果所有来源失败或成功率低于 20%,则不会覆盖现有输出文件 | | **健康追踪** | `source_health.json` 追踪每个来源的历史记录:连续失败次数、上次成功时间、总运行次数 | | **过期检测** | 超过 30 天无数据的来源会在健康报告中标记 | | **GitHub Issue 告警** | 失败时自动创建带有 `source-health` 标签的 Issue,恢复后自动关闭 | | **退出代码** | `0` = 全部正常,`1` = 部分失败(已写入输出),`2` = 严重故障(已保留输出) | ## 防火墙即用列表 将此 URL 直接复制到您的防火墙、SIEM 或威胁情报平台: ``` https://raw.githubusercontent.com/ziyadnz/threat-intel-ip-feeds/main/output/hourlyIPv4.txt ``` 此文件**仅包含 IP 地址和 CIDR**,每行一个 - 无注释、无标头、无元数据。每小时更新。专为直接导入以下系统设计: - pfSense, OPNsense, FortiGate, Palo Alto, Cisco ASA - Suricata, Snort, Zeek - Splunk, QRadar, Wazuh, ELK - iptables, nftables, fail2ban - 任何接受纯文本 IP 黑名单的系统 ## 快速开始 ``` pip install -r requirements.txt python main.py ``` ### 使用 API 密钥(可选,用于额外来源) ``` export ABUSEIPDB_API_KEY="your_key" export OTX_API_KEY="your_key" python main.py ``` ## 输出文件 | 文件 | 描述 | |------|-------------| | `output/hourlyIPv4.txt` | 原始 IPv4 列表 - 防火墙就绪,无注释 | | `output/ipv4_blacklist.txt` | 带元数据的 IPv4 地址和 CIDR | | `output/ipv6_blacklist.txt` | IPv6 地址和 CIDR | | `output/blacklist_full.json` | 带元数据的完整数据集 | | `output/source_health.json` | 来源健康追踪数据 | | `output/health_report.md` | 人类可读的健康报告 | ## 来源 ### 全球(无需注册) Spamhaus DROP/DROPv6, Feodo Tracker, DShield/SANS ISC, Blocklist.de(7 个类别), CINS Army, Emerging Threats, BinaryDefense, GreenSnow, Tor Exit Nodes, Stamparm IPsum ### 土耳其 USOM, RTBH ### 需要 API 密钥(免费注册) - **AbuseIPDB** - [注册](https://www.abuseipdb.com/register) - **AlienVault OTX** - [注册](https://otx.alienvault.com) ## 工作原理 ``` flowchart TD A[Start] --> B[Load 21 Sources in Parallel] B --> C{HTTP Request} C -->|Success| D[Extract IPs] C -->|Fail| E{Retry Count < 3?} E -->|Yes| F[Wait 2s/4s/8s] --> C E -->|No / 4xx| G[Log Failure] D --> H[Record Success in Health Tracker] G --> I[Record Failure in Health Tracker] H --> J[Classify IPv4 / IPv6] I --> J J --> K{Success Rate >= 20%?} K -->|Yes| L[Write Output Files] K -->|No| M[Rollback: Keep Existing Files] L --> N[Generate Health Report] M --> N N --> O{Failures or Stale Sources?} O -->|Yes| P[Open GitHub Issue] O -->|No| Q[Close Resolved Issues] P --> R[Done] Q --> R ``` ## 架构 ``` graph LR subgraph Sources GS[Global Sources
15 feeds] TS[Turkey Sources
USOM, RTBH] AS[API Sources
AbuseIPDB, OTX] end subgraph Core CO[collector.py
Parallel Engine] UT[utils.py
HTTP + Retry] CF[config.py
Settings] end subgraph Output OW[output_writer.py
Rollback Protected] IPv4[ipv4_blacklist.txt] IPv6[ipv6_blacklist.txt] JSON[blacklist_full.json] end subgraph Health HT[health_tracker.py
Persistent State] HR[health_report.py
Markdown Report] NO[notifier.py
GitHub Issues] end MAIN[main.py
Orchestrator] --> CO CO --> GS & TS & AS GS & TS & AS --> UT UT --> CF CO --> OW OW --> IPv4 & IPv6 & JSON CO --> HT HT --> HR HR --> NO ``` ## 许可证 MIT
标签:GitHub Actions, IPv4, IPv6, IP黑名单, PB级数据处理, PowerShell, Python, 威胁情报, 威胁源, 安全运维, 密码管理, 开发者工具, 异常检测, 恶意IP, 情报收集, 数据聚合, 无后门, 漏洞研究, 网络安全, 网络调试, 自动化, 自动笔记, 逆向工具, 防御 evasion, 防火墙, 隐私保护, 黑名单列表