Hardening Linux : Sécuriser un serveur Debian pour la production
Déployer un serveur Linux avec sa configuration d'origine (out-of-the-box) l'expose à de nombreux vecteurs de compromission. Le durcissement (ou "hardening") consiste à restreindre au strict minimum les fonctionnalités de l'OS afin d'éliminer les vulnérabilités potentielles. Ce guide détaille les étapes incontournables pour sécuriser un environnement Debian de production.
Prérequis
- Un serveur fraîchement installé sous Debian (ex: une instance Cloud VPC Plennyx).
- Un utilisateur standard configuré dans le groupe `sudo` (évitez d'administrer directement en root).
Étape 1 : Mises à jour automatisées et dépendances
La première ligne de défense réside dans l'application immédiate et continue des correctifs de sécurité du Kernel. Nous allons installer et configurer unattended-upgrades pour automatiser cela sans intervention humaine.
sudo apt update && sudo apt upgrade -y
sudo apt install unattended-upgrades bsd-mailx -y
# Activer le service de mise à jour automatique
sudo dpkg-reconfigure --priority=low unattended-upgrades
Étape 2 : Configuration stricte du pare-feu (UFW)
Par défaut, un serveur ne doit accepter aucun trafic entrant à l'exception des ports explicitement requis par vos applicatifs métiers (comme SSH ou HTTPS). Nous allons implémenter ces règles via UFW (Uncomplicated Firewall).
sudo apt install ufw -y
# Définir les politiques par défaut (Bloquer tout en entrée, autoriser en sortie)
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Autoriser les ports essentiels
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
# Activer le pare-feu
sudo ufw enable
Étape 3 : Sécurisation de la mémoire partagée et sysctl
La mémoire partagée (/dev/shm) peut être exploitée pour exécuter des scripts malveillants directement en mémoire vive. Nous allons la monter avec des restrictions strictes dans le fichier /etc/fstab.
sudo nano /etc/fstab
Ajoutez la ligne suivante à la fin du fichier :
tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0
Ensuite, nous allons durcir la configuration de la pile réseau du noyau Linux (Kernel) pour rejeter les redirections ICMP et contrer les attaques par usurpation (Spoofing) via le fichier sysctl.conf :
sudo nano /etc/sysctl.conf
# Protection contre le IP Spoofing
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Ignorer les redirections ICMP (Prévient les attaques MITM)
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Désactiver le routage des paquets (Si le serveur n'est pas un routeur)
net.ipv4.ip_forward = 0
Rechargez la configuration système immédiatement : sudo sysctl -p.
Étape 4 : Audit de conformité automatique avec Lynis
Pour valider la robustesse de votre durcissement, utilisez Lynis. C'est un outil d'audit de sécurité open-source de confiance qui va scanner l'intégralité du système et vous attribuer un score de hardening.
sudo apt install lynis -y
# Lancer un audit complet du système
sudo lynis audit system
Analysez le rapport final généré dans /var/log/lynis.log. Il contient des suggestions chirurgicales à implémenter pour augmenter votre note globale de sécurité.