Un serveur Linux mal configuré est une porte ouverte aux cyberattaques. Chaque jour, des milliers de machines sont compromises par des bots qui scannent Internet à la recherche de failles. Pourtant, quelques mesures bien appliquées suffisent à réduire drastiquement la surface d’attaque. Ce guide vous accompagne pas à pas pour durcir la sécurité de votre serveur Linux, que vous utilisiez Ubuntu, Debian, CentOS ou toute autre distribution. Suivez cette checklist et transformez votre serveur en forteresse.
Étape 1 : Mettre à jour le système et activer les mises à jour automatiques
La première ligne de défense reste la plus simple : maintenir votre système à jour. Les correctifs de sécurité colmatent régulièrement des vulnérabilités critiques.
Sur Debian/Ubuntu :
sudo apt update && sudo apt upgrade -y
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgradesSur CentOS/RHEL :
sudo yum update -y
sudo yum install yum-cron
sudo systemctl enable yum-cronActivez les mises à jour automatiques de sécurité pour ne jamais laisser une faille connue exploitable sur votre serveur.
Étape 2 : Sécuriser l’accès SSH
Le protocole SSH est le principal vecteur d’attaque sur les serveurs Linux. Voici les modifications essentielles à apporter au fichier /etc/ssh/sshd_config :
Désactiver la connexion root :
PermitRootLogin noChanger le port par défaut :
Port 2222Utiliser uniquement le protocole SSH v2 :
Protocol 2Limiter les utilisateurs autorisés :
AllowUsers votre_utilisateurDésactiver l’authentification par mot de passe :
PasswordAuthentication no
PubkeyAuthentication yesAprès modification, redémarrez le service :
sudo systemctl restart sshdL’authentification par clé SSH offre une sécurité incomparablement supérieure aux mots de passe.
Étape 3 : Configurer un pare-feu robuste
Un pare-feu correctement configuré filtre le trafic et bloque les connexions non sollicitées. UFW (Uncomplicated Firewall) simplifie cette tâche sur Ubuntu/Debian.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp <em># SSH (port personnalisé)</em>
sudo ufw allow 80/tcp <em># HTTP</em>
sudo ufw allow 443/tcp <em># HTTPS</em>
sudo ufw enableSur CentOS, utilisez firewalld :
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reloadN’ouvrez que les ports strictement nécessaires au fonctionnement de vos services.
Étape 4 : Installer et configurer Fail2Ban
Fail2Ban surveille les logs système et bannit automatiquement les adresses IP qui tentent des attaques par force brute.
sudo apt install fail2ban -y
sudo systemctl enable fail2banCréez une configuration personnalisée dans /etc/fail2ban/jail.local :
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3Cette configuration bannit une IP pendant une heure après trois tentatives échouées en dix minutes.
Étape 5 : Gérer les utilisateurs et les privilèges
Le principe du moindre privilège est fondamental en sécurité informatique. Chaque utilisateur ne doit avoir accès qu’aux ressources nécessaires à ses fonctions.
Créer un utilisateur non-root pour l’administration :
sudo adduser admin_securise
sudo usermod -aG sudo admin_securiseAuditer les comptes existants :
cat /etc/passwd | grep -v nologin | grep -v falseVerrouiller les comptes inutilisés :
sudo passwd -l utilisateur_inactifConfigurer sudo pour exiger un mot de passe :
sudo visudo
# Ajouter : Defaults timestamp_timeout=5Supprimez ou désactivez tout compte qui n’est plus nécessaire.
Étape 6 : Désactiver les services inutiles
Chaque service actif représente une surface d’attaque potentielle. Identifiez et désactivez ceux dont vous n’avez pas besoin.
Lister les services actifs :
sudo systemctl list-units --type=service --state=runningDésactiver un service :
sudo systemctl stop nom_service
sudo systemctl disable nom_serviceLes services couramment inutiles sur un serveur web incluent : cups, avahi-daemon, bluetooth, rpcbind.
Vérifier les ports en écoute :
sudo ss -tulpnTout port ouvert sans justification doit vous alerter.
Étape 7 : Configurer les permissions des fichiers sensibles
Des permissions trop permissives exposent votre serveur à des escalades de privilèges.
Sécuriser les fichiers critiques :
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/passwd
sudo chmod 700 /root
sudo chmod 600 /etc/ssh/sshd_configRechercher les fichiers avec le bit SUID/SGID :
sudo find / -perm /4000 -type f 2>/dev/null
sudo find / -perm /2000 -type f 2>/dev/nullCes fichiers s’exécutent avec les privilèges de leur propriétaire. Vérifiez que chacun est légitime.
Activer le sticky bit sur /tmp :
sudo chmod +t /tmpÉtape 8 : Mettre en place une politique de mots de passe forte
Même avec l’authentification par clé SSH, les mots de passe restent utilisés pour sudo et d’autres services.
Installer et configurer libpam-pwquality :
sudo apt install libpam-pwquality -yModifiez /etc/security/pwquality.conf :
minlen = 14
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1Cette configuration exige un mot de passe d’au moins 14 caractères avec majuscules, minuscules, chiffres et caractères spéciaux.
Configurer l’expiration des mots de passe :
bash
sudo chage -M 90 -m 7 -W 14 nom_utilisateurÉtape 9 : Activer la journalisation et la surveillance
Sans journalisation, impossible de détecter une intrusion ou d’analyser un incident. Configurez une surveillance proactive.
Centraliser les logs avec rsyslog :
Vérifiez que rsyslog est actif et configurez la rotation des logs dans /etc/logrotate.conf.
Installer un système de détection d’intrusion :
sudo apt install aide -y
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.dbAIDE (Advanced Intrusion Detection Environment) crée une empreinte de vos fichiers système et détecte toute modification.
Vérification quotidienne :
sudo aide --checkSurveiller les connexions en temps réel :
sudo tail -f /var/log/auth.logConfigurez des alertes par email pour les événements critiques.
Étape 10 : Sauvegarder et tester régulièrement
Une sécurité complète inclut un plan de reprise d’activité. Les sauvegardes vous protègent contre les ransomwares et les erreurs humaines.
Automatiser les sauvegardes avec rsync :
rsync -avz --delete /var/www/ /backup/www/
rsync -avz /etc/ /backup/etc/Règles d’or des sauvegardes :
- Appliquez la règle 3-2-1 : trois copies, deux supports différents, une copie hors site
- Chiffrez vos sauvegardes sensibles
- Testez régulièrement la restauration
Scanner les vulnérabilités avec Lynis :
sudo apt install lynis -y
sudo lynis audit systemLynis analyse votre configuration et attribue un score de sécurité avec des recommandations détaillées.
LIRE AUSSI: Installation de Zabbix 8 sous Linux : Guide complet
Checklist récapitulative
| Étape | Action | Priorité |
|---|---|---|
| 1 | Mises à jour système automatiques | Critique |
| 2 | Sécurisation SSH (clés, port, restrictions) | Critique |
| 3 | Configuration du pare-feu | Critique |
| 4 | Installation de Fail2Ban | Haute |
| 5 | Gestion des utilisateurs et privilèges | Haute |
| 6 | Désactivation des services inutiles | Moyenne |
| 7 | Permissions des fichiers sensibles | Haute |
| 8 | Politique de mots de passe | Moyenne |
| 9 | Journalisation et détection d’intrusion | Haute |
| 10 | Sauvegardes et audits réguliers | Critique |
Sécuriser un serveur Linux n’est pas une tâche ponctuelle mais un processus continu. Cette checklist en dix étapes couvre les fondamentaux du hardening, mais la sécurité évolue constamment face aux nouvelles menaces. Commencez par les mesures critiques : mises à jour, SSH et pare-feu. Puis progressez méthodiquement vers une configuration durcie complète. Planifiez des audits réguliers avec des outils comme Lynis et restez informé des vulnérabilités affectant vos logiciels. Un serveur bien configuré aujourd’hui peut devenir vulnérable demain. La vigilance reste votre meilleure alliée.
