powershell_securite

Ceci est une ancienne révision du document !


Politique de sécurité et signature de script

La sécurisation de l'exécution de script est importante. En effet, les scripts sont utilisés pour automatiser des actions et surtout les exécuter sans nécessiter la présence de l'utilisateur. Cela entraîne invariablement des dérives et si le processus est très exploité par des administrateurs dans leur tâches quotidiennes, il l'est aussi par des pirates et autres. A ce titre, il faut pouvoir contrôler l'exécution d'un script sur nos infrastructures.

En Powershell, la politique d'exécution est gérer par les commandes Get-ExecutionPolicy et Set-ExecutionPolicy.

  • Référence pour Get-ExecutionPolicy : Microsoft
  • Référence pour Set-ExecutionPolicy : Microsoft

L'exécution de Get-ExecutionPolicy nous retournera la politique de sécurité actuelle sur le poste. Parmi ces politiques, nous trouverons :

  • AllSigned
    • Permet l'exécution des scripts.
    • Nécessite que tous les scripts et les fichiers de configuration qu'ils utilisent soient signés par une autorité de confiance, même en local.
    • Interroge l'utilisateur lors de l'exécution d'un script signé par une autorité non reconnue. Nécessite des droits d'administrateur pour valider l'autorité.
    • Présente un risque d'exécution de code malicieux signé.
  • Bypass
    • Aucun blocage, ni aucun avertissement.
    • Ce mode est surtout conçu pour les tests de scripts et les environnements sécurisés faisant appel à des routines en Powershell.
  • Default
    • Applique les règles de sécurité par défaut.
    • Restricted pour les postes de travail.
    • RemoteSigned pour les serveurs.
  • RemoteSigned
    • Permet l'exécution des scripts
    • Nécessite que tous les scripts extérieurs soient signés par une autorité de confiance.
    • Par conséquent, les scripts créés en local n'ont pas besoin de signature.
    • Permet d'exécuter des scripts extérieurs si ces derniers ont été débloqués en local avec la commande Unblock-File.
    • Risque d'exécution de script malicieux signés et non signés.
  • Restricted
    • Permet d'exécuter des commandes Powershell.
    • Interdit l'exécution de scripts, de modules et de pages de configuration Powershell.
  • Undefined
    • Aucune politique particulière n'est appliquée
    • Si Undefined est défini sur tous les périmètres d'activité, alors la politique Restricted s'applique.
  • Unrestricted
    • Permet l'exécution des scripts.
    • Affiche un avertissement concernant l'exécution de scripts en provenance d'une source extérieure.
  • Référence pour ExecutionPolicy : Microsoft
  • Référence pour Unblock-File : Microsoft

Les différentes politiques peuvent s'appliquer à différents périmètres d'activité, indépendants les uns des autres. Parmi ces périmètres, nous avons :

  • MachinePolicy : Tous les utilisateurs d'un poste.
  • UserPolicy : L'utilisateur actuel du poste.
  • Process : La politique n'est appliqué qu'au processus Powershell actuel. Dès que ce processus se termine, la politique globale se réapplique à tous les autres processus Powershell.
  • CurentUser : Equivalent à UserPolicy mais avec inscription de la politique en base de registre (HKCU).
  • LocalMachine : Equivalent à MachinePolicy mais avec inscription de la politique en base de registre (HKLM). C'est le périmètre par défaut.
  • Référence pour ExecutionPolicy : Microsoft
  • Obtenir la politique d'exécution
Get-ExecutionPolicy
AllSigned
  • Obtenir la politique d'exécution pour tous les périmètres d'activité
Get-ExecutionPolicy -List
 
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       AllSigned
  • Définir la politique Restricted
Set-ExecutionPolicy -ExecutionPolicy Restricted
  • Définir la politique Unrestricted sur le périmètre CurentUser
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
Entrer votre commentaire. La syntaxe wiki est autorisée:
 
  • powershell_securite.1553850684.txt.gz
  • Dernière modification : 2019/03/29 08:11
  • (modification externe)