Sécuriser un serveur Debian : la checklist complète 2026
Un VPS Debian fraîchement provisionné chez OVH, Hetzner ou Scaleway reçoit en moyenne 200 tentatives de login SSH par jour dans les 24h qui suivent sa mise en ligne. Sans hardening minimum, vous êtes une cible facile. Voici la checklist que nous appliquons sur chaque serveur que nous infogérons.
1. Utilisateur non-root + sudo
adduser monadmin
usermod -aG sudo monadmin
Bannissez le login root direct : c'est l'attaque numéro 1 dans le monde.
2. SSH : clés uniquement, port custom
Dans /etc/ssh/sshd_config :
Port 2244
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers monadmin
MaxAuthTries 3
ClientAliveInterval 300
Puis : systemctl restart ssh.
Avant de fermer votre session, ouvrez un second terminal et vérifiez que vous vous reconnectez correctement.
3. Fail2ban
apt install fail2ban
Configuration minimale dans /etc/fail2ban/jail.local :
[sshd]
enabled = true
port = 2244
maxretry = 3
bantime = 3600
findtime = 600
Vous diviserez les tentatives par 100 dès la première heure.
4. Firewall nftables
Debian 12 utilise nftables par défaut. Politique minimale :
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif "lo" accept
ct state established,related accept
tcp dport 2244 accept
tcp dport {80, 443} accept
icmp type echo-request accept
}
}
Tout le reste est droppé silencieusement.
5. Mises à jour automatiques de sécurité
apt install unattended-upgrades apt-listchanges
dpkg-reconfigure -plow unattended-upgrades
Vérifiez /etc/apt/apt.conf.d/50unattended-upgrades : seuls les security updates doivent être automatiques.
6. Sysctl hardening
Dans /etc/sysctl.d/99-hardening.conf :
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
Puis : sysctl -p.
7. Audit avec Lynis
apt install lynis
lynis audit system
Lynis vous donne un score de hardening (visez > 80) et liste les améliorations possibles. Relancez-le après chaque modification.
8. Logs centralisés
Configurez rsyslog pour envoyer les logs vers un serveur distant (Graylog, Loki, ou simplement un autre VPS). Si votre serveur est compromis, les logs locaux peuvent être effacés par l'attaquant.
9. Monitoring intégrité fichiers
AIDE ou Tripwire détectent toute modification non autorisée de /etc, /usr/bin, etc. :
apt install aide
aideinit
Programmez un check quotidien via cron, envoyé par mail.
10. ClamAV pour les serveurs qui reçoivent des fichiers
Si votre serveur héberge un site avec upload utilisateur, installez ClamAV :
apt install clamav clamav-daemon
Et scannez les uploads avant traitement.
11. Désactivation des services inutiles
Listez les services actifs :
systemctl list-units --type=service --state=running
Désactivez tout ce qui n'est pas nécessaire (avahi, cups, bluetooth, snapd…).
12. Sauvegardes chiffrées hors site
Le hardening, c'est bien. La sauvegarde, c'est obligatoire. Utilisez restic ou borg avec dépôt distant chiffré :
restic init --repo s3:s3.eu-west-1.wasabisys.com/mon-bucket
13. Bannir les utilisateurs après inactivité
Dans /etc/profile.d/timeout.sh :
TMOUT=900
readonly TMOUT
export TMOUT
Sessions tuées après 15 minutes d'inactivité.
14. 2FA sur SSH (bonus)
Pour les serveurs critiques, ajoutez un second facteur via libpam-google-authenticator. Même une clé privée volée ne suffira plus.
15. Documentation
Documentez chaque modification (Git, wiki interne, fichier README à la racine). Sans cela, vous ne saurez plus dans 6 mois pourquoi ce port est ouvert.
Une fois cette checklist appliquée, votre serveur est dans le top 5 % en termes de sécurité. Ce n'est pas une garantie absolue (le patching régulier reste le facteur n°1), mais c'est la base de toute production sérieuse.
Un projet d'infrastructure en tête ?
Échange de 30 minutes, sans engagement. On regarde ensemble votre infra actuelle et les pistes concrètes pour la moderniser.
Demander un audit gratuit