Checklist de sécurisation d'un serveur
Sécuriser un serveur, c'est appliquer une série de mesures simples dans le bon ordre, puis vérifier chacune. Cette checklist vise un VPS Debian 13 avec accès root. Avant toute modification du SSH ou du pare-feu, gardez une session ouverte et une sauvegarde : une erreur de configuration peut vous couper l'accès.
Avant de commencer
- Sauvegardez les données et notez l'état actuel des services.
- Ouvrez une seconde session SSH et gardez-la active pendant les changements.
- Sachez comment revenir : console noVNC du panneau VPS, mot de passe root réinitialisable.
- Travaillez par petits changements, un service à la fois.
Priorité 1 : accès et mises à jour
sudo apt update && sudo apt full-upgrade
sudo systemctl rebootRedémarrez si le noyau ou la bibliothèque C a été mis à jour. Créez un utilisateur non privilégié et donnez-lui sudo :
sudo adduser utilisateur
sudo usermod -aG sudo utilisateurTestez sa connexion dans une nouvelle session avant de désactiver la connexion root. Installez ensuite votre clé publique, vérifiez qu'elle fonctionne, puis passez PasswordAuthentication no et PermitRootLogin no dans /etc/ssh/sshd_config. Validez avec sudo sshd -t avant de recharger le service.
Priorité 2 : exposition réseau
Dressez l'inventaire de ce qui écoute :
sudo ss -tulpnFermez les services inutiles. Activez un pare-feu en refus par défaut, en autorisant SSH avant de l'activer :
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80,443/tcp
sudo ufw enable
sudo ufw status verboseSi Docker est installé, sachez qu'il publie des ports en contournant UFW : liez les conteneurs à 127.0.0.1 quand ils ne doivent pas être publics, et vérifiez avec docker ps.
Installez Fail2ban pour SSH et vérifiez la prison :
sudo apt install fail2ban
sudo fail2ban-client status sshdPriorité 3 : données et comptes
- Les bases de données écoutent sur
127.0.0.1et chaque application a son utilisateur, avec les droits minimaux sur sa seule base. - Pas de
chmod 777:755pour les dossiers,644pour les fichiers,600pour un fichier.env. - Aucun secret dans Git. Les jetons se placent dans des variables d'environnement ou un fichier de secrets lisible par le seul service.
- Le certificat TLS est valide et son renouvellement est testé :
sudo certbot renew --dry-run. - Une sauvegarde existe hors du serveur et une restauration a déjà été essayée.
Priorité 4 : surveillance et documentation
journalctl -p err -bpour les erreurs depuis le démarrage.- Une supervision HTTP ou TCP avec alerte, pour détecter une panne avant un utilisateur.
unattended-upgradespour les correctifs de sécurité, avec vérification des redémarrages nécessaires.timedatectlpour un horodatage fiable des journaux.
| Point | Contrôle | Attendu |
|---|---|---|
| SSH | sudo sshd -T | grep -E "permitrootlogin|passwordauthentication" |
no / no |
| Pare-feu | ufw status verbose |
actif, ports utiles seulement |
| Écoute | ss -tulpn |
aucun port inattendu |
| Mises à jour | apt list --upgradable |
aucune mise à jour de sécurité en attente |
| Sauvegarde | restauration testée | documentée et récente |
Consignez ce qui a été changé, où vivent les secrets et comment revenir. Une checklist appliquée une fois ne suffit pas : reprenez-la après chaque nouveau service et à intervalle régulier.
Publicité
Cet article vous a-t-il aidé ?
À lire aussi
- Clés SSH ou mot de passe ?Comparer l'authentification par clé et par mot de passe, puis configurer un accès SSH sans risque de verrouillage.
- Comprendre le pare-feuComprendre les politiques entrantes et sortantes, puis configurer UFW sur Debian sans couper SSH.
- Appliquer les mises à jour de sécuritéMettre à jour Debian, comprendre le noyau partagé et automatiser les correctifs sans redémarrage surprise.