Appliquer les bonnes pratiques de sécurisation d'un serveur Debian : réduction de la surface d'attaque, comptes, services et audit.
Debian 13 installé avec accès root. Connaître les commandes de base Linux, systemctl et les bases de la sécurité informatique.
# Mettre à jour immédiatement sudo apt update && sudo apt upgrade -y sudo apt dist-upgrade -y sudo apt autoremove --purge -y # Activer les mises à jour automatiques de sécurité sudo apt install unattended-upgrades apt-listchanges -y sudo dpkg-reconfigure --priority=low unattended-upgrades # Vérifier la configuration cat /etc/apt/apt.conf.d/50unattended-upgrades
# Bloquer la connexion root (utiliser sudo à la place) sudo passwd -l root # Vérifier sudo grep root /etc/shadow | cut -d: -f1,2 # Le ! devant le hash indique que le compte est verrouillé
sudo apt install libpam-pwquality -y sudo nano /etc/security/pwquality.conf
# /etc/security/pwquality.conf
minlen = 12 # Longueur minimale
minclass = 3 # Au moins 3 types de caractères
maxrepeat = 3 # Max 3 caractères identiques consécutifs
dcredit = -1 # Au moins 1 chiffre
ucredit = -1 # Au moins 1 majuscule
lcredit = -1 # Au moins 1 minuscule
ocredit = -1 # Au moins 1 caractère spécial
sudo apt install libpam-faillock -y sudo nano /etc/security/faillock.conf
# /etc/security/faillock.conf
deny = 5 # Verrouiller après 5 échecs
unlock_time = 900 # Déverrouiller après 15 minutes
fail_interval = 300 # Fenêtre de comptage : 5 minutes
# Éditer sudoers avec visudo (jamais directement)
sudo visudo
# Bonnes pratiques dans sudoers : # Timeout de session sudo (5 minutes) Defaults timestamp_timeout=5 # Journaliser toutes les commandes sudo Defaults log_output Defaults logfile="/var/log/sudo.log" # Interdire sudo depuis les terminaux non-TTY Defaults requiretty # Limiter sudo à des commandes spécifiques pour un utilisateur alice ALL=(ALL) /usr/bin/systemctl restart apache2, /usr/bin/apt update
# Lister tous les services actifs systemctl list-units --type=service --state=active # Identifier les services inutiles systemctl list-units --type=service --state=running # Désactiver les services non nécessaires (exemples) sudo systemctl disable --now avahi-daemon # découverte réseau mDNS sudo systemctl disable --now cups # impression sudo systemctl disable --now bluetooth # Voir les ports ouverts ss -tlnp
sudo nano /etc/sysctl.d/99-hardening.conf
# /etc/sysctl.d/99-hardening.conf # Protection contre les attaques SYN flood net.ipv4.tcp_syncookies = 1 # Désactiver le routage IP (si pas routeur) net.ipv4.ip_forward = 0 # Ignorer les pings broadcast net.ipv4.icmp_echo_ignore_broadcasts = 1 # Protection contre le spoofing IP net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Désactiver les redirections ICMP net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 # Restreindre l'accès aux logs du noyau kernel.dmesg_restrict = 1 # Désactiver la magie SysRq kernel.sysrq = 0
# Appliquer les paramètres
sudo sysctl -p /etc/sysctl.d/99-hardening.conf
sudo apt install lynis -y # Lancer un audit complet sudo lynis audit system # Résultat : score de hardening + recommandations # Exemple : Hardening index : 65 [############# ] # Suggestions listées par catégorie # Voir uniquement les avertissements sudo lynis audit system 2>/dev/null | grep -E "Warning|Suggestion"
sudo apt install logwatch -y # Générer un rapport des logs d'aujourd'hui sudo logwatch --output stdout --format text --range today --detail high # Configurer l'envoi automatique par email sudo nano /etc/logwatch/conf/logwatch.conf # MailTo = admin@exemple.fr # Detail = Med
✅ Réponse : Verrouille le compte root (connexion directe impossible)
✅ Réponse : net.ipv4.tcp_syncookies = 1
✅ Réponse : Lynis
✅ Réponse : nano /etc/sudoers
✅ Réponse : Pour réduire la surface d'attaque — chaque service ouvert est un vecteur potentiel