Sécuriser un serveur Debian 12 de A à Z¶
Comment j'ai sécurisé mon VPS Debian 12 en production — SSH, UFW, Fail2ban et surveillance des IPs bannies.
Contexte¶
En déployant mon VPS pour héberger mes sites DevOps, j'ai appliqué une série de mesures de sécurité. En quelques heures, Fail2ban avait déjà banni 2 IPs qui tentaient de s'introduire via SSH.
1. Sécuriser SSH¶
Règle d'or
Toujours ouvrir un 2ème terminal et tester la connexion avant de redémarrer SSH — sinon tu te lock dehors.
2. Configurer UFW¶
ufw allow 22/tcp comment 'SSH'
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'
ufw default deny outgoing
ufw allow out 80/tcp
ufw allow out 443/tcp
ufw allow out 53/udp
ufw enable
3. Fail2ban sur Debian 12¶
Piège Debian 12
/var/log/auth.log n'existe pas sur Debian 12.
Fail2ban nécessite backend = systemd obligatoirement.
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 3
backend = systemd
[sshd]
enabled = true
port = ssh
backend = systemd
4. Script d'analyse des IPs bannies¶
#!/bin/bash
for jail in $(sudo fail2ban-client status | grep 'Jail list:' \
| sed 's/.*://;s/,//g'); do
IPS=$(sudo fail2ban-client status $jail \
| grep 'Banned IP' | sed 's/.*://')
for ip in $IPS; do
INFO=$(curl -s "https://ipinfo.io/$ip/json")
echo "$ip → $(echo $INFO | jq -r '.country') \
$(echo $INFO | jq -r '.org')"
done
done
Résultat¶
Résultat¶
✅ SSH → no root, no password, MaxAuthTries 3 ✅ UFW → 3 ports entrants, sortant limité ✅ Fail2ban → 5 jails actives, 2 IPs bannies dès J+1
À retenir¶
- Sur Debian 12 → toujours
backend = systemddans Fail2ban - Ouvrir 2 terminaux avant de modifier SSH
- Vérifier les règles UFW avant d'activer le pare-feu