Ce guide décrit le workflow complet de déploiement ou restauration du SOC depuis une VM Debian 13 vierge. Il est la référence méthodologique utilisée lors de l'exercice DR du 2026-04-28.
- 1️⃣ Installation Debian 13 Trixie depuis le RUNBOOK
- 2️⃣ Déploiement stack logicielle via deploy-soc.sh (--dry-run disponible)
- 3️⃣ Restauration configuration depuis archive privée via restore-soc.sh
- 4️⃣ Validation 61 points via CHECKLIST-DEPLOY.md
- ⏱️ Objectif — système opérationnel via la procédure DR (archive privée requise)
Procédure complète pour reconstruire srv-nginx à l'identique sur une nouvelle VM Debian 13.
La reconstruction nécessite l'archive de configuration privée — non reproductible depuis ce dépôt public seul.
- OS : Debian 13 (Trixie) installation minimale
- IP : (configurée pendant l'install Debian — DHCP ou statique, peu importe pour l'instant)
- SSH : port 22 (par défaut — sera changé à par le script de restauration)
- Accès : root avec mot de passe (le script SSH clés sera restauré)
- Réseau : accessible depuis votre poste Windows
- Archive :
D:\BACKUP-PROXMOX\soc-config-AAAA-MM-JJ.tar.gz(38 Mo) - Dossier DEPLOY : clone du dépôt GitHub, sous-dossier
DEPLOY/deploy-soc.sh— installe les paquets (nginx, crowdsec, suricata...)restore-soc.sh— restaure toutes les configs depuis l'archive
Depuis Git Bash sur Windows :
# Variables (adapter si besoin)
NEW_VM="<SRV-NGINX-IP>"
ARCHIVE="/path/to/backups/soc-config-AAAA-MM-JJ_HHMM.tar.gz"
# Cloner le dépôt SOC sur la VM directement
ssh root@${NEW_VM} "mkdir -p /root/deploy-soc"
# Cloner le dépôt depuis GitHub
ssh root@${NEW_VM} "git clone https://github.com/<GITHUB-USER>/SOC /root/deploy-soc/repo"
# OU : copier les scripts depuis votre poste local
scp <YOUR-LOCAL-SOC-PATH>/DEPLOY/deploy-soc.sh root@${NEW_VM}:/root/deploy-soc/
scp <YOUR-LOCAL-SOC-PATH>/DEPLOY/restore-soc.sh root@${NEW_VM}:/root/deploy-soc/
# Copier l'archive de configuration (peut prendre 30-60s selon le réseau)
scp "${ARCHIVE}" root@${NEW_VM}:/root/deploy-soc/Résultat attendu sur la VM :
/root/deploy-soc/
├── deploy-soc.sh
├── restore-soc.sh
└── soc-config-2026-04-25_2159.tar.gz
ssh root@<SRV-NGINX-IP>
cd /root/deploy-soc# Simulation d'abord (sans rien modifier)
bash deploy-soc.sh --dry-run
# Déploiement complet (installe nginx, crowdsec, suricata, fail2ban, rsyslog, aide...)
bash deploy-soc.shCette étape installe tous les paquets nécessaires. Durée : 5 à 10 min selon la connexion internet.
bash restore-soc.sh soc-config-2026-04-25_2159.tar.gz --dry-runLire le rapport final (affiché en jaune) :
Fichiers DIFFÉRENTS→ configs qui vont être modifiéesFichiers NOUVEAUX→ configs absentes sur la VM vierge (normal)- Aucune erreur rouge
[ERRR]→ tout est prêt
bash restore-soc.sh soc-config-2026-04-25_2159.tar.gzLe script restaure dans l'ordre :
0/13 Réseau → interfaces, hostname, SSH (port <SSH-PORT>), sysctl, exim4
1/13 nginx → vhosts, SSL, snippets, GeoIP databases
2/13 CrowdSec → config, parsers, scenarios, collections
3/13 Fail2ban → jail.local, filters, actions
4/13 Suricata → config + téléchargement règles ET (~90 000)
5/13 rsyslog → config centrale logs
6/13 AppArmor → profils nginx + suricata
7/13 UFW → règles firewall
8/13 Scripts → /opt/soc/, /usr/local/bin/, dashboard
9/13 Crons → /etc/cron.d/ (11 tâches planifiées)
10/13 Systemd → units custom (soc-report-trigger)
11/13 Compléments → AIDE, logrotate, GeoIP license, API keys, SSH keys
12/13 AIDE → recalcul baseline intégrité
⚠️ Après BLOC 0 (réseau), le script redémarre SSH sur le port .
Votre session SSH actuelle (port 22) reste active jusqu'à sa fin.
rebootLe reboot applique :
/etc/network/interfaces(IP statique) et/etc/hostname(srv-nginx).
Depuis Git Bash sur Windows (après le reboot) :
ssh -i ~/.ssh/id_nginx -p <SSH-PORT> root@<SRV-NGINX-IP># Services actifs ?
systemctl is-active nginx crowdsec suricata fail2ban rsyslog
# Attendu : active × 5
# Crons en place ?
ls /etc/cron.d/
# Attendu : 11 fichiers
# CrowdSec opérationnel ?
cscli decisions list | head -5
cscli bouncers list| URL | Description | Disponible sans JARVIS ? |
|---|---|---|
http://<SRV-NGINX-IP>:8080/ |
Dashboard SOC principal — ThreatScore, tuiles, Kill Chain | ✅ Oui |
http://<SRV-NGINX-IP>:8080/goaccess.html |
Rapport GoAccess — stats HTTP nginx temps réel | ✅ Oui |
Note : Si JARVIS (Windows ) est éteint, la tuile JARVIS affiche "OFFLINE" mais tout le reste du dashboard fonctionne normalement — CrowdSec, Suricata, bans, ThreatScore, Kill Chain, logs centraux.
Suivre ensuite la CHECKLIST-DEPLOY.md (61 points de validation).
Le script restore-soc.sh crée automatiquement une sauvegarde avant d'écraser quoi que ce soit :
/opt/backup-config/pre-restore-AAAA-MM-JJ_HHMM/
Pour restaurer un fichier spécifique :
cp /opt/backup-config/pre-restore-*/etc_nginx_nginx.conf /etc/nginx/nginx.confPour rejouer un seul bloc :
bash restore-soc.sh archive.tar.gz --step nginx
bash restore-soc.sh archive.tar.gz --step crowdsec
bash restore-soc.sh archive.tar.gz --step crons# ─── Depuis Git Bash Windows ──────────────────────────────────────────
NEW_VM="<SRV-NGINX-IP>"
ARCHIVE="/path/to/backups/soc-config-AAAA-MM-JJ_HHMM.tar.gz"
DEPLOY="<YOUR-LOCAL-SOC-PATH>/DEPLOY"
ssh root@${NEW_VM} "mkdir -p /root/deploy-soc"
scp "${DEPLOY}/deploy-soc.sh" "${DEPLOY}/restore-soc.sh" root@${NEW_VM}:/root/deploy-soc/
scp "${ARCHIVE}" root@${NEW_VM}:/root/deploy-soc/
# ─── Depuis la nouvelle VM ────────────────────────────────────────────
ssh root@${NEW_VM}
cd /root/deploy-soc
bash deploy-soc.sh # 1. paquets
bash restore-soc.sh soc-config-*.tar.gz --dry-run # 2. simulation
bash restore-soc.sh soc-config-*.tar.gz # 3. restauration
reboot # 4. reboot
# ─── Depuis Git Bash Windows (après reboot) ───────────────────────────
ssh -i ~/.ssh/id_nginx -p <SSH-PORT> root@<SRV-NGINX-IP> # 5. reconnexion| 🖥️ Infrastructure & Sécurité | 💻 Développement & Web | 🤖 Intelligence Artificielle |
|
|
|
|
🔒 Projets proposés par 0xCyberLiTech · Développés en collaboration avec Claude AI (Anthropic) 🔒