All checks were successful
Hugo Build & Deploy / build-deploy (push) Successful in 7s
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>
128 lines
5.1 KiB
Markdown
128 lines
5.1 KiB
Markdown
---
|
||
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 |
|