Sécurisation d’un serveur Linux
Mise en place d’un socle de sécurité sur un serveur Debian : sécuriser SSH, pare-feu UFW, gestion des utilisateurs et bonnes pratiques.
Contexte
Objectif
Architecture technique
Mise en place d'un socle de sécurité sur un serveur Debian : durcissement SSH, pare-feu UFW, gestion des utilisateurs et bonnes pratiques
Introduction
La sécurisation d’un serveur Linux est une étape fondamentale dans toute infrastructure moderne.
Un serveur mal configuré ou exposé sans protection devient rapidement une cible pour les scans automatisés, attaques par brute force, tentatives d’intrusion ou exploitations de vulnérabilités.
Dans cet article, nous allons mettre en place un socle de sécurité de base sur un serveur Debian afin de réduire la surface d’attaque et appliquer plusieurs bonnes pratiques essentielles :
Durcissement du service SSH ;
configuration du pare-feu UFW ;
gestion sécurisée des utilisateurs ;
sécurisation des accès ;
recommandations de sécurité système.
L’objectif n’est pas de rendre le serveur invulnérable, mais d’établir une base solide et professionnelle pour toute infrastructure Linux.
1. Mise à jour du système
On commence par mettre à jour la liste des paquets, puis les paquets installés, afin de corriger les failles de sécurité connues.
sudo apt update && sudo apt upgrade -y
2. Création d'un utilisateur non root avec sudo
Travailler en root est risqué : une erreur de commande s'applique à tout le système. On crée donc un utilisateur dédié, que l'on ajoute au groupe sudo.
sudo adduser devops
sudo usermod -aG sudo devops
groups devops
3. Sécurisation du service SSH
On interdit la connexion directe du compte root en SSH, ce qui oblige à passer par l'utilisateur créé à l'étape précédente.
sudo nano /etc/ssh/sshd_config
Régler la directive suivante :
PermitRootLogin no
On vérifie la syntaxe du fichier avant de redémarrer le service :
sudo sshd -t
sudo systemctl restart ssh
Précaution : garder une session SSH ouverte pendant la modification, et tester une nouvelle connexion dans un second terminal avant de fermer la première.
4. Pare-feu avec UFW
UFW (Uncomplicated Firewall) filtre le trafic entrant. La règle SSH est ajoutée avant l'activation du pare-feu, pour ne pas se couper l'accès au serveur.
sudo apt install -y ufw
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
5. Protection contre le force brute avec fail2ban
fail2ban surveille les journaux et bannit temporairement les adresses IP qui multiplient les échecs de connexion.
sudo apt install -y fail2ban
sudo systemctl status fail2ban
6. Automatisation
Les étapes de base (mises à jour, installation des paquets, activation d'UFW) sont regroupées dans un script Bash. La création de l'utilisateur et la configuration SSH restent manuelles.
Code source et guides détaillés : https://github.com/stephanemetche/linux-server-setup
7. Limites et version 2
Ce socle est volontairement simple. Les améliorations prévues sont :
- authentification SSH par clés, avec désactivation de l'authentification par mot de passe ;
- mises à jour de sécurité automatiques avec unattended-upgrades ;
- configuration de fail2ban dédiée à SSH.