Sécuriser un serveur Debian fraîchement installé : ma checklist

Un serveur Debian fraîchement installé est scanné en quelques heures. Voici ma checklist complète pour le sécuriser avant tout déploiement.

Sécuriser un serveur Debian fraîchement installé : ma checklist

La première fois que j'ai loué un VPS, j'ai installé Debian, configuré mon site, et je suis allé me coucher tranquille. Le lendemain matin, en regardant les logs par curiosité, j'ai découvert des centaines de tentatives de connexion SSH venues des quatre coins du monde. Mon serveur avait à peine douze heures d'existence.

C'est là que j'ai compris un truc essentiel : un serveur fraîchement installé n'est jamais « tranquille » bien longtemps. Dès qu'une IP est exposée sur Internet, des bots la scannent en continu, à la recherche de la moindre faille. La sécurisation n'est pas une option qu'on remet à plus tard, c'est la toute première chose à faire, avant même de déployer quoi que ce soit.

Voici la checklist que j'applique systématiquement sur chaque nouveau serveur Debian.

1. Mettre le système à jour immédiatement

La base de tout. Un système à jour corrige les failles déjà connues et documentées.

sudo apt update && sudo apt full-upgrade -y
sudo reboot

2. Créer un utilisateur non-root avec sudo

Travailler en root en permanence, c'est prendre un risque inutile : la moindre erreur de commande peut avoir des conséquences bien plus graves.

adduser arthur
usermod -aG sudo arthur

Je me déconnecte ensuite et je reviens avec ce nouvel utilisateur pour la suite des opérations.

3. Passer à l'authentification par clé SSH

Le mot de passe SSH est la première porte que les bots essaient de forcer. Une paire de clés est largement plus robuste.

Sur ma machine locale :

ssh-keygen -t ed25519 -C "serveur-debian"
ssh-copy-id arthur@mon-serveur

Une fois la connexion par clé testée et fonctionnelle, je désactive l'authentification par mot de passe dans /etc/ssh/sshd_config :

PasswordAuthentication no

4. Désactiver la connexion root par SSH

Même avec un mot de passe fort, laisser le root accessible directement en SSH reste une porte d'entrée à fermer.

Toujours dans /etc/ssh/sshd_config :

PermitRootLogin no

Puis on redémarre le service :

sudo systemctl restart sshd

5. Changer le port SSH par défaut (optionnel, mais utile)

Ce n'est pas une mesure de sécurité à proprement parler un bon attaquant scanne tous les ports de toute façon mais ça réduit drastiquement le bruit des bots automatisés qui ciblent le port 22 par défaut. Toujours dans sshd_config :

Port 2222

⚠️ Penser à ouvrir ce port dans le pare-feu avant de redémarrer SSH, sous peine de se retrouver bloqué dehors.

6. Configurer un pare-feu avec UFW

Par défaut, on bloque tout, et on n'ouvre que le strict nécessaire.

sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp   # ou 22 si tu n'as pas changé le port
sudo ufw allow 80,443/tcp
sudo ufw enable

7. Installer Fail2ban

Fail2ban surveille les tentatives de connexion échouées et bannit automatiquement les IP suspectes après plusieurs essais.

sudo apt install fail2ban
sudo systemctl enable --now fail2ban

La configuration par défaut est déjà efficace pour SSH, mais elle peut être affinée dans /etc/fail2ban/jail.local.

8. Activer les mises à jour de sécurité automatiques

Pour ne pas dépendre uniquement de ma mémoire, je laisse Debian appliquer seul les correctifs de sécurité critiques.

sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

9. Désactiver les services inutiles

Chaque service qui tourne est une surface d'attaque potentielle. Je vérifie ce qui est actif et je coupe ce qui ne sert pas :

systemctl list-units --type=service --state=running
sudo systemctl disable --now <service-inutile>

10. Centraliser et surveiller les logs

Je configure le fuseau horaire correctement (pour que les logs soient lisibles et cohérents) et je jette un œil régulier à /var/log/auth.log pour repérer toute activité anormale.

sudo timedatectl set-timezone Europe/Paris

11. Faire un premier audit avec Lynis

Une fois la base posée, j'utilise Lynis pour avoir un état des lieux global et une liste de recommandations supplémentaires.

sudo apt install lynis
sudo lynis audit system

En conclusion

Cette checklist n'a rien d'exhaustif, la sécurité est un processus continu, pas une case à cocher une bonne fois pour toutes. Mais ces quelques étapes, appliquées systématiquement dans les premières minutes de vie d'un serveur, suffisent déjà à éliminer l'écrasante majorité des attaques automatisées qui tournent en permanence sur Internet.

La prochaine fois que tu déploies un serveur Debian, prends ces dix minutes avant de faire quoi que ce soit d'autre. Ton toi du futur, qui regardera les logs quelques jours plus tard, te remerciera.