Aller au contenu
8 septembre 2025·19 min de lecture

Durcissement de Windows Server 2022 : checklist pratique

Guide de durcissement pas à pas pour Windows Server 2022 — désactivation des protocoles obsolètes, configuration des stratégies d'audit, pare-feu local et gestion des accès privilégiés.

← Retour

Un Windows Server 2022 fraîchement installé n'est pas un serveur sécurisé. Les paramètres par défaut privilégient la compatibilité à la sécurité. Ce guide passe en revue les étapes de durcissement essentielles — applicables à tout rôle, du contrôleur de domaine au serveur de fichiers.

Avant de commencer

Référentiels de base :

Testez toujours sur un système hors production en premier. Certains paramètres peuvent casser des applications ou l'accès RDP si appliqués sans discernement.

1. Désactiver les services inutiles

Réduisez la surface d'attaque en arrêtant les services dont vous n'avez pas besoin :

# Lister tous les services en cours d'exécution
Get-Service | Where-Object {$_.Status -eq "Running"} | Sort-Object Name
 
# Désactiver les services risqués ou inutiles
$servicesToDisable = @(
    "Fax",          # Service Fax — rarement nécessaire
    "XblGameSave",  # Sauvegarde Xbox Live
    "WSearch",      # Recherche Windows (désactiver sur les serveurs sans sessions utilisateur)
    "Spooler"       # Si pas un serveur d'impression — risque PrintNightmare
)
 
foreach ($svc in $servicesToDisable) {
    Set-Service -Name $svc -StartupType Disabled
    Stop-Service -Name $svc -Force -ErrorAction SilentlyContinue
    Write-Host "Désactivé : $svc"
}

Critique : Print Spooler (PrintNightmare) Si ce n'est pas un serveur d'impression, désactivez le spouleur :

Stop-Service -Name "Spooler" -Force
Set-Service -Name "Spooler" -StartupType Disabled

2. Désactiver les protocoles et suites de chiffrement obsolètes

SMBv1 (vecteur EternalBlue — WannaCry, NotPetya)

# Désactiver SMBv1 (devrait être désactivé par défaut sous Server 2022, à vérifier)
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
 
# Vérifier
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol

LLMNR et NetBIOS (utilisés dans les attaques MITM/relay)

# Désactiver LLMNR via le registre
$reg = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient"
New-Item -Path $reg -Force | Out-Null
Set-ItemProperty -Path $reg -Name "EnableMulticast" -Value 0 -Type DWord
 
# Désactiver NetBIOS sur TCP/IP sur tous les adaptateurs
$adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.IPEnabled}
foreach ($adapter in $adapters) {
    $adapter.SetTcpipNetbios(2) | Out-Null  # 2 = Désactiver NetBIOS
}

TLS 1.0 et 1.1

$path = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols"
 
# Désactiver TLS 1.0
New-Item -Path "$path\TLS 1.0\Server" -Force | Out-Null
Set-ItemProperty -Path "$path\TLS 1.0\Server" -Name "Enabled" -Value 0
Set-ItemProperty -Path "$path\TLS 1.0\Server" -Name "DisabledByDefault" -Value 1
 
# Désactiver TLS 1.1
New-Item -Path "$path\TLS 1.1\Server" -Force | Out-Null
Set-ItemProperty -Path "$path\TLS 1.1\Server" -Name "Enabled" -Value 0
Set-ItemProperty -Path "$path\TLS 1.1\Server" -Name "DisabledByDefault" -Value 1
 
# Vérifier que TLS 1.2 est explicitement activé
New-Item -Path "$path\TLS 1.2\Server" -Force | Out-Null
Set-ItemProperty -Path "$path\TLS 1.2\Server" -Name "Enabled" -Value 1
Set-ItemProperty -Path "$path\TLS 1.2\Server" -Name "DisabledByDefault" -Value 0

Authentification NTLMv1

GPO : Configuration ordinateur → Paramètres Windows → Paramètres de sécurité
    → Stratégies locales → Options de sécurité
    → Niveau d'authentification LAN Manager
    → Valeur : Envoyer uniquement la réponse NTLMv2. Refuser LM et NTLM

3. Configuration du pare-feu Windows

Activez le pare-feu Windows même si vous avez un pare-feu périmétrique — défense en profondeur.

# Activer tous les profils
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
 
# Définir les actions par défaut (bloquer entrant, autoriser sortant)
Set-NetFirewallProfile -Profile Domain,Public,Private `
    -DefaultInboundAction Block `
    -DefaultOutboundAction Allow
 
# Autoriser RDP uniquement depuis le sous-réseau de management
New-NetFirewallRule `
    -DisplayName "Autoriser RDP - Management uniquement" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 3389 `
    -RemoteAddress "192.168.10.0/24" `
    -Action Allow
 
# Autoriser WinRM depuis le management
New-NetFirewallRule `
    -DisplayName "Autoriser WinRM - Management uniquement" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 5985,5986 `
    -RemoteAddress "192.168.10.0/24" `
    -Action Allow

4. Comptes locaux et accès privilégiés

Renommer et désactiver l'Administrateur intégré

# Renommer le compte Administrateur intégré
Rename-LocalUser -Name "Administrator" -NewName "srv-admin"
 
# Créer un compte admin séparé pour l'usage quotidien
# Mot de passe saisi au clavier : jamais écrit en clair dans un script
New-LocalUser -Name "sysadmin-ops" `
    -Password (Read-Host -AsSecureString "Mot de passe du compte") `
    -FullName "Admin Opérations" `
    -PasswordNeverExpires $false
 
Add-LocalGroupMember -Group "Administrators" -Member "sysadmin-ops"
 
# Désactiver le compte intégré (maintenant renommé)
Disable-LocalUser -Name "srv-admin"

Désactiver le compte Invité local

Disable-LocalUser -Name "Guest"

5. Configuration de la stratégie d'audit

Un serveur sans journaux d'audit est une impasse forensique. Configurez un audit complet :

# Appliquer la stratégie d'audit avancée via auditpol
auditpol /set /subcategory:"Validation des informations d'identification" /success:enable /failure:enable
auditpol /set /subcategory:"Ouverture de session" /success:enable /failure:enable
auditpol /set /subcategory:"Verrouillage du compte" /failure:enable
auditpol /set /subcategory:"Gestion des comptes d'utilisateurs" /success:enable /failure:enable
auditpol /set /subcategory:"Gestion des groupes de sécurité" /success:enable
auditpol /set /subcategory:"Création de processus" /success:enable
auditpol /set /subcategory:"Utilisation de privilèges sensibles" /success:enable /failure:enable
 
# Vérifier
auditpol /get /category:*

Augmenter la taille des journaux d'événements

# Journal Sécurité : 1 Go minimum
Limit-EventLog -LogName Security -MaximumSize 1073741824
 
# Système et Application : 256 Mo
Limit-EventLog -LogName System -MaximumSize 268435456
Limit-EventLog -LogName Application -MaximumSize 268435456

6. Configuration de Windows Defender

# Vérifier que Defender est actif et à jour
Get-MpComputerStatus | Select-Object AMRunningMode, AntivirusEnabled, `
    RealTimeProtectionEnabled, AntivirusSignatureLastUpdated
 
# Activer la protection cloud et la soumission automatique d'échantillons
Set-MpPreference -MAPSReporting Advanced
Set-MpPreference -SubmitSamplesConsent SendAllSamples
 
# Activer la protection réseau (bloque les URL malveillantes au niveau noyau)
Set-MpPreference -EnableNetworkProtection Enabled
 
# Protection PUA (Applications potentiellement indésirables)
Set-MpPreference -PUAProtection Enabled
 
# Règles ASR (Attack Surface Reduction)
Add-MpPreference -AttackSurfaceReductionRules_Ids `
    "d4f940ab-401b-4efc-aadc-ad5f3c50688a" `
    -AttackSurfaceReductionRules_Actions Enabled

7. Sécurité du Bureau à distance (RDP)

# S'assurer que l'authentification au niveau réseau (NLA) est requise
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" `
    -Name "UserAuthentication" -Value 1
 
# Définir le niveau de chiffrement sur Élevé
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" `
    -Name "MinEncryptionLevel" -Value 3

Checklist de durcissement complète

Protocoles :

  • SMBv1 désactivé
  • LLMNR désactivé
  • NetBIOS sur TCP/IP désactivé
  • TLS 1.0 et 1.1 désactivés
  • NTLMv1 refusé, NTLMv2 imposé

Services :

  • Print Spooler désactivé (si pas serveur d'impression)
  • Service Fax désactivé
  • Tous les services inutilisés désactivés

Comptes :

  • Administrateur intégré renommé et désactivé
  • Compte Invité désactivé
  • Comptes d'administration nommés avec mots de passe forts

Pare-feu :

  • Tous les profils activés
  • Défaut : bloquer entrant, autoriser sortant
  • RDP restreint au sous-réseau de management

Audit :

  • Événements d'ouverture de session audités (succès + échec)
  • Gestion des comptes auditée
  • Journal Sécurité ≥ 1 Go

Antivirus :

  • Windows Defender activé avec protection cloud
  • Protection en temps réel active
  • Règles ASR déployées

Conclusion

Le durcissement de sécurité n'est pas une tâche ponctuelle — c'est une baseline que vous appliquez lors du provisionnement et maintenez dans le temps. Automatisez ces étapes avec PowerShell DSC ou Ansible pour garantir que chaque nouveau serveur respecte la baseline. Combinez avec des scans de vulnérabilités réguliers (Nessus, OpenVAS) pour détecter les dérives au fil du temps.


Ressources utiles :

Aïcha Imène DAHOUMANE
À propos de l'auteure
Aïcha Imène DAHOUMANE
Administratrice & Développeuse Salesforce

Développeuse Salesforce avec un background en infrastructures IT — je construis des solutions fiables et maintenables avec Apex, Flows, LWC et CI/CD.

PartagerPartager sur LinkedIn