JoeRu/swarmguard

GitHub: JoeRu/swarmguard

去中心化联邦式 IP 威胁情报共享系统,通过信誉评分与 P2P 信任机制让自托管服务器协同防御恶意 IP。

Stars: 0 | Forks: 0

# SwarmGuard 一个**去中心化、联邦式、基于信誉的 IP 黑名单** —— 威胁 情报在自托管服务器之间点对点共享,以**本地主权**为核心。 它最初是作为一个非侵入式的 **Mailcow** 插件构建的,旨在 补充 Fail2Ban 和 CrowdSec 等现有工具,而不是 取代它们。 CrowdSec 通过*中心化*的社区网络共享情报,而 SwarmGuard 是 其*去中心化*的对应物:信任是**联邦式**的(类似 Mastodon 的信任 域),黑/白名单只是**辅助**,运维人员始终可以对其进行覆盖, 并且 IP 信誉会随着时间的推移而**衰减** —— 这同时也作为 GDPR 的 存储限制机制。 ## 核心理念(一屏概览) - **每个 IP 的信誉分数**,而不是死板的全局列表。你本地的阈值会将其变成 一个黑名单。三个输出级别:分数 / 直接可用的黑名单 / 原始事件。 - **通过结构防投毒,而非盲目信任**(规范 §4):基准真相锚点 (真实系统上的蜜罐或垃圾邮件陷阱语义)、多样性加权佐证(N 个*独立*的 ASN/国家,而不是 N 个节点),以及非对称的 信誉衰减(信任上升缓慢,下降迅速)。 - **联邦式信任**(规范 §5):一个可筛选的已签名信任锚点列表,加上 你自己进行联邦(带有信任折扣)或保持隔离的子网。 解除联邦是对不良子网的应对手段。 - **通过查询而非复制来扩展**(规范 §11):DNSBL 式的按需查找 + 紧凑的本地布隆过滤器;使用 `ipset`/`nftables` (O(1)),绝不使用每个 IP 对应一条规则。 该守护进程是一个好邻居 —— 拥有资源预算,在受到攻击时会减轻负载。 - **设计上符合 GDPR**(规范 §9):IP*属于*个人数据;法律依据是 网络安全方面的正当利益(第 6(1)(f) 条,第 49 条说明),其中衰减作为自动 删除机制,本地管理员作为控制者。 ## 运营联邦?请先阅读此内容。 如果你运行(而不仅仅是加入)一个信任域,你必须预先建立三件事。 **这是必读内容**,记录在 [`docs/onboarding/`](docs/onboarding/): 1. **[基准真相锚点](docs/onboarding/01-ground-truth.md)** —— 注册 你的蜜罐/垃圾邮件陷阱系统的签名。 2. **[大规模白名单 + 本地真相](docs/onboarding/02-whitelist.md)** —— 维护 联邦白名单;每次安装都会通过脚本添加其自己的本地真相。 3. **[密钥管理](docs/onboarding/03-key-management.md)** —— 锚点密钥的颁发、轮换、 撤销。 ……以及将这一切联系在一起的原则: **[列表是辅助,而非法律](docs/onboarding/04-override.md)** —— 用户可以 覆盖任何参数。 ## 仓库结构 有关完整的树状结构和原理,请参阅 [`docs/project-structure.md`](docs/project-structure.md)。 简而言之:`cmd/` 存放二进制文件,`internal/` 存放逻辑(三个平面:数据 = `enforce`,控制 = `reputation`/`transport`/`store`,可观测性 = `observability`),`pkg/proto` 存放网络协议,`deploy/` 存放 Docker + Mailcow, `docs/` 存放设计文档,`.claude/skills/` 存放开发者技能。 ## 扩展:插件 SwarmGuard 围绕两个小型插件接口构建,因此它可以封装现有的 工具(见 [`docs/plugins.md`](docs/plugins.md)): - **`ingest.Source`** —— 攻击信号生产者:Mailcow 日志、垃圾邮件陷阱、 蜜罐(Cowrie/Dionaea/OpenCanary/T-Pot)、CrowdSec、Fail2Ban。 - **`enforce.Sink`** —— 执行后端:`ipset`、`nftables`,或者输出一个 兼容 CrowdSec 的黑名单,让现有的 bouncer 来执行拦截。 ## 快速开始(脚手架) ``` make build # builds bin/swarmd and bin/swarmctl (currently stubs) make test # runs tests (none yet) make adversarial # poisoning/sybil suite — the security CI gate ``` Mailcow 插件安装:请参阅 [`deploy/mailcow/README.md`](deploy/mailcow/README.md)。 ## 路线图(分阶段,见 project-structure §6) 1. **MVP 单节点**:摄取(Mailcow + 垃圾邮件陷阱) → 信誉 → ipset。 2. **P2P 核心**:gossip + 布隆过滤器 + 多样性佐证(约 80% 的价值)。 3. **信任锚点** + 密钥生命周期。 4. **联邦**:折扣导入、解除联邦、DHT 按需查找。 5. **扩展/强化**:中继角色、资源预算、可选择加入的可观测性。 ## 开放问题的状态 在规范的风险表(规范 §12)中进行了跟踪:投毒是*已缓解,从未被“解决”*;报告者隐私和衰减半衰期调整是值得注意的待办事项。 ## 许可证 MIT —— 请参阅 [`LICENSE`](LICENSE)。 ## 相关内容 - [JoeRu/Mailcow-Crowdsec-Override](https://github.com/JoeRu/Mailcow-Crowdsec-Override) — 本项目与之进行联邦的互补型中心化情报 CrowdSec 集成。
标签:IP黑名单, 去中心化, 后端开发, 威胁情报, 开发者工具, 日志审计, 联邦学习, 请求拦截, 运维工具