← Retour au portail

Fiche 17 - Durcissement Debian (hardening)

Appliquer les bonnes pratiques de sécurisation d'un serveur Debian : réduction de la surface d'attaque, comptes, services et audit.

Avancé — SISR 2ème année ⏱️ 30 min 📁 Administration système

🎯 Objectifs de la fiche

  1. Principe du durcissement — Surface d'attaque, principe du moindre privilège
  2. Mises à jour et gestion des paquets — apt-get update, unattended-upgrades
  3. Sécurisation des comptes — Root, sudo, mots de passe, PAM
  4. Réduction des services — Désactiver les services inutiles
  5. Audit et surveillance — Lynis, logcheck, auditd

Prérequis

Debian 13 installé avec accès root. Connaître les commandes de base Linux, systemctl et les bases de la sécurité informatique.

ℹ️ Le durcissement (hardening) consiste à réduire la surface d'attaque d'un système en supprimant ou désactivant tout ce qui n'est pas strictement nécessaire, et en appliquant le principe du moindre privilège.

1. Mises à jour de sécurité

# 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

2. Sécurisation des comptes utilisateurs

2.1 Désactiver la connexion root directe

# 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é

2.2 Politique de mots de passe (PAM)

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

2.3 Verrouillage après tentatives échouées

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

3. Sécurisation de sudo

# É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

4. Réduction des services actifs

# 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

5. Sécurisation du noyau (sysctl)

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

6. Audit avec Lynis

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"
💡 Lynis est l'outil de référence pour auditer la sécurité d'un système Linux. Il donne un score et des recommandations concrètes. Visez un score supérieur à 70 pour un serveur de production.

7. Surveillance des logs (logwatch)

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
Que fait la commande sudo passwd -l root ?
  • Change le mot de passe root
  • Verrouille le compte root (connexion directe impossible)
  • Liste les utilisateurs sudo
  • Supprime le compte root

✅ Réponse : Verrouille le compte root (connexion directe impossible)

Quel paramètre sysctl protège contre les attaques SYN flood ?
  • net.ipv4.ip_forward = 0
  • net.ipv4.tcp_syncookies = 1
  • kernel.dmesg_restrict = 1
  • net.ipv4.conf.all.rp_filter = 1

✅ Réponse : net.ipv4.tcp_syncookies = 1

Quel outil Linux audite la sécurité du système et donne un score de hardening ?
  • nmap
  • fail2ban
  • Lynis
  • logwatch

✅ Réponse : Lynis

Quelle commande ne faut-il JAMAIS utiliser pour modifier /etc/sudoers ?
  • visudo
  • nano /etc/sudoers
  • sudo visudo
  • visudo -c

✅ Réponse : nano /etc/sudoers

Pourquoi désactiver les services réseau inutiles sur un serveur ?
  • Pour économiser de l'énergie
  • Pour réduire la surface d'attaque — chaque service ouvert est un vecteur potentiel
  • Pour améliorer les performances
  • Pour respecter les licences logicielles

✅ Réponse : Pour réduire la surface d'attaque — chaque service ouvert est un vecteur potentiel