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-upgrades

Sur CentOS/RHEL :

sudo yum update -y
sudo yum install yum-cron
sudo systemctl enable yum-cron

Activez 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 no

Changer le port par défaut :

Port 2222

Utiliser uniquement le protocole SSH v2 :

Protocol 2

Limiter les utilisateurs autorisés :

AllowUsers votre_utilisateur

Désactiver l’authentification par mot de passe :

PasswordAuthentication no
PubkeyAuthentication yes

Après modification, redémarrez le service :

sudo systemctl restart sshd

L’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 enable

Sur 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 --reload

N’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 fail2ban

Cré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 = 3

Cette 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_securise

Auditer les comptes existants :

cat /etc/passwd | grep -v nologin | grep -v false

Verrouiller les comptes inutilisés :

sudo passwd -l utilisateur_inactif

Configurer sudo pour exiger un mot de passe :

sudo visudo
# Ajouter : Defaults timestamp_timeout=5

Supprimez 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=running

Désactiver un service :

sudo systemctl stop nom_service
sudo systemctl disable nom_service

Les services couramment inutiles sur un serveur web incluent : cups, avahi-daemon, bluetooth, rpcbind.

Vérifier les ports en écoute :

sudo ss -tulpn

Tout 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_config

Rechercher les fichiers avec le bit SUID/SGID :

sudo find / -perm /4000 -type f 2>/dev/null
sudo find / -perm /2000 -type f 2>/dev/null

Ces 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 -y

Modifiez /etc/security/pwquality.conf :

minlen = 14
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1

Cette 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.db

AIDE (Advanced Intrusion Detection Environment) crée une empreinte de vos fichiers système et détecte toute modification.

Vérification quotidienne :

sudo aide --check

Surveiller les connexions en temps réel :

sudo tail -f /var/log/auth.log

Configurez 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 system

Lynis 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

ÉtapeActionPriorité
1Mises à jour système automatiquesCritique
2Sécurisation SSH (clés, port, restrictions)Critique
3Configuration du pare-feuCritique
4Installation de Fail2BanHaute
5Gestion des utilisateurs et privilègesHaute
6Désactivation des services inutilesMoyenne
7Permissions des fichiers sensiblesHaute
8Politique de mots de passeMoyenne
9Journalisation et détection d’intrusionHaute
10Sauvegardes et audits réguliersCritique

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.

Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *