🛡️ Durcissement des systèmes (Hardening)
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc | B3 — Cybersécurité des services informatiques |
| Module | M3.3 — Sécurisation des équipements et des usages |
| Durée | 7 heures |
| Prérequis | Administration Linux et Windows Server, notions de pare-feu |
🎯 Objectifs
- Comprendre le concept et les objectifs du durcissement (hardening) des systèmes
- Appliquer les guides CIS Benchmarks sur Linux et Windows
- Désactiver les services et fonctionnalités inutiles
- Configurer les mécanismes de contrôle d'accès obligatoire (SELinux, AppArmor)
- Mettre en place une politique de gestion des mises à jour et correctifs
- Auditer la configuration de sécurité d'un système
📖 Qu'est-ce que le hardening ?
Le durcissement (hardening) consiste à réduire la surface d'attaque d'un système en éliminant les vulnérabilités inutiles : services non utilisés, comptes par défaut, configurations permissives, composants superflus. L'objectif est d'appliquer le principe du moindre fonctionnalité : un système ne doit offrir que ce qui est strictement nécessaire à sa mission.
La surface d'attaque comprend :
- Les services et ports réseau exposés
- Les logiciels et composants installés
- Les comptes utilisateurs (surtout administrateurs)
- Les permissions sur les fichiers et registres
- Les configurations par défaut non sécurisées
📖 CIS Benchmarks
Le Center for Internet Security (CIS) publie des guides de configuration sécurisée (Benchmarks) pour la quasi-totalité des systèmes d'exploitation et applications. Ces guides définissent des profils :
- Level 1 : recommandations essentielles, faible impact sur les fonctionnalités
- Level 2 : recommandations renforcées, peut impacter certaines fonctionnalités
📖 Hardening Linux
1. Mettre à jour le système
# Debian/Ubuntu
apt update && apt upgrade -y
apt autoremove -y
# RHEL/CentOS/Rocky
dnf update -y
dnf autoremove -y
2. Supprimer les services inutiles
# Lister les services actifs
systemctl list-units --type=service --state=active
# Désactiver et arrêter un service inutile
systemctl disable --now cups # File d'impression
systemctl disable --now avahi-daemon # Découverte réseau
systemctl disable --now bluetooth
# Vérifier les ports en écoute
ss -tlnp
netstat -tlnp
3. Configuration SSH sécurisée
# /etc/ssh/sshd_config — Configuration durcissée
Port 2222 # Changer le port par défaut
PermitRootLogin no # Interdire connexion root
PasswordAuthentication no # Clés SSH uniquement
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
MaxAuthTries 3 # Limiter les tentatives
LoginGraceTime 20
X11Forwarding no
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
Protocol 2
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
MACs hmac-sha2-256,hmac-sha2-512
# Redémarrer SSH
systemctl restart sshd
4. Configuration du noyau (sysctl)
# /etc/sysctl.d/99-hardening.conf
# Désactiver le forwarding IP (si pas routeur)
net.ipv4.ip_forward = 0
# Protection contre le SYN flood
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
# Ignorer les ping broadcasts
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Désactiver les redirections ICMP
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Activer le filtrage des paquets source
net.ipv4.conf.all.rp_filter = 1
# Protéger contre les attaques de temps
kernel.randomize_va_space = 2
# Appliquer
sysctl -p /etc/sysctl.d/99-hardening.conf
5. Gestion des droits — umask et SUID
# Définir un umask restrictif
echo "umask 027" >> /etc/profile.d/hardening.sh
# Trouver les fichiers SUID/SGID (potentiellement dangereux)
find / -perm /4000 -type f 2>/dev/null # SUID
find / -perm /2000 -type f 2>/dev/null # SGID
# Retirer le SUID d'un binaire non nécessaire
chmod u-s /usr/bin/at
6. AppArmor (Ubuntu/Debian)
AppArmor est un système de contrôle d'accès obligatoire (MAC) qui confine les applications dans des profils définissant exactement quels fichiers, réseaux et capacités elles peuvent utiliser :
# Vérifier l'état d'AppArmor
aa-status
# Activer un profil en mode enforce
aa-enforce /etc/apparmor.d/usr.sbin.nginx
# Activer un profil en mode complain (log sans bloquer)
aa-complain /etc/apparmor.d/usr.sbin.apache2
# Créer un profil pour une application
aa-genprof /usr/local/bin/myapp
7. SELinux (RHEL/Rocky/CentOS)
# Vérifier l'état SELinux
sestatus
getenforce # Enforcing / Permissive / Disabled
# S'assurer que SELinux est en mode Enforcing
setenforce 1 # Temporaire
# Permanent : /etc/selinux/config → SELINUX=enforcing
# Résoudre les blocages SELinux
audit2allow -w -a # Afficher les raisons des blocages
audit2allow -a -M mypol # Créer un module de policy
semodule -i mypol.pp # Appliquer
# Voir les contextes SELinux
ls -Z /var/www/html/
ps auxZ | grep nginx
📖 Hardening Windows Server
# PowerShell — Hardening Windows Server
# 1. Désactiver les protocoles non sécurisés
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
Set-SmbServerConfiguration -EnableSMB1Protocol $false
# 2. Désactiver les services inutiles
Set-Service -Name "Spooler" -StartupType Disabled # File d'impression
Set-Service -Name "RemoteRegistry" -StartupType Disabled
Stop-Service -Name "Spooler" -Force
# 3. Activer Windows Defender Credential Guard
# Via GPO : Configuration ordinateur > Paramètres Windows > Sécurité >
# Protection d'appareil > Credential Guard
# 4. Activer l'audit avancé
auditpol /set /category:"Logon/Logoff" /success:enable /failure:enable
auditpol /set /category:"Account Logon" /success:enable /failure:enable
auditpol /set /subcategory:"Process Creation" /success:enable
# 5. LAPS — Local Administrator Password Solution
# Génère des mots de passe uniques pour chaque machine
Install-Module -Name LAPS -Force
Update-LapsADSchema
📖 Audit de configuration
Des outils permettent d'auditer automatiquement la configuration d'un système en la comparant aux benchmarks :
- Lynis (Linux) : audit de sécurité open source
- OpenSCAP : scanner de conformité basé sur les profils SCAP/CIS
- Microsoft Security Compliance Toolkit : baselines de sécurité Windows
- Nessus : scanner de vulnérabilités commercial (avec profils CIS)
# Lynis — Audit Linux
lynis audit system
# Rapport généré dans /var/log/lynis.log et /var/log/lynis-report.dat
# Score de durcissement affiché à la fin :
# Hardening index: 65 [############# ]
🛠️ Outils / Ressources
- CIS Benchmarks : cisecurity.org
- Lynis : audit de sécurité Linux open source
- OpenSCAP : conformité automatisée
- Microsoft Security Compliance Toolkit
- ANSSI : guides de configuration sécurisée (RHEL, Windows, etc.)
- STIGs (DISA) : guides de durcissement pour environnements gouvernementaux
📝 QCM — Testez vos connaissances
- Qu'est-ce que la surface d'attaque et comment le hardening la réduit-il ?
- Quelle est la différence entre AppArmor et SELinux ?
- Pourquoi désactiver SMBv1 est-il une priorité sur Windows Server ?
- Que signifie le paramètre
PermitRootLogin nodans la configuration SSH ? - À quoi sert LAPS (Local Administrator Password Solution) ?
- Quel outil open source permet d'auditer la sécurité d'un système Linux par rapport aux CIS Benchmarks ?
📝 Afficher les corrections
- La surface d'attaque représente l'ensemble des points d'entrée exploitables (services, ports, comptes, configurations). Le hardening la réduit en désactivant ce qui est inutile et en renforçant les configurations par défaut permissives.
- AppArmor (Ubuntu) et SELinux (RHEL) sont deux implémentations de MAC (Mandatory Access Control). AppArmor utilise des profils basés sur les chemins de fichiers ; SELinux utilise des labels (contextes) sur tous les objets du système. SELinux est généralement considéré comme plus complet mais plus complexe.
- SMBv1 est le protocole exploité par EternalBlue (WannaCry, NotPetya). Il n'offre aucune protection contre les attaques modernes (pas de signature obligatoire, vulnérabilités connues). Sa désactivation est une mesure immédiate sans impact fonctionnel dans la majorité des cas.
- Interdit toute connexion SSH directe avec le compte root. L'accès admin se fait en deux temps : connexion avec un compte utilisateur, puis élévation via sudo. Réduit le risque d'attaque par force brute sur le compte root.
- LAPS génère automatiquement un mot de passe unique et aléatoire pour le compte Administrateur local de chaque machine, stocké dans AD. Empêche le mouvement latéral via la réutilisation du même mot de passe admin local sur toutes les machines.
- Lynis — outil d'audit de sécurité open source pour Linux, génère un score de durcissement et des recommandations détaillées.
