Aller au contenu
06 · Protocoles héritésPartie 4 sur 4Intermédiaire

Durcir le spouleur d'impression et Point and Print

Fermer les risques de type PrintNightmare : désactiver le spouleur inutile, réserver l'installation des pilotes aux admins, Package Point and Print et serveurs approuvés.

Florian Amette9 min de lecture

Le service Spouleur d'impression s'exécute en tant que SYSTEM sur presque toutes les machines Windows, charge du code de pilotes tiers et accepte des appels RPC distants. Cette combinaison a produit en 2021 les vulnérabilités PrintNightmare (CVE-2021-1675 et CVE-2021-34527), grâce auxquelles un simple utilisateur du domaine pouvait exécuter du code en tant que SYSTEM sur n'importe quelle machine dotée d'un spouleur actif, contrôleurs de domaine compris. Elle permet aussi le « printer bug » : un utilisateur authentifié demande au spouleur d'une machine, via le protocole MS-RPRN, de se connecter à un hôte qu'il contrôle, ce qui force le compte machine à s'y authentifier, prêt pour un relais NTLM ou un abus de délégation non contrainte.

Les mises à jour de sécurité ont corrigé ces bugs précis. Le durcissement décrit dans ce guide supprime les catégories de problèmes : les spouleurs qui n'ont pas besoin de tourner, les utilisateurs capables d'installer des pilotes et les clients qui font confiance à n'importe quel serveur d'impression via Point and Print. Il fait partie du domaine Protocoles hérités, aux côtés des défenses contre le relais présentées dans le guide pilier.

Étape 1 : décider où le spouleur doit tourner

RôleBesoin du spouleur ?Action
Contrôleurs de domaineNonDésactiver le service
Serveurs Tier 0 (PKI, synchronisation AD, sauvegarde, hôtes d'hyperviseur)NonDésactiver le service
Autres serveursRarementDésactiver, sauf si le serveur imprime lui-même ou est serveur d'impression
Serveurs d'impressionOuiConserver, durcir, corriger en priorité
Postes de travailOui, pour imprimer localementLaisser actif, bloquer les connexions distantes entrantes

Identifiez où le spouleur est joignable à distance avant de changer quoi que ce soit. Depuis un poste d'administration :

PowerShell
Get-ADComputer -Filter 'OperatingSystem -like "*Server*"' | ForEach-Object {
  [pscustomobject]@{ Host = $_.Name; SpoolerPipe = Test-Path "\\$($_.Name)\pipe\spoolss" }
}

Un canal nommé spoolss joignable signifie que le spouleur tourne et écoute à distance. L'inverse ne prouve rien : Windows 11 22H2 et versions ultérieures n'écoutent par défaut le RPC d'impression que sur TCP, donc l'absence du canal nommé sur ces machines ne signifie pas que le spouleur est arrêté. Vérifiez aussi l'état du service.

Étape 2 : désactiver le spouleur là où il est inutile

Utilisez une GPO liée à l'UO Domain Controllers et aux UO de serveurs : Computer Configuration > Policies > Windows Settings > Security Settings > System Services > Print Spooler = Disabled. En local ou pour tester :

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

Certaines applications serveur dépendent discrètement du spouleur pour le rendu ou la sortie PDF (outils de reporting, certains ERP et logiciels d'impression d'étiquettes). Vérifiez auprès des responsables applicatifs de chaque serveur avant de le désactiver.

Étape 3 : empêcher les postes de travail d'accepter des connexions d'impression distantes

Les postes de travail ont besoin du spouleur pour imprimer, mais ont rarement besoin d'accepter des travaux d'impression ou des appels RPC provenant d'autres machines. Définissez Computer Configuration > Policies > Administrative Templates > Printers > Allow Print Spooler to accept client connections = Disabled (registre HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers RegisterSpoolerRemoteRpcEndPoint = 2). Redémarrez le spouleur pour appliquer. L'impression locale et l'impression vers des files réseau continuent de fonctionner ; la machine cesse simplement d'être un serveur d'impression. N'appliquez pas ce paramètre aux vrais serveurs d'impression.

Les versions récentes de Windows ajoutent des contrôles associés dans le même dossier Printers, notamment Configure RPC connection settings et Configure RPC listener settings, qui déterminent si le RPC d'impression utilise TCP ou les canaux nommés et quelle authentification il accepte. Depuis Windows 11 22H2, les valeurs par défaut sont le RPC sur TCP pour les connexions sortantes et un écouteur TCP uniquement ; les canaux nommés sont désactivés sauf si vous les réactivez. Conservez ces valeurs par défaut et, là où toutes les machines sont jointes au domaine, vous pouvez en plus régler le protocole d'authentification de l'écouteur sur Kerberos.

Étape 4 : réserver l'installation des pilotes d'imprimante aux administrateurs

Depuis les mises à jour de sécurité d'août 2021, Windows n'autorise par défaut que les administrateurs à installer des pilotes d'imprimante via Point and Print. Rendez-le explicite pour qu'aucune ancienne stratégie ni aucun changement de dépannage ne puisse l'annuler :

  • GPO : Computer Configuration > Policies > Administrative Templates > Printers > Limits print driver installation to Administrators = Enabled (disponible dans les modèles ADMX actuels et dans les modèles MS Security Guide livrés avec le référentiel de sécurité Microsoft).
  • Registre : HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint RestrictDriverInstallationToAdministrators = 1.

Lorsque cette valeur vaut 1, elle l'emporte sur les paramètres d'avertissement et d'élévation de Point and Print Restrictions. Recherchez dans vos GPO quiconque l'a réglée à 0 en 2021 pour que l'impression refonctionne : cette seule valeur rouvre le chemin d'attaque PrintNightmare.

PowerShell
Get-GPOReport -All -ReportType Xml |
  Select-String -Pattern "RestrictDriverInstallationToAdministrators|NoWarningNoElevationOnInstall" -Context 0,2

Étape 5 : n'autoriser que les serveurs d'impression approuvés

Configurez Point and Print Restrictions sous Computer Configuration > Policies > Administrative Templates > Printers = Enabled :

  • Users can only point and print to these servers : coché, avec les noms pleinement qualifiés de vos serveurs d'impression.
  • When installing drivers for a new connection : Show warning and elevation prompt.
  • When updating drivers for an existing connection : Show warning and elevation prompt.

N'utilisez jamais « Do not show warning or elevation prompt » ; c'est la configuration qui rendait PrintNightmare exploitable sur des systèmes corrigés (NoWarningNoElevationOnInstall = 1).

Passez ensuite à Package Point and Print, qui n'installe que des pilotes empaquetés avec un catalogue signé et les vérifie :

  • Only use Package Point and print = Enabled.
  • Package Point and print - Approved servers = Enabled, avec la liste des mêmes serveurs d'impression.

Une fois ce paramètre actif, les pilotes hérités non compatibles avec les packages ne s'installent plus via Point and Print. Remplacez-les par des pilotes actuels de l'éditeur ou des pilotes universels, ou préinstallez-les avec votre outil de déploiement.

Enfin, Manage processing of Queue-specific files, dans le même dossier, réglé pour limiter les fichiers propres aux files d'attente aux profils de couleur, ferme un problème ultérieur par lequel des files d'impression pouvaient pousser des fichiers arbitraires vers les clients.

Étape 6 : durcir les serveurs d'impression eux-mêmes

Les serveurs d'impression restants sont désormais les seules machines à distribuer des pilotes à tout le parc, ce qui en fait une cible de valeur. Traitez-les en conséquence :

  • Serveurs dédiés. N'hébergez pas l'impression avec des partages de fichiers, des applications ou, pire, des rôles de contrôleur de domaine.
  • Corriger en priorité. Placez les serveurs d'impression dans le premier anneau de correctifs serveurs ; des correctifs du spouleur apparaissent régulièrement dans les mises à jour mensuelles.
  • Sélectionner les pilotes. Gardez une courte liste de pilotes actuels, compatibles avec les packages, fournis par les éditeurs, ou de pilotes universels, et supprimez les autres avec Remove-PrinterDriver. Chaque pilote supplémentaire est du code qui s'exécute en tant que SYSTEM sur les clients.
  • Restreindre l'administration. Seul un petit groupe d'administrateurs de l'impression peut ajouter des pilotes ou des files ; ce groupe ne doit pas inclure les comptes de support standard qui ouvrent des sessions sur tous les postes de travail.
  • Limiter le pare-feu. Les clients doivent joindre le serveur d'impression ; le serveur d'impression a rarement besoin d'initier des connexions vers les clients.

Étape 7 : réduire encore les pilotes sous Windows 11

  • Mode d'impression protégée de Windows (Windows protected print mode, Windows 11 24H2 et versions ultérieures) : Printers > Configure Windows protected print. Le spouleur n'utilise alors que le pilote de classe IPP intégré et refuse les pilotes tiers. C'est l'option la plus robuste si vos imprimantes prennent en charge Mopria/IPP.
  • Universal Print, le service d'impression cloud de Microsoft, supprime pour de nombreux parcs les serveurs d'impression locaux et la distribution de pilotes.
  • Redirection Guard (Printers > Configure Redirection Guard) empêche le spouleur de suivre des redirections du système de fichiers, comme des jonctions plantées par un attaquant. Laissez-le activé.

Ce qui casse

  • L'impression depuis des serveurs dont le spouleur était utilisé discrètement par une application.
  • Les utilisateurs qui ajoutent eux-mêmes des imprimantes lorsque le pilote n'est pas encore installé sur leur machine, ou que le serveur d'impression dispose d'une version de pilote plus récente.
  • Les pilotes hérités non compatibles avec les packages, une fois Package Point and Print imposé.
  • Les imprimantes sur des serveurs non approuvés, comme le serveur d'impression propre à un service ou une imprimante IP directe partagée depuis le PC d'un collègue. C'est voulu : déplacez-les vers le serveur approuvé.

Vérifier

PowerShell
Get-Service Spooler | Select-Object Status, StartType          # DC et serveurs : Stopped, Disabled
Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint"
Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers" -Name RegisterSpoolerRemoteRpcEndPoint
Get-PrinterDriver | Select-Object Name, Manufacturer, MajorVersion

Attendez-vous à RestrictDriverInstallationToAdministrators = 1, NoWarningNoElevationOnInstall absent ou à 0, et RegisterSpoolerRemoteRpcEndPoint = 2 sur les postes de travail. Relancez la vérification du canal spoolss de l'étape 1 ; seuls les serveurs d'impression doivent répondre.

Pour la surveillance, activez le journal Microsoft-Windows-PrintService/Operational, désactivé par défaut (wevtutil sl Microsoft-Windows-PrintService/Operational /e:true), et collectez l'événement 808 de PrintService/Admin (le spouleur n'a pas pu charger un module plug-in), un indicateur connu de tentatives d'exploitation. Les installations de pilotes sur des machines où les utilisateurs n'ajoutent pas d'imprimantes méritent qu'on s'y intéresse.

Liste de contrôle

  • Spouleur désactivé sur les contrôleurs de domaine et les serveurs Tier 0
  • Spouleur désactivé sur les autres serveurs qui n'impriment pas et ne servent pas d'imprimantes
  • Postes de travail n'acceptant pas de connexions d'impression distantes (RegisterSpoolerRemoteRpcEndPoint = 2)
  • RestrictDriverInstallationToAdministrators = 1 imposé par GPO ; aucune GPO ne le règle à 0
  • Point and Print limité aux serveurs approuvés, avec avertissement et demande d'élévation
  • Package Point and Print uniquement, avec la liste des serveurs approuvés
  • Fichiers propres aux files limités aux profils de couleur ; Redirection Guard activé
  • Mode d'impression protégée de Windows évalué pour les parcs Windows 11 24H2+
  • Journaux PrintService activés et événement 808 collecté

Désactiver le spouleur sur les DC supprime aussi l'un des chemins de coercition les plus faciles vers le Tier 0. Combinez-le avec la signature SMB et les restrictions NTLM et des règles de pare-feu qui bloquent le RPC entre postes de travail.

Questions fréquentes

Peut-on désactiver sans risque le spouleur d'impression sur les contrôleurs de domaine ?

Oui, sauf si le contrôleur de domaine est aussi serveur d'impression, ce qu'il ne devrait pas être. Les contrôleurs de domaine n'ont pas besoin du spouleur pour fonctionner, et un spouleur actif permet à n'importe quel utilisateur authentifié de contraindre le DC à s'authentifier auprès d'un hôte contrôlé par l'attaquant. Microsoft Defender for Identity signale un spouleur actif sur les DC comme un problème de posture. Désactivez-le par stratégie de groupe sur l'UO Domain Controllers.

RestrictDriverInstallationToAdministrators empêche-t-il les utilisateurs d'imprimer ?

Il empêche les utilisateurs standard d'installer ou de mettre à jour eux-mêmes des pilotes d'imprimante. L'impression via des files dont les pilotes sont déjà installés continue de fonctionner. Les utilisateurs ne rencontrent un problème qu'en se connectant à une nouvelle imprimante dont le pilote est absent, ou plus récent sur le serveur d'impression. Préinstallez les pilotes avec votre outil de déploiement, ou utilisez des pilotes compatibles avec les packages et des serveurs approuvés, et le changement passe généralement inaperçu.

Qu'est-ce que le mode d'impression protégée de Windows ?

C'est un mode introduit avec Windows 11 24H2 qui empêche le spouleur de charger des pilotes d'imprimante tiers et n'utilise que le pilote de classe intégré compatible Mopria, via IPP. Cela supprime l'essentiel de la surface d'attaque liée aux pilotes. Il ne convient qu'aux parcs dont les imprimantes prennent en charge Mopria ou IPP : testez vos modèles d'imprimantes avant de l'activer par stratégie de groupe.

Durcir le spouleur d'impression et Point and Print

Guides associés