Files
blog/content/posts/bojemoi-lab-architecture.md
Betty 1fea4638ff
All checks were successful
Hugo Build & Deploy / build-deploy (push) Successful in 9s
blog: update architecture post with full diagram and current state (March 2026)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 20:51:14 +01:00

188 lines
12 KiB
Markdown

---
title: "Bojemoi Lab — Architecture Globale"
date: 2026-03-12T20:00:00+01:00
draft: false
tags: ["infrastructure", "docker-swarm", "cybersecurity", "homelab", "devops", "selfhosted", "threat-intelligence", "osint", "machine-learning", "build-in-public", "french-tech", "blue-team", "soc"]
summary: "Schéma complet de Bojemoi Lab : 4 nœuds Swarm, 12 stacks, 43 services — scan internet, threat intel multi-sources, honeypot, IDS/IPS, et intégration MCP/Claude."
description: "Architecture détaillée de Bojemoi Lab : pipeline de scan (ak47/bm12/uzi), threat intelligence (razvedka/vigie/dozor/ml-threat), défense (Suricata/CrowdSec/honeypot), observabilité (Prometheus/Grafana/Loki/Tempo), et MCP server pour Claude Code."
author: "Bojemoi"
ShowToc: true
ShowReadingTime: true
---
Voici l'architecture actuelle de Bojemoi Lab, telle qu'elle tourne en ce moment — pas un croquis de projet, mais le reflet de ce qui est déployé.
4 nœuds Swarm, 12 stacks, ~43 services. 6,15 millions d'hôtes scannés, 33,7 millions de services en base.
---
## Vue d'ensemble
```
┌──────────────────────────────────────────────────────────────────────┐
│ INTERNET / EXTERNAL │
│ ANSSI/CERT-FR • Telegram Channels • VirusTotal • AbuseIPDB • OTX │
│ Shodan • X/Twitter • MITRE ATT&CK feeds • XenServer (on-prem) │
└────────────────────────────┬─────────────────────────────────────────┘
┌────────────────────────────▼─────────────────────────────────────────┐
│ LIGHTSAIL (bojemoi.me) │
│ Nginx (80/443) • Gitea (gitea.bojemoi.me) • Hugo blog │
│ Apache (8080) • cloud-init/configs • Gitea Actions CI │
└────────────────────────────┬─────────────────────────────────────────┘
│ SSH/GitOps
┌────────────────────────────▼─────────────────────────────────────────┐
│ DOCKER SWARM CLUSTER │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ meta-76 (MANAGER) — Intel i9, 16 GB RAM │ │
│ │ │ │
│ │ ┌─── BASE STACK ──────────────────────────────────────┐ │ │
│ │ │ PostgreSQL (msf, threat_intel, razvedka, vigie, │ │ │
│ │ │ telegram_bot, deployments, ip2location) │ │ │
│ │ │ Prometheus • Grafana • Loki • Tempo • Alloy │ │ │
│ │ │ Alertmanager • PgAdmin • cAdvisor • node-exporter │ │ │
│ │ │ Postfix • Proton Mail Bridge • Koursk (rsync) │ │ │
│ │ │ Provisioning API (FastAPI, port 8000→28080) │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─── BOOT STACK ──┐ ┌─── MCP STACK ───────────────┐ │ │
│ │ │ Traefik (proxy) │ │ mcp-server (port 8001) │ │ │
│ │ │ CrowdSec (WAF) │ │ Claude Code integration │ │ │
│ │ └─────────────────┘ └─────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ WORKERS: meta-68, meta-69, meta-70 │ │
│ │ │ │
│ │ ┌─── BORODINO STACK ──────────────────────────────────────┐ │ │
│ │ │ ak47 (x15) → Nmap CIDR scan → msf.hosts/services │ │ │
│ │ │ bm12 (x15) → Deep fingerprint + NSE → classify hosts │ │ │
│ │ │ uzi (x3) → Metasploit exploits (MODE_RUN=0) │ │ │
│ │ └─────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─── PENTEST STACK ──────────┐ ┌─── TELEGRAM ────────────┐ │ │
│ │ │ Faraday (port 5985) │ │ telegram-bot │ │ │
│ │ │ OWASP ZAP │ │ Redis pub/sub │ │ │
│ │ │ Nuclei (25 templates) │ │ Bot: @Betty_Bombers_bot │ │ │
│ │ │ Samsonov (import) │ │ Group: Bojemoi PTaaS │ │ │
│ │ │ Tsushima (aggregator) │ └─────────────────────────┘ │ │
│ │ └────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─── THREAT INTEL ─────────────────────────────────────────┐ │ │
│ │ │ razvedka → DDoS prediction (Telegram channels HU/RU) │ │ │
│ │ │ vigie → CERT-FR bulletin monitor (ANSSI RSS) │ │ │
│ │ │ dozor → Suricata rule generator (IoC feeds) │ │ │
│ │ │ ml-threat → ML scoring + MITRE ATT&CK mapping │ │ │
│ │ └─────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─── DEFENSE ──────────┐ ┌─── HONEYPOT ─────────────────┐ │ │
│ │ │ Suricata (host mode) │ │ medved (host mode) │ │ │
│ │ │ EVE enricher │ │ SSH/HTTP/RDP/SMB/FTP/Telnet │ │ │
│ │ │ CrowdSec (WAF) │ │ → PostgreSQL + Faraday │ │ │
│ │ └──────────────────────┘ └─────────────────────────────┘ │ │
│ └────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
```
---
## Flux de Données — Pipeline de Scan
```
ip2location DB
ak47 (x15) ← scans CIDRs via db_nmap
│ msf.hosts
bm12 (x15) ← deep NSE fingerprinting (25 catégories)
│ hosts.scan_details (JSON) + comments + scan_status='bm12_v2'
uzi (x3) ← Metasploit exploits (désactivé)
Faraday ← workspace pentest
Samsonov/Tsushima ← import + agrégation
Telegram Bot ← notification + commandes manuelles
```
---
## Stack Files → Services
| Stack | Services clés | Placement |
|-------|--------------|-----------|
| `01-service-hl.yml` | postgres, prometheus, grafana, loki, alertmanager, postfix, provisioning | manager |
| `boot stack` | traefik, crowdsec | manager |
| `40-service-borodino.yml` | ak47, bm12, uzi, faraday, zaproxy, nuclei | workers |
| `45-service-ml-threat-intel.yml` | ml-threat-intel-api | workers |
| `46-service-razvedka.yml` | razvedka | workers |
| `47-service-vigie.yml` | vigie | workers |
| `48-service-dozor.yml` | dozor, eve-cleaner | workers |
| `49-service-mcp.yml` | mcp-server | manager |
| `50-service-trivy.yml` | trivy scanner | CI/CD only |
| `60-service-telegram.yml` | telegram-bot, redis | workers |
| `65-service-medved.yml` | medved honeypot | manager (host ports) |
| `01-suricata-host.yml` | suricata, enricher | host compose (hors swarm) |
---
## Observabilité
```
Services → metrics → Prometheus → Grafana dashboards
Services → logs → Loki → Grafana explore
Services → traces → Tempo → Grafana explore
Alloy (collector unifié) → pipeline tout-en-un
Alertmanager → Postfix/ProtonBridge → Email chiffré
```
---
## Bases de Données (PostgreSQL)
| Database | Usage | Taille estimée |
|----------|-------|---------------|
| `msf` | Metasploit — hosts (6,15M), services (33,7M), vulns | 9 GB |
| `bojemoi_threat_intel` | ML scoring, OSINT cache, IoC | ~2 GB |
| `ip2location` | CIDRs géolocalisés pour scanning | ~500 MB |
| `razvedka` | Mentions hacktivist, alertes DDoS | ~100 MB |
| `vigie` | Bulletins CERT-FR, watchlist matches | ~50 MB |
| `telegram_bot` | Historique chats, commandes | ~500 MB |
| `honeypot_events` | Captures medved (SSH, HTTP, RDP...) | ~1 GB |
| `deployments` | Audit orchestrateur + blockchain | ~100 MB |
---
## Réseaux Overlay (Swarm)
| Réseau | Services |
|--------|---------|
| `backend` | postgres, redis, tous les services data |
| `monitoring` | prometheus, grafana, loki, tempo, alloy |
| `proxy` | traefik, crowdsec |
| `pentest` | faraday, zaproxy, nuclei, samsonov, mcp-server |
| `rsync_network` | koursk master/slave |
| `mail` | postfix, protonmail-bridge, alertmanager |
| `telegram_net` | telegram-bot |
---
## Résumé
- **4 nœuds Swarm** — 1 manager (meta-76) + 3 workers (meta-68/69/70)
- **12 stacks** — ~43 services distincts
- **9 GB de données** — 6,15M hosts scannés, 33,7M services
- **Pipeline CI/CD** — GitLab + Trivy + Gitea Actions
- **Interfaces de contrôle** — Telegram bot, MCP server (Claude), API REST
- **Threat Intel multi-sources** — OSINT, ML, CTI feeds, honeypot, IDS
Tout est open source, versionné sur Gitea, déployé via CI/CD.
→ [gitea.bojemoi.me](https://gitea.bojemoi.me)