🎓 SIO2 · semestre 3⏱️ 5 h (cours + TP)🎯 Bloc 3 – CybersécuritéRéduire la surface d'attaque d'un serveur Debian et d'un serveur Windows en suivant un référentiel, puis mesurer le résultat et surveiller les journaux de sécurité.
🎯 Objectifs
Expliquer la surface d'attaque et les principes de moindre service, de moindre privilège et de défense en profondeur.
S'appuyer sur un référentiel (ANSSI, CIS) pour décider quoi durcir.
Durcir un serveur Debian : mises à jour automatiques, comptes et sudo, SSH par clés, Fail2ban, pare-feu local.
Durcir un serveur Windows : rôles, comptes, stratégies de sécurité, pare-feu, Defender, LAPS.
Mesurer le niveau de durcissement (Lynis, PingCastle) et surveiller les événements de sécurité.
Test express des prérequis 3 questions · 2 minutes · conseillé avant de commencer
1. Quelle commande Debian liste les services qui écoutent sur le réseau ?
ss -tlnp affiche les ports TCP en écoute (listening) avec le programme qui les ouvre. À revoir : B2-14 · Debian 13.
2. Une vulnérabilité, c'est…
A est une menace (un attaquant), B un impact. Durcir, c'est réduire le nombre de vulnérabilités exploitables. À revoir : B3-01 · Fondamentaux.
3. Pourquoi ne travaille-t-on pas en permanence avec un compte administrateur ?
C'est le principe du moindre privilège : on n'utilise les droits d'administration que le temps d'une tâche. À revoir : B3-05 · Authentification.
Brocéliande Logistique (entreprise fictive) vient de mettre en service SRV-LINUX, un serveur Debian 13 qui héberge l'intranet, et administre ses comptes sur SRV-01, un Windows Server 2025 contrôleur de domaine. Les deux ont été installés « par défaut », avec tout ce que proposait l'assistant.
En une nuit, le journal de SRV-LINUX enregistre plus de 3 000 tentatives de connexion SSH sur le compte root, et le prestataire de sauvegarde signale que la base de données écoute sur toutes les interfaces. Le responsable te confie le durcissement des deux serveurs : supprimer ce qui ne sert pas, verrouiller ce qui reste, et prouver le résultat par une mesure avant et après.
Le coursLa surface d'attaque et les référentiels, puis le durcissement de Debian et de Windows Server, la mesure du résultat et la surveillance des journaux.
1. La surface d'attaque d'un serveur
Un attaquant ne peut exploiter que ce qui existe : un service qui écoute sur le réseau, un compte qui peut se connecter, un logiciel installé mais jamais mis à jour. L'ensemble de ces points d'entrée forme la surface d'attaque. Plus elle est grande, plus il y a de chances qu'une faille y soit présente.
Durcissement (en anglais hardening) : ensemble des réglages qui réduisent la surface d'attaque d'un système et limitent les dégâts d'une compromission : supprimer ou désactiver le superflu, restreindre les accès, appliquer les mises à jour, journaliser. On durcit avant la mise en production, puis on contrôle régulièrement que le niveau est maintenu.
Clique sur chaque porte ouverte de SRV-LINUX pour voir le risque et la mesure de durcissement.
Choisis un port : le risque et la mesure s'affichent ici.
Chaque port ouvert est une porte : on garde celles qui servent, on verrouille, on mure les autres.
Le durcissement ne concerne pas que le réseau. La surface d'attaque comprend aussi :
Élément
Exemple de risque
Mesure de durcissement
Services réseau
Base de données joignable depuis tout le réseau
Supprimer, désactiver ou n'écouter que sur l'interface utile
Comptes
Compte root ou « Administrateur » ciblé par force brute
Connexion directe interdite, comptes nominatifs, mots de passe robustes, MFA
Logiciels
Faille connue non corrigée (CVE)
Mises à jour automatiques de sécurité, logiciels inutiles désinstallés
Droits
Utilisateur ordinaire capable de lire /etc/shadow ou d'installer un logiciel
Journalisation des événements de sécurité, centralisation, alertes
2. Les principes et les référentiels
Durcir ne s'improvise pas : on suit des principes simples et un référentiel reconnu, qui liste les réglages à appliquer et permet de justifier ses choix devant un responsable ou un jury.
Moindre serviceN'installer et n'activer que ce qui est nécessaire au rôle du serveur. Un serveur web n'a pas besoin d'interface graphique, d'imprimante partagée ni de serveur de messagerie.
Moindre privilègeChaque compte, chaque service n'a que les droits dont il a besoin. On administre avec un compte nominatif qui élève ses droits ponctuellement (sudo, compte d'administration séparé), jamais en session root permanente.
Défense en profondeurPlusieurs barrières indépendantes : pare-feu réseau, pare-feu local, authentification forte, mises à jour, journalisation. Si l'une cède, les autres tiennent encore.
TraçabilitéTout accès et toute action d'administration laissent une trace horodatée, conservée hors du serveur : sans traces, impossible de comprendre une attaque.
Pour bien comprendre : le château fort
Un château médiéval ne compte pas sur un seul mur : il y a des douves, une enceinte extérieure, une enceinte intérieure et un donjon. Un assaillant qui franchit la première ligne tombe sur la suivante : c'est la défense en profondeur.
Le bâtisseur ne perce que les portes indispensables, chacune gardée : c'est le moindre service. Et le garde de la cuisine n'a pas la clé du trésor : c'est le moindre privilège.
Pour un serveur, les enceintes sont le pare-feu réseau, le pare-feu local, les services réduits, l'authentification forte et le chiffrement des données.
2.1 Les référentiels à connaître
Référentiel
Éditeur
Contenu
Usage
Guide d'hygiène informatique
ANSSI
42 mesures essentielles pour toute organisation
Point de départ, vision d'ensemble
Recommandations de configuration d'un système GNU/Linux
ANSSI
Règles classées par niveau : minimal, intermédiaire, renforcé, élevé
Durcir Debian selon le niveau de sensibilité
Recommandations relatives à l'administration sécurisée et à l'Active Directory
ANSSI
Comptes d'administration, modèle en niveaux (tiering), postes dédiés
Sécuriser le domaine Windows
CIS Benchmarks
Center for Internet Security
Un document par système (Debian, Windows Server 2025…), niveau 1 (de base) et niveau 2 (renforcé), chaque règle avec sa justification et son contrôle
Liste de contrôle très détaillée, utilisée par les outils d'audit
Un durcissement se justifie : chaque réglage appliqué est rattaché à une règle d'un référentiel (« ANSSI GNU/Linux, niveau minimal », « CIS Windows Server 2025, niveau 1 »), et chaque écart volontaire est noté avec sa raison. C'est ce document que demandent un auditeur et le jury de l'épreuve E6.
3. Debian : mises à jour, services et comptes
Sur Debian, le durcissement commence toujours par trois chantiers : garder le système à jour sans dépendre d'une intervention humaine, retirer ce qui ne sert pas, et organiser les comptes pour que personne ne travaille en root.
3.1 Les mises à jour de sécurité automatiques
La plupart des attaques réussies exploitent une faille déjà corrigée par l'éditeur, mais pas encore installée. Le paquet unattended-upgrades installe chaque jour, sans intervention, les mises à jour de la branche sécurité de Debian.
Debian 13 terminalSRV-LINUX
$ sudo apt update && sudo apt full-upgrade # d'abord rattraper le retard $ sudo apt install unattended-upgrades apt-listchanges $ sudo dpkg-reconfigure -plow unattended-upgrades # répondre « Oui » : active le passage quotidien $ sudo unattended-upgrade --dry-run --debug # simulation : ce qui serait installé $ less /var/log/unattended-upgrades/unattended-upgrades.log # historique des installations
Une mise à jour du noyau ou de la bibliothèque libc n'est prise en compte qu'après un redémarrage. La commande needrestart indique les services à relancer ; en production, on planifie un créneau de redémarrage plutôt que d'activer le redémarrage automatique.
3.2 Moindre service : retirer le superflu
Lister ce qui écoute : sudo ss -tlnp (TCP) et sudo ss -ulnp (UDP). Chaque ligne doit être justifiée par le rôle du serveur.
Lister les services actifs : systemctl list-units --type=service --state=running.
Supprimer ce qui ne sert pas (sudo apt purge rpcbind) ou, à défaut, l'arrêter et l'empêcher de redémarrer (sudo systemctl disable --now cups).
Restreindre l'écoute des services locaux : une base de données utilisée par le serveur lui-même écoute sur 127.0.0.1 seulement.
3.3 Les comptes et sudo
On administre avec un compte nominatif (adm-lmartin) membre du groupe sudo, et on laisse le compte root sans connexion directe. Chaque commande passée avec sudo est journalisée avec le nom de son auteur : la traçabilité est assurée.
Debian 13 terminalSRV-LINUX · compte d'administration nominatif
# adduser adm-lmartin # mot de passe long, propre à cette personne # usermod -aG sudo adm-lmartin # le groupe sudo a le droit d'élever ses privilèges # passwd -l root # verrouille le mot de passe de root (sudo reste possible) # getent group sudo # qui peut devenir administrateur ? # journalctl _COMM=sudo --since today # qui a fait quoi avec sudo aujourd'hui
Avant de verrouiller root ou d'interdire les mots de passe en SSH, vérifie que ton compte nominatif fonctionne : ouvre une seconde session, teste sudo -v, et garde la première ouverte. Sinon, seule la console Proxmox de la VM permettra de récupérer la main.
4. Durcir SSH et bloquer la force brute
SSH est la porte d'administration des serveurs Linux : elle est scannée en permanence par des robots qui essaient des milliers de couples identifiant/mot de passe. Trois mesures la rendent quasiment imprenable : l'authentification par clé, l'interdiction de root et le bannissement automatique des adresses qui insistent.
4.1 L'authentification par clé
Avec une paire de clés, le serveur envoie un défi que seule la clé privée de l'administrateur peut signer. Aucun mot de passe ne circule, et deviner une clé ed25519 est hors de portée.
Windows PowerShellPC-ADMIN · poste de l'administrateur
PS> ssh-keygen -t ed25519 -C "adm-lmartin@broceliande" # saisir une phrase de passe PS> type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh adm-lmartin@172.16.50.11 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys" PS> ssh adm-lmartin@172.16.50.11 # la phrase de passe de la clé est demandée, plus le mot de passe du compte
Depuis un poste Linux, la copie se fait en une commande : ssh-copy-id adm-lmartin@172.16.50.11.
4.2 La configuration du serveur SSH
On ne modifie pas le fichier principal : on ajoute un fichier dans /etc/ssh/sshd_config.d/, lu en premier. Ainsi, une mise à jour du paquet ne remplace pas nos réglages.
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
AllowGroups ssh-admins
X11Forwarding no
PermitRootLogin noLe compte root, que tous les robots essaient en premier, ne peut plus se connecter en SSH.
PasswordAuthentication noPlus aucune connexion par mot de passe : seules les clés sont acceptées, la force brute devient inutile. KbdInteractiveAuthentication no ferme la variante « clavier interactif ».
MaxAuthTries 3 · LoginGraceTime 30Trois essais par connexion et 30 secondes pour s'authentifier : les tentatives coûtent plus cher à l'attaquant.
AllowGroups ssh-adminsSeuls les membres de ce groupe peuvent ouvrir une session SSH, même si d'autres comptes existent sur le serveur.
Debian 13 terminalappliquer sans se couper la main
Fail2ban lit les journaux, compte les échecs d'authentification par adresse IP et, au-delà d'un seuil, ajoute une règle de pare-feu qui bloque cette adresse pendant un temps donné.
Fail2ban ne remplace pas l'authentification par clé : il réduit le bruit et ralentit les attaques.
Debian n'écrit plus /var/log/auth.log par défaut : les journaux sont dans journald. Sur Debian 13, le paquet fail2ban règle déjà la prison sshd sur le journal systemd ; le piège vient d'un jail.local repris d'un serveur Debian 12 ou modifié à la main (backend = auto, logpath = /var/log/auth.log) : Fail2ban cherche alors un fichier qui n'existe pas et ne bannit personne. Écrire backend = systemd dans la prison reste une bonne pratique. Contrôle avec sudo fail2ban-client status sshd : le compteur « Currently failed » doit bouger quand tu rates une connexion.
Debian 13 terminalinstaller et contrôler Fail2ban
$ sudo apt install fail2ban python3-systemd $ sudo systemctl restart fail2ban $ sudo fail2ban-client status sshd # échecs en cours, adresses bannies $ sudo fail2ban-client set sshd unbanip 172.16.10.105 # débannir un collègue étourdi
5. Le pare-feu local du serveur
Le pare-feu réseau (pfSense, fiche B3-09) filtre entre les zones. Le pare-feu local protège le serveur lui-même, y compris contre une machine compromise du même VLAN : c'est une enceinte de plus. Sur Debian, UFW (Uncomplicated Firewall) écrit les règles du noyau (nftables) avec une syntaxe simple.
La politique de base est toujours la même : tout refuser en entrée, puis ouvrir uniquement ce qui sert, au plus près de qui en a besoin.
Debian 13 terminalSRV-LINUX · pare-feu local
$ sudo apt install ufw $ sudo ufw default deny incoming # politique : tout est refusé en entrée… $ sudo ufw default allow outgoing $ sudo ufw allow from 172.16.99.0/24 to any port 22 proto tcp # SSH depuis le VLAN de gestion seulement $ sudo ufw allow 443/tcp # l'intranet, pour tout le monde $ sudo ufw enable # en dernier, une fois SSH autorisé $ sudo ufw status numbered
SRV-LINUX doit aussi accepter le HTTP (port 80) de tous les postes, le SSH uniquement depuis PC-ADMIN (172.16.99.20), et refuser tout le reste. Complète les commandes UFW, puis vérifie chaque ligne avec ✓.
$
$
$
$
6. Durcir Windows Server
Les principes sont identiques, les outils changent. Sur un contrôleur de domaine comme SRV-01, le durcissement protège aussi tout l'Active Directory : un attaquant qui le compromet devient maître de tous les postes et de tous les comptes.
Chantier
Mesure
Où ?
Moindre service
N'installer que les rôles utiles ; préférer l'installation Server Core (sans bureau) pour les nouveaux serveurs
Gestionnaire de serveur → Supprimer des rôles
Mises à jour
Mises à jour mensuelles (« Patch Tuesday ») installées et testées, via WSUS ou Windows Update
Paramètres → Windows Update, ou GPO
Comptes
Comptes d'administration nominatifs et séparés du compte de travail ; compte « Administrateur » intégré peu utilisé ; groupe « Admins du domaine » réduit au minimum
Utilisateurs et ordinateurs Active Directory
Mots de passe et verrouillage
Longueur minimale de 12 à 14 caractères, verrouillage du compte après plusieurs échecs
GPO « Default Domain Policy » → Stratégies de comptes
Administrateurs locaux
Windows LAPS : mot de passe administrateur local différent sur chaque machine, renouvelé automatiquement et stocké dans l'AD
GPO « LAPS » + module PowerShell LAPS
Pare-feu
Pare-feu Windows actif sur les trois profils (domaine, privé, public), règles entrantes limitées
Pare-feu Windows Defender avec fonctions avancées de sécurité
Antivirus
Microsoft Defender actif et à jour, protection en temps réel, protection contre la falsification
Sécurité Windows / Get-MpComputerStatus
Protocoles anciens
SMBv1 absent, NTLMv1 refusé, RDP avec authentification au niveau du réseau (NLA)
GPO « Options de sécurité »
Audit
Stratégie d'audit avancée : ouvertures de session, gestion des comptes, modifications de groupes
GPO → Configuration de stratégie d'audit avancée
LAPS casse le mouvement latéral : chaque machine a son propre secret, renouvelé automatiquement.
Windows Server 2025 PowerShell (administrateur)SRV-01 · contrôles rapides
PS> Get-WindowsFeature | Where-Object Installed # rôles et fonctionnalités réellement installés PS> Get-NetFirewallProfile | Format-Table Name, Enabled # les 3 profils doivent être True PS> Get-MpComputerStatus | Select-Object RealTimeProtectionEnabled, AntivirusSignatureLastUpdated PS> Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol # doit être False PS> Get-ADGroupMember "Admins du domaine" # qui a tous les droits ? PS> Get-LapsADPassword -Identity PC-COMPTA -AsPlainText # mot de passe local géré par LAPS
Un poste compromis ne doit jamais voir passer les identifiants d'un administrateur du domaine.
L'ANSSI recommande de séparer l'administration en niveaux : le niveau 0 (contrôleurs de domaine, AD), le niveau 1 (serveurs), le niveau 2 (postes). Un compte d'administration d'un niveau ne se connecte jamais sur une machine d'un niveau inférieur : ainsi, un poste de travail compromis ne livre pas les identifiants d'un administrateur du domaine.
7. Mesurer le résultat et surveiller
Un durcissement qui ne se mesure pas ne se pilote pas. On utilise des outils d'audit avant et après les réglages, puis on surveille les journaux pour repérer une attaque ou un retour en arrière.
7.1 Les outils d'audit
Outil
Cible
Ce qu'il donne
Lynis
Linux
Des centaines de contrôles, une liste d'avertissements et de suggestions, et un indice de durcissement sur 100
PingCastle
Active Directory
Un rapport HTML et un score de risque (plus il est bas, mieux c'est) : comptes privilégiés, mots de passe, délégations, anciens protocoles
CIS-CAT, OpenSCAP
Linux et Windows
Comparaison automatique avec un CIS Benchmark ou un profil de sécurité
Microsoft Security Compliance Toolkit
Windows
Modèles de GPO de sécurité recommandés par Microsoft, à comparer avec la configuration réelle
Debian 13 terminalaudit Lynis
$ sudo apt install lynis $ sudo lynis audit system # 2 à 3 minutes ; résultat détaillé à l'écran $ sudo grep hardening_index /var/log/lynis-report.dat # l'indice, à noter avant et après $ sudo grep -E '^(warning|suggestion)' /var/log/lynis-report.dat | head # les pistes d'amélioration
Exemple de résultat : l'indice n'est pas une note absolue, mais il montre la progression et sert de preuve.
7.2 Les événements de sécurité à surveiller
Système
Événement
Ce qu'il peut révéler
Debian
Failed password, Invalid user (journal de sshd)
Force brute, recherche de comptes
Debian
Commandes sudo (journalctl _COMM=sudo)
Action d'administration inattendue
Windows
4625 : échec d'ouverture de session
Force brute, mot de passe testé
Windows
4624 : ouverture de session réussie
Connexion à une heure ou depuis un poste inhabituel
Windows
4720 : compte créé ; 4728 / 4732 : membre ajouté à un groupe
Compte caché, élévation de privilèges
Windows
4740 : compte verrouillé
Attaque en cours ou utilisateur bloqué
Windows
1102 : journal de sécurité effacé
Un attaquant efface ses traces : alerte immédiate
Les journaux d'un serveur compromis ne sont plus fiables : on les envoie en continu vers un serveur de journalisation (syslog, fiche B2-29) ou un SIEM comme Wazuh (fiche B3-13), où l'attaquant ne peut pas les effacer. Le durcissement se mesure avant et après, et se contrôle ensuite à intervalle régulier.
8. Vérifier et dépanner
Un durcissement mal appliqué a deux conséquences : il bloque les administrateurs (le cas le plus fréquent) ou il ne protège pas alors qu'on le croit actif. On vérifie donc toujours deux choses : l'accès légitime fonctionne, et l'accès illégitime échoue.
Symptôme
Cause probable
Vérification et correction
Permission denied (publickey) après durcissement SSH
Clé publique absente, ou droits trop ouverts sur ~/.ssh (sshd l'ignore)
Console Proxmox de la VM, ufw allow …22… puis ufw status
Fail2ban ne bannit jamais
Il lit un fichier journal absent
backend = systemd dans la prison sshd ; fail2ban-client status sshd
Un collègue est banni
Mots de passe ratés depuis son poste
fail2ban-client set sshd unbanip … ; ajouter le VLAN de gestion à ignoreip
sshd -t affiche une erreur
Faute de frappe dans le fichier de configuration
Corriger avant de recharger : sinon le service ne redémarre pas
Mot de passe LAPS introuvable
GPO LAPS non appliquée à l'OU de la machine
gpresult /r sur la machine, lien de la GPO, Get-LapsADPassword
8.1 Entraîne-toi : les tickets du support
Tu es de permanence au support de Brocéliande Logistique pendant la semaine de durcissement. Six tickets arrivent : lis le message, observe le relevé, puis choisis la cause.
File d'attente du support6 tickets · un à la fois · l'explication s'affiche après ta réponse
Ticket n° 1De : collègue de l'équipe systèmePriorité haute
« J'ai activé le pare-feu sur SRV-LINUX il y a cinq minutes et ma session SSH s'est figée. Impossible de me reconnecter. L'intranet, lui, fonctionne. »
Cause : la politique refuse tout en entrée ; seul le 443 a été ouvert, donc SSH est bloqué. Correction : se connecter par la console Proxmox de la VM, puis sudo ufw allow from 172.16.99.0/24 to any port 22 proto tcp. Règle d'or : autoriser l'accès d'administration avantufw enable.
« Fail2ban est installé sur SRV-LINUX depuis une semaine, avec le jail.local recopié de notre ancien serveur Debian 12, mais il n'a jamais banni personne, alors que les robots tapent toujours à la porte. »
Debian 13 relevéjail.local repris de Debian 12
$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log
$ ls /var/log/auth.log
ls: cannot access '/var/log/auth.log': No such file or directory
Quelle est la cause ?
Cause : « Total failed : 0 » et une liste de fichiers qui pointe vers un fichier absent : Fail2ban ne voit aucune tentative. Le jail.local hérité de Debian 12 force la lecture de /var/log/auth.log et remplace le réglage systemd fourni par le paquet Debian 13. Correction : retirer ce logpath et écrire backend = systemd dans la section [sshd] de /etc/fail2ban/jail.local, installer python3-systemd, puis sudo systemctl restart fail2ban.
Ticket n° 3De : administrateurPriorité haute
« Depuis que les mots de passe sont interdits en SSH, je ne peux plus me connecter à SRV-LINUX avec ma clé. Elle fonctionne pourtant sur les autres serveurs. »
Debian 13 console Proxmox
$ ls -ld /home/adm-lmartin/.ssh /home/adm-lmartin/.ssh/authorized_keys
drwxrwxrwx 2 adm-lmartin adm-lmartin 4096 .ssh
-rw-rw-rw- 1 adm-lmartin adm-lmartin 104 authorized_keys
$ journalctl -u ssh | tail -1
Authentication refused: bad ownership or modes for directory /home/adm-lmartin/.ssh
Quelle est la cause ?
Cause : n'importe qui pouvant écrire dans authorized_keys pourrait y ajouter sa propre clé ; sshd refuse donc ces fichiers (option StrictModes). Correction :chmod 700 ~/.ssh et chmod 600 ~/.ssh/authorized_keys.
Ticket n° 4Alerte de la supervisionPriorité haute
« Plus de 2 000 événements 4625 en une heure sur SRV-01, pour les comptes Administrateur, admin, compta… tous depuis la même adresse. »
Observateur d'événements SRV-01 · Sécurité
ID 4625 Échec d'ouverture de session d'un compte
Nom du compte : Administrateur
Type d'ouverture de session : 10 (RemoteInteractive)
Adresse réseau source : 172.16.70.142
Que se passe-t-il et que faut-il corriger en priorité ?
Cause : type 10 = connexion Bureau à distance, des milliers de comptes essayés depuis 172.16.70.142, une adresse du VLAN 70 INVITES. Corrections : filtrer le RDP (pare-feu Windows et réseau : VLAN 99 seulement), stratégie de verrouillage des comptes, NLA activée, et traiter l'incident (poste invité à identifier, fiche B3-16).
Ticket n° 5Alerte du SIEMCritique
« Événement 1102 sur SRV-01 à 3 h 12 du matin, juste après une ouverture de session du compte svc-sauvegarde. »
Observateur d'événements SRV-01
ID 4624 Ouverture de session réussie · svc-sauvegarde · 03:11
ID 1102 Le journal d'audit a été effacé · svc-sauvegarde · 03:12
Comment interpréter ces deux événements ?
Cause : un logiciel de sauvegarde n'efface jamais le journal de sécurité ; la rotation normale ne génère pas l'événement 1102. Un attaquant qui possède le mot de passe de svc-sauvegarde efface ses traces. Réaction : isoler, désactiver le compte, conserver les preuves (copie du SIEM, où les événements sont déjà partis) et suivre la procédure d'incident (fiche B3-16).
Ticket n° 6De : technicien de proximitéPriorité basse
« Je dois me connecter en administrateur local sur PC-PAIE, mais aucun mot de passe LAPS n'apparaît dans l'AD pour cette machine. Pour PC-COMPTA, ça marche. »
Cause : une GPO ne peut pas être liée au conteneur par défaut CN=Computers ; PC-PAIE ne reçoit donc pas la stratégie LAPS. Correction : déplacer l'ordinateur dans l'OU des postes, puis gpupdate /force sur PC-PAIE ; le mot de passe apparaît au cycle suivant. Bonne pratique : rediriger les nouveaux ordinateurs vers une OU avec redircmp.
9. À l'examen et en entreprise
Prouver le durcissement : une mesure avant et après (indice Lynis, score PingCastle, liste des ports ouverts) vaut mieux que dix captures de configuration.
Justifier chaque réglage par un référentiel (ANSSI, CIS) et noter les écarts volontaires : « SSH ouvert depuis le VLAN 99 uniquement, besoin d'administration à distance ».
Montrer qu'on ne s'est pas coupé la main : procédure de secours (console Proxmox, compte de secours documenté, coffre-fort de mots de passe).
À l'écrit, les sujets demandent souvent d'analyser un extrait de journal (4625 en rafale, Failed password) et de proposer des mesures classées par priorité.
10. L'essentiel
Durcir = réduire la surface d'attaque : services, comptes, logiciels, droits et interfaces exposés.
Trois principes : moindre service, moindre privilège, défense en profondeur.
On s'appuie sur un référentiel (ANSSI, CIS) et on justifie chaque écart.
Debian : unattended-upgrades, services inutiles purgés, comptes nominatifs avec sudo.
SSH : clés ed25519, PermitRootLogin no, PasswordAuthentication no, AllowGroups ; tester avec sshd -t.
Fail2ban bannit une adresse après maxretry échecs dans findtime, pendant bantime ; sur Debian 13, backend = systemd.
Pare-feu local : tout refuser en entrée, ouvrir le strict nécessaire, SSH avantufw enable.
Windows : rôles minimaux, comptes d'administration séparés, verrouillage, LAPS, pare-feu sur 3 profils, Defender, SMBv1 absent.
Mesurer avant et après : Lynis (Linux), PingCastle (AD).
Surveiller 4625, 4720, 4732, 4740, 1102 et les échecs SSH, journaux envoyés hors du serveur.
La fiche en une image : à refaire de mémoire, sur une feuille, avant de passer aux exercices.
Tout cela tient sur une page : utilise le bouton Mémo à imprimer en haut de la fiche.
La pratiqueLe quiz noté pour vérifier tes acquis, les exercices à rendre à ton professeur, puis le TP au labo sur tes machines virtuelles.
11. Quiz noté
8 questions · 10 minutesRéponds à toutes les questions, puis valide. Seule ta première tentative est enregistrée : elle compte dans ton suivi. Ensuite, tu peux t'entraîner autant que tu veux.
1. Quelle mesure réduit le plus directement la surface d'attaque d'un serveur ?
2. Que provoque PasswordAuthentication no dans la configuration de sshd ?
3. Avec maxretry = 3, findtime = 10m et bantime = 1h, que fait Fail2ban ?
4. Avant de recharger SSH après une modification, que faut-il faire ?
5. À quoi sert Windows LAPS ?
6. Que signale l'événement Windows 4625 ?
7. Que mesure l'outil Lynis ?
8. Pourquoi envoyer les journaux de sécurité vers un serveur dédié ?
12. Exercices : à toi de répondre
Écris ta réponse sous chaque énoncé et envoie-la à ton professeur. Quand il l'a validée, le corrigé s'affiche à la place du cadenas ; s'il te la renvoie « à revoir », lis son commentaire et corrige.
Exercice 1 – Comprendre (SIO2)
Voici la sortie de sudo ss -tlnp sur un serveur Debian dont le seul rôle est de publier l'intranet en HTTPS. Pour chaque ligne, indique si tu gardes, restreins ou supprimes, et pourquoi.
Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.
Exercice 2 – Configurer (SIO2)
Écris le contenu du fichier de durcissement SSH et de jail.local pour respecter ces exigences : connexion par clé seulement, root interdit, groupe autorisé ssh-admins, 3 essais maximum ; bannissement de 2 heures après 4 échecs en 15 minutes, sauf pour le VLAN de gestion 172.16.99.0/24.
Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.
Exercice 3 – Dépanner (SIO2)
Après le passage de ton collègue, plus personne ne peut ouvrir de session SSH sur SRV-LINUX, ni par mot de passe ni par clé, et systemctl status ssh affiche failed. Le fichier 90-durcissement.conf contient la ligne PermitRootLogin flase. Explique ce qui s'est passé, comment reprendre la main et comment éviter que cela se reproduise.
Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.
Exercice 4 – Concevoir (SIO2)
Le responsable de Brocéliande Logistique te demande un plan de durcissement pour SRV-01 (Windows Server 2025, AD, DNS, DHCP) et SRV-LINUX (Debian 13, intranet), en huit mesures classées par priorité, chacune justifiée par un risque et rattachée à un référentiel. Indique aussi comment tu mesureras le résultat.
Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.
13. Au labo : durcir SRV-LINUX et SRV-01, mesure à l'appui
Objectif
Durcir les deux serveurs de ton pool Proxmox en suivant la fiche, et prouver le résultat : indice Lynis avant et après, ports ouverts avant et après, tests d'accès légitimes et illégitimes. Durée : 2 h 30. Tes machines et leurs adresses sont dans Mes serveurs et VM ; les adresses ci-dessous sont celles de Brocéliande, remplace-les par les tiennes.
Machine
Système
Rôle dans le TP
SRV-LINUX
Debian 13
Serveur à durcir (exemple : 172.16.50.11)
SRV-01
Windows Server 2025
Contrôleur de domaine à contrôler et durcir
PC-ADMIN
Windows 11 Pro
Poste d'administration : client SSH, génération de la clé
Console Proxmox
–
Accès de secours si tu te bloques
Ce que tu vas obtenir
Une mesure avant/après : indice Lynis et liste des ports ouverts.
Des mises à jour de sécurité qui s'installent seules.
Un accès SSH par clé seulement, root interdit, protégé par Fail2ban et le pare-feu local.
Un contrôleur de domaine vérifié : pare-feu, Defender, SMBv1, comptes d'administration, audit.
1 Mesurer l'état de départ
Avant de toucher à quoi que ce soit, prends un instantané Proxmox de SRV-LINUX (retour arrière possible), puis note l'état initial.
Debian 13 SRV-LINUXétat initial
$ sudo ss -tlnp | tee ~/avant-ports.txt $ sudo apt install lynis && sudo lynis audit system --quick $ sudo grep hardening_index /var/log/lynis-report.dat # note cet indice dans ton compte rendu $ sudo cp /var/log/lynis-report.dat ~/lynis-avant.dat
2 Mises à jour et services
Installe et active unattended-upgrades (partie 3.1), puis vérifie avec sudo unattended-upgrade --dry-run --debug.
Pour chaque ligne de ~/avant-ports.txt, décide : garder, restreindre ou supprimer. Supprime au moins un paquet inutile (rpcbind, cups… selon ta VM) et note ta décision.
3 Compte nominatif et clé SSH
Crée le compte adm- suivi de ton nom, ajoute-le aux groupes sudo et ssh-admins (partie 3.3).
Sur PC-ADMIN, génère une clé ed25519 avec phrase de passe et copie la clé publique sur SRV-LINUX (partie 4.1).
Teste : ssh adm-tonnom@ADRESSE doit demander la phrase de passe de la clé, pas le mot de passe du compte.
4 Durcir SSH
Crée /etc/ssh/sshd_config.d/90-durcissement.conf (partie 4.2). Garde ta session ouverte, complète d'abord ces commandes, puis applique.
Écris la commande qui correspond à chaque besoin, puis vérifie chaque ligne avec ✓.
Tester la syntaxe ›
Recharger SSH ›
Voir la config appliquée ›
État de la prison sshd ›
Depuis une seconde fenêtre : la connexion par clé fonctionne, ssh root@ADRESSE est refusé, et ssh -o PubkeyAuthentication=no adm-tonnom@ADRESSE répond Permission denied (publickey).
5 Fail2ban et pare-feu local
Installe Fail2ban avec la configuration de la partie 4.3, sans mettre ton poste dans ignoreip pour l'instant.
Depuis une autre VM (Debian ou IPFire du pool), rate volontairement quatre connexions SSH : sudo fail2ban-client status sshd doit montrer l'adresse bannie. Débannis-la ensuite.
Configure UFW (partie 5) : SSH depuis ton poste d'administration seulement, HTTP et HTTPS pour tous, SSH autorisé avantufw enable.
6 Mesurer de nouveau
Debian 13 SRV-LINUXétat final
$ sudo ss -tlnp | tee ~/apres-ports.txt && diff ~/avant-ports.txt ~/apres-ports.txt $ sudo lynis audit system --quick && sudo grep hardening_index /var/log/lynis-report.dat # compare avec l'étape 1
7 Contrôler et durcir SRV-01
Exécute les contrôles PowerShell de la partie 6 et note chaque résultat (pare-feu, Defender, SMBv1, membres des groupes d'administration).
Dans la GPO « Default Domain Policy », fixe une longueur minimale de 14 caractères et un verrouillage après 10 échecs pendant 15 minutes.
Active l'audit des ouvertures de session et de la gestion des comptes (auditpol /get /category:* pour vérifier), puis provoque un échec de connexion et retrouve l'événement 4625.
8 Valider : le cahier de recette
N°
Test
Commande
Résultat attendu
OK
1
L'indice de durcissement a progressé
grep hardening_index avant / après
Indice final supérieur à l'indice initial
2
Seuls les ports utiles écoutent
ss -tlnp
22 et 80/443, rien d'autre sur 0.0.0.0
3
Root ne peut pas se connecter
ssh root@ADRESSE
Refusé
4
Le mot de passe est refusé en SSH
ssh -o PubkeyAuthentication=no …
Permission denied (publickey)
5
Fail2ban bannit
fail2ban-client status sshd après 4 échecs
L'adresse de test est dans « Banned IP list »
6
Le pare-feu local est actif
ufw status verbose
Status: active, deny (incoming)
7
SRV-01 : pare-feu et Defender
Get-NetFirewallProfile, Get-MpComputerStatus
3 profils True, protection en temps réel True
8
L'échec de connexion est tracé
Observateur d'événements, journal Sécurité
Événement 4625 avec le compte et la source
Suis ta progressionConnecte-toi pour marquer les ressources comme terminées et retrouver ton avancement.