Files
blog/content/posts/bojemoi-lab-architecture.md
Betty 692064dfde
All checks were successful
Hugo Build & Deploy / build-deploy (push) Successful in 7s
post: Bojemoi Lab — Architecture de la plateforme
Vue d'ensemble complète : orchestrateur, borodino (ak47/bm12/uzi),
samsonov, CTI (razvedka/vigie/dozor/ml-threat-intel), honeypot medved,
suricata-attack-enricher et stacks Docker Swarm.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-19 21:35:54 +01:00

128 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Bojemoi Lab — Architecture de la plateforme"
date: 2026-02-19
draft: false
tags: ["infrastructure", "docker-swarm", "metasploit", "security", "architecture"]
summary: "Vue d'ensemble complète de la plateforme Bojemoi Lab : orchestration Docker Swarm, workers de scan Metasploit, CTI, honeypot et pipeline de threat intelligence."
---
Bojemoi Lab est une plateforme hybride d'Infrastructure-as-Code déployée sur Docker Swarm (4 nœuds). Elle combine sécurité offensive, CTI, monitoring et orchestration de déploiement.
**Environnement :**
- Manager : meta-76 (Alpine/BusyBox, i9-10900X, 16 GB RAM)
- Workers : meta-68, meta-69, meta-70 (contrainte `node.role == worker`)
- Registry local : `localhost:5000`
- Gitea : `gitea.bojemoi.me`
---
## 1. Orchestrateur de déploiement
FastAPI avec middleware de validation IP géographique, chaîne blockchain SHA-256 pour l'audit immuable des déploiements, et intégration XenServer pour les VMs.
**Endpoints principaux :**
- `POST /api/v1/vm/deploy` — Déployer une VM sur XenServer
- `POST /api/v1/container/deploy` — Déployer un service Docker Swarm
- `GET /api/v1/blockchain/verify` — Vérifier l'intégrité de la chaîne d'audit
**Workflow VM :**
1. Validation IP source (whitelist Europe Occidentale, bypass RFC1918)
2. Récupération du template cloud-init depuis Gitea
3. Rendu Jinja2 avec les variables
4. Création VM via XenAPI
5. Enregistrement blockchain (karacho) + PostgreSQL
---
## 2. Borodino — Workers de scan Metasploit
Image `ruby:3.3-alpine` avec Metasploit Framework complet, nmap, pymetasploit3 et ProtonVPN.
### ak47 (15 répliques)
Script ash qui sélectionne des CIDRs depuis `ip2location_db1` via `TABLESAMPLE SYSTEM(1)` et lance `db_nmap -sS -A -O` via msfconsole. Les résultats alimentent la base `msf` (6,15M hosts, 33,7M services).
### bm12 v2 (15 répliques)
Fingerprinting profond des hosts existants :
- Sélection aléatoire via `TABLESAMPLE SYSTEM(0.001)`
- Mapping des services ouverts vers 25 catégories NSE ciblées (http, ssh, smtp, smb, dns, mysql, rdp…)
- Un seul msfconsole par host (timeout 600s)
- Classification : web / mail / dns / database / file_server / vpn_proxy / voip / iot_embedded / remote_access
- Résultat stocké dans `hosts.comments`, `hosts.scan_details` (JSON), `hosts.scan_status='bm12_v2'`
### uzi (1 réplique)
Exploitation via MsfRpcClient (pymetasploit3) sur port 55553. Itère les modules exploit Linux post-2021, tente chaque exploit avec chaque payload, alerte Telegram en cas de session ouverte.
---
## 3. Samsonov — Orchestrateur Pentest
Architecture plugin chargée dynamiquement depuis Redis (`pentest:commands`).
**Pipeline de scan :** Masscan → ZAP spider/active → Burp passive → Nuclei → VulnX → Metasploit
**Types de scan :** `full`, `web`, `network`, `vuln`, `cms`
Les résultats sont agrégés et importés dans Faraday.
---
## 4. Bibliothèque MITRE ATT&CK
Package Python partagé `bojemoi-mitre-attack` embarqué dans plusieurs images. Mappe 35+ catégories Suricata vers des techniques ATT&CK avec niveau de confiance (high/medium/low), couvrant : initial-access, reconnaissance, C2, credential-access, privilege-escalation, exfiltration, lateral-movement.
---
## 5. Suricata Attack Enricher
Service Python async qui suit `eve.json` de Suricata en temps réel, mappe chaque alerte vers ATT&CK, et insère en batch dans PostgreSQL (`bojemoi_threat_intel.suricata_attack_alerts`). Batch 50 entrées / flush 5s.
---
## 6. Services CTI
| Service | Rôle |
|---|---|
| **razvedka** | Surveille canaux Telegram hacktvistes (KillNet, CyberArmyOfRussia…), score l'intention DDoS ciblant la France |
| **vigie** | Scrape flux RSS ANSSI/CERT-FR, alerte sur nouvelles vulnérabilités selon une watchlist produits |
| **dozor** | Génère les règles blocklist Suricata depuis threat intel, reload via socket Unix |
| **ml-threat-intel** | Classificateur ML d'IoC (VT/AbuseIPDB/OTX/Shodan/Anthropic APIs) |
---
## 7. Honeypot Medved
Multi-protocole : SSH :22, HTTP :8888, RDP :3389, SMB :445, FTP :2121, Telnet :2323, Elasticsearch :9200. Toutes les interactions sont loguées dans la base `msf` et envoyées à Faraday.
---
## Stacks Docker Swarm
| Stack | Services principaux |
|---|---|
| **base** (manager) | postgres, grafana, prometheus, loki, tempo, alertmanager, orchestrator |
| **borodino** (workers) | ak47×15, bm12×15, uzi×1, karacho, masscan, nuclei, faraday, zaproxy, redis |
| **ml-threat-intel** (workers) | API classificateur IoC |
| **razvedka** (workers) | Monitor Telegram hacktvistes |
| **vigie** (workers) | Monitor ANSSI/CERT-FR |
| **dozor** (workers) | Générateur règles Suricata |
| **telegram** (workers) | Bot Telegram (interface Redis + docker-socket-proxy) |
| **medved** (workers) | Honeypot multi-protocoles |
---
## Base de données
Instance PostgreSQL partagée sur meta-76 :
| Base | Usage |
|---|---|
| `msf` | Metasploit — 6,15M hosts, 33,7M services, 9 GB |
| `ip2location` | CIDRs géolocalisation |
| `faraday` | Findings sécurité |
| `deployments` | État orchestrateur |
| `bojemoi_threat_intel` | Alertes Suricata enrichies ATT&CK |
| `karacho` | Blockchain audit déploiements |