Comment restreindre l’accès à PowerShell pour les utilisateurs non administrateurs sous Windows

Désactiver PowerShell sur les machines Windows est souvent nécessaire dans les environnements où les politiques de sécurité l’exigent ; par exemple, pour stopper les attaques par script ou simplement contrôler les applications autorisées aux utilisateurs. Cependant, bloquer complètement PowerShell peut perturber des fonctionnalités légitimes comme les scripts d’ouverture de session GPO ou les tâches planifiées exécutées sous SYSTEM. L’objectif est donc de désactiver la console interactive et l’exécution de scripts, tout en préservant le bon fonctionnement des tâches automatisées. C’est un exercice d’équilibre délicat et pas toujours infaillible, d’autant plus que les utilisateurs trouvent souvent des moyens de contourner les politiques de sécurité les plus simples.

Comment désactiver PowerShell sous Windows par différentes méthodes

Méthode 1 : Il s’avère que bloquer l’exécutable avec des politiques de restriction logicielle n’est pas totalement sûr.

Voici probablement l’astuce la plus rapide. Il suffit de modifier la stratégie « Ne pas exécuter les applications Windows spécifiées » dans Configuration utilisateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégies de restriction logicielle. Ensuite, ajoutez powershell.exeles powershell_ise.exechemins d’accès. Simple, non ? En fait, c’est un peu étrange, mais cette simple manipulation empêche généralement le lancement du processus. Lorsque les utilisateurs tentent d’exécuter PowerShell, ils obtiennent le message suivant :

This app has been blocked by your administrator

Cela dit, cette méthode n’est pas fiable à 100 %.Sur certaines configurations, comme Windows Terminal ou les versions récentes de PowerShell Core ( GitHub Winhance peut faciliter la gestion des stratégies d’exécution), elle peut ne pas bloquer toutes les opérations. Car, bien sûr, Windows a tendance à compliquer les choses inutilement.

Méthode 2 : Bloquer les fichiers exécutables dans le système de fichiers à l’aide des stratégies de groupe et des stratégies de restriction logicielle

Cette méthode est un peu plus complète, mais pas encore parfaite. Créez un nouvel objet de stratégie de groupe (GPO) gpmc.msc, puis accédez à Configuration utilisateur > Stratégies > Paramètres Windows > Paramètres de sécurité >> Stratégies de restriction logicielle. Créez une nouvelle stratégie, puis, dans Règles supplémentaires, ajoutez des chemins d’accès comme :

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe C:\Program Files\PowerShell\7\pwsh.exe  

Définissez chaque action comme interdite. Une fois cette stratégie appliquée, les utilisateurs ne pourront plus exécuter powershell.execes actions pwsh.exe. Ils recevront des erreurs du type :

This program is blocked by group policy. For more information, contact your system administrator.

Attention toutefois à quelques anomalies : si les scripts ou les tâches planifiées s’exécutent en tant que SYSTEM, ils pourraient tout de même se déclencher, surtout si le script s’exécute avant l’application de la stratégie. De plus, sur les versions récentes de Windows, cette méthode est considérée comme obsolète et remplacée par AppLocker.

Méthode 3 : Utiliser AppLocker pour interdire explicitement l’exécution de PowerShell

Cette approche est plus robuste.À partir de Windows 10 2004 et Windows 11, les règles AppLocker fonctionnent sur certaines éditions (Pro, Entreprise et désormais même certaines éditions Pro).Pour la configurer :

  • Activez le service d’identité de l’application dans Services ( Configuration ordinateur > Paramètres Windows > Paramètres de sécurité > Services système ) et définissez-le sur Automatique.
  • Dans la section Stratégies de contrôle des applications > AppLocker, définissez les règles sur Appliquer les règles.
  • Créez d’abord des règles par défaut pour les autres applications, puis cliquez avec le bouton droit sur Règles exécutables > Créer une nouvelle règle.
  • Choisissez Refuser pour les règles de l’éditeur et spécifiez les chemins d’accès aux exécutables PowerShell (comme powershell.exe, pwsh.exe, et powershell_ise.exe) ; vous pouvez utiliser des caractères génériques ou les informations de l’éditeur.
  • Pour les utilisateurs de confiance autorisés à exécuter PowerShell, créez une règle d’autorisation qui permet explicitement à ces utilisateurs ou groupes de le faire.

Attention : les règles AppLocker étant traitées séquentiellement, assurez-vous que les règles de refus soient placées en premier ou correctement ordonnées. Sinon, les utilisateurs pourraient lancer PowerShell même si une règle d’autorisation plus spécifique existe. Par ailleurs, exporter vos règles Get-AppLockerPolicy -Effective -XML > C:\path\to\file.xmlpeut faciliter le débogage.

Conseils supplémentaires : Gestion des exceptions et automatisation

Dans un contexte réel, il peut être nécessaire de créer des exceptions afin que certains groupes d’administrateurs ou comptes spécifiques puissent exécuter PowerShell. Pour ce faire, configurez les règles avec les groupes de sécurité et définissez la délégation afin que seuls ces groupes disposent des autorisations. Utilisez l’ onglet Délégation pour ajouter des groupes et autoriser ou refuser certaines stratégies.

Notez que, depuis Windows 10 1803 et Windows Server 2019, les stratégies de restriction logicielle (SRP) sont obsolètes au profit de WDAC et d’AppLocker, qui sont plus flexibles et plus sûrs.

Résumé

  • Utilisez la stratégie « Ne pas exécuter les applications Windows spécifiées » pour un blocage rapide ; cela fonctionne dans de nombreux cas, mais pas dans tous.
  • Configurez les stratégies de restriction logicielle pour bloquer tous les exécutables PowerShell au niveau du système de fichiers.
  • Pour une solution plus robuste, implémentez des règles AppLocker pour interdire explicitement les fichiers PowerShell et définissez des exceptions pour les comptes de confiance.
  • N’oubliez pas que ces méthodes bloquent principalement les sessions interactives, mais peuvent ne pas empêcher l’exécution de scripts ou de tâches planifiées sous SYSTEM ou avec différentes méthodes d’obfuscation.

Conclure

Désactiver PowerShell n’est pas aussi simple qu’appuyer sur un bouton, surtout avec les versions récentes de Windows. Combiner des méthodes comme AppLocker avec une délégation et des règles d’exception appropriées semble être la meilleure solution. Ce n’est pas parfait (rien ne l’est), et certains scripts ou processus peuvent encore passer entre les mailles du filet selon leur configuration. Il est donc essentiel de tester, et n’oubliez pas que les mises à jour ou les nouvelles fonctionnalités de sécurité du système d’exploitation peuvent modifier le comportement de ces stratégies. Croisons les doigts pour que cela permette à certains d’éviter des problèmes de sécurité sans perturber leurs automatisations essentielles. Cela a fonctionné pour plusieurs configurations ; j’espère que ce sera le cas pour vous aussi.