Installation durcie d'un serveur Debian¶
1. Objectif du cours¶
Poser des bases sûres dès l'installation d'un serveur Debian (choix de version, partitionnement, paquets minimaux) puis appliquer et documenter des mesures de durcissement conformes aux recommandations ANSSI pour rendre le serveur exploitable et maintenable par l'équipe.
2. Notions et définitions essentielles¶
- Stable / oldstable / EOL : états de versions Debian (stable = support complet ; oldstable = phase LTS ; EOL = fin de support).
- FHS : Filesystem Hierarchy Standard, définit le rôle des principaux répertoires (/ , /var, /srv, /home, /tmp).
- tmpfs (/tmp sous Trixie) : système de fichiers en mémoire, fichiers vidés au reboot et après 10 jours d'inactivité.
- unattended-upgrades : paquet pour automatiser l'installation des correctifs de sécurité.
- UFW default deny : politique pare-feu bloquant tout entrant sauf règles explicites.
- Principe du moindre privilège : comptes nominatif + sudo, éviter l'usage direct de root.
- journald vs auditd : journald collecte sorties services systemd ; auditd trace événements système ciblés.
- Lynis hardening index : indicateur d'audit (score) reflétant l'application de recommandations.
- Fiche d'exploitation : document versionné qui consigne identification, partitionnement, durcissement, réseau, comptes et procédures.
3. Fonctionnement et principes¶
- Choisir la version stable (Debian 13 « Trixie ») pour garantir la durée de support sécurité ; éviter l'installation d'une version oldstable/EOL pour un déploiement neuf.
- Préparer l'environnement virtualisé : image netinst, accès console, connectivité réseau, ressources (RAM/disque) adaptées au rôle.
- Partitionner selon le FHS : isoler /var, /srv et /home pour limiter l'impact d'une saturation disque et appliquer des options de montage spécifiques (nosuid,nodev...).
- Définir le rôle du serveur avant l'installation pour minimiser la surface d'attaque (installer uniquement les paquets nécessaires).
- Automatiser les correctifs de sécurité via unattended-upgrades, en restreignant le périmètre aux dépôts -security ; vérifier que le mécanisme est réellement activé.
- Réduire la surface d'attaque : recenser et désactiver services inutiles, appliquer une politique pare-feu stricte (default deny), limiter les privilèges administratifs et renforcer la journalisation.
- Mesurer l'état avec un audit (Lynis), rattacher les actions aux axes ANSSI (réduction d'exposition, moindre privilège, traçabilité).
- Toujours prendre un snapshot préalable avant modifications intrusives et consigner chaque décision dans la fiche d'exploitation.
4. Commandes et manipulations¶
Regroupées par procédure (extraites du cours) :
- Gestion de /tmp sous Trixie :
- systemctl mask tmp.mount
- systemctl edit tmp.mount
- systemctl status tmp.mount
-
findmnt -no OPTIONS /tmp
-
Vérification APT et mises à jour initiales :
- apt update
-
apt upgrade
-
Configuration et vérification unattended-upgrades :
- apt install unattended-upgrades
- dpkg-reconfigure unattended-upgrades
- ls /var/log/unattended-upgrades/
-
cat /var/log/unattended-upgrades/unattended-upgrades.log
-
Vérifications post-installation / snapshot :
- lsblk
-
df -h
-
Recensement et désactivation de services :
- ss -tulpn
- systemctl status
-
systemctl disable --now
-
Pare-feu UFW (politique de départ) :
- ufw default deny incoming
- ufw default allow outgoing
- ufw allow 22/tcp
- ufw enable
-
ufw status verbose
-
Audit avec Lynis :
- apt install lynis
- lynis audit system
- less /var/log/lynis.log
-
grep -E 'WARNING|SUGGESTION' /var/log/lynis-report.dat
-
Paramètres noyau persistants sous Trixie :
- créer /etc/sysctl.d/99-hardening.conf
-
sudo sysctl --system
-
Édition sécurisée de sudoers :
- visudo
(Exécuter ces commandes en root ou via sudo.)
5. Sécurité et bonnes pratiques¶
- Toujours choisir la version stable pour un nouveau déploiement ; documenter la décision.
- Vérifier prérequis avant installation : image netinst, console hyperviseur, accès réseau.
- Prendre un snapshot après le premier démarrage réussi avant toute opération de durcissement.
- Limiter unattended-upgrades au dépôt -security et vérifier l'activation réelle (présence des fichiers de configuration).
- Ne jamais inscrire secrets (mots de passe, clés privées, tokens) dans la fiche d'exploitation ; indiquer uniquement l'emplacement dans un gestionnaire de secrets dédié.
- Avant d'activer UFW à distance, s'assurer que la règle SSH est en place pour éviter de couper l'accès.
- Placer les paramètres sysctl persistants dans /etc/sysctl.d/ sous Trixie (sysctl.conf ignoré).
6. Points essentiels à retenir pour le TSSR¶
- Installer Debian 13 « Trixie » pour un nouveau serveur ; éviter oldstable/EOL.
- Isoler /var, /srv et /home pour prévenir les indisponibilités dues à la saturation disque.
- Ne sélectionner que les paquets nécessaires : SSH + utilitaires, exclure environnement graphique et services non requis.
- Créer comptes nominatif(s) administrateur(s) et appliquer sudo ; désactiver connexion root directe.
- Activer unattended-upgrades pour les correctifs de sécurité et vérifier son déclenchement quotidien.
- Appliquer UFW en politique default deny incoming, ouvrir uniquement les ports nécessaires.
- Renforcer la traçabilité : journald pour services, auditd pour événements ciblés.
- Mesurer l'effort de durcissement avec Lynis et interpréter le score avec le contexte.
- Documenter chaque mesure et justification dans une fiche d'exploitation versionnée.
- Prendre des snapshots et planifier rollback avant modifications intrusives.
7. Tableau récapitulatif¶
| Élément | Rôle principal | Remarque clé |
|---|---|---|
| Debian stable vs oldstable vs EOL | Durée de support et réception des correctifs | Installer stable pour nouveaux déploiements |
| /var séparé | Contenir journaux et données variables | Mesure la plus rentable pour éviter indisponibilité |
| /tmp (tmpfs sous Trixie) | Fichiers temporaires en mémoire | Attention consommation RAM ; fichiers vidés au reboot |
| UFW default deny | Filtrage des flux entrants | Bloque tout entrant sauf règles explicites |
| journald vs auditd | Supervision générale vs traçabilité fine | Les deux sont complémentaires pour analyser incidents |
8. Vérifications pratiques¶
- Vérifier que le système démarre après retrait de l'ISO et que la console permet la connexion avec le compte administrateur.
- Confirmer l'existence d'un snapshot initial sur l'hyperviseur avant durcissement.
- Contrôler le schéma de partitionnement et l'espace disponible sur chaque point de montage documenté.
- Confirmer l'accessibilité des dépôts APT et l'application des mises à jour initiales.
- Vérifier que unattended-upgrades produit des journaux et a effectué des exécutions.
- S'assurer qu'aucun service inutile n'écoute sur des ports non documentés et que les services nécessaires démarrent au boot.
- Vérifier que la politique pare-feu correspond à la fiche (default deny incoming et seuls ports nécessaires ouverts).
- Consulter le rapport Lynis pour identifier warnings/suggestions restants et lier les écarts aux axes ANSSI.
- Valider la persistance des paramètres noyau via les fichiers présents dans /etc/sysctl.d/.
9. Flashcards Anki¶
Quelle version Debian est recommandée pour un nouveau déploiement serveur ? :: Debian 13 « Trixie » (version stable actuelle). Que définit le FHS ? :: La structure et le rôle des répertoires principaux d'un système Linux conforme. Pourquoi isoler /var sur une partition dédiée ? :: Pour éviter que la croissance des journaux/données variables ne remplisse / et n'indisponibilise le système. Quel comportement a /tmp par défaut sous Debian 13 Trixie ? :: /tmp est monté en tmpfs, fichiers supprimés après 10 jours d'inactivité et au redémarrage. Quel paquet automatise l'installation des correctifs de sécurité ? :: unattended-upgrades. Que signifie la posture UFW "default deny incoming" ? :: Bloquer tout trafic entrant sauf règles explicitement autorisées. Quelle différence principale entre journald et auditd ? :: journald collecte sorties services systemd ; auditd trace événements système ciblés par règles. Que mesure le Lynis "hardening index" ? :: Un score indiquant l'application des recommandations de durcissement par l'audit Lynis. Où doivent être placés les paramètres sysctl persistants sous Trixie ? :: Dans /etc/sysctl.d/ (sysctl.conf est ignoré). Que doit contenir la fiche d'exploitation concernant les secrets ? :: Indiquer où se trouvent les secrets dans un gestionnaire dédié, sans y inscrire les secrets.