Blog ENI : Toute la veille numérique !
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici

Exécution de scripts

Introduction

Nous entendons de plus en plus parler d’automatisation dans les métiers de l’informatique, à la fois pour gagner du temps mais aussi pour automatiser certaines tâches fastidieuses. Avec PowerShell, cette automatisation se traduit par la création de scripts, dont nous avons vu la définition dans le chapitre PowerShell et les scripts.

Quel format de fichier ?

Le format des scripts PowerShell est un fichier texte avec une extension *.ps1.

Le script va contenir un enchaînement logique de commandes.

Dans l’explorateur de fichier, ces scripts sont facilement reconnaissables avec l’icône PowerShell comme le montre l’image ci-dessous :

images/10RI01.png

En ouvrant les propriétés du fichier, nous retrouvons les caractéristiques du script PowerShell.

images/10RI02.png

Nous retrouvons les informations suivantes :

  • Type de fichier : script Windows PowerShell.

  • S’ouvre avec : ici Visual Studio Code (ou n’importe quel éditeur de texte).

  • Son emplacement : ici C:\Users\Jerome\Documents\Scripts.

  • Taille : ici 16 octets.

La stratégie d’exécution

1. Exécution par défaut

Par défaut, la première exécution d’un script PowerShell retournera généralement une erreur, à moins d’avoir, au préalable, changé les politiques de stratégies d’exécution.

Observons donc le comportement de la stratégie par défaut lors d’une tentative d’exécution d’un script PowerShell depuis l’invite de commandes PowerShell.

images/10RI03.png

Le message indique clairement qu’il est impossible d’exécuter le script en raison d’un paramétrage de sécurité. Ici, l’exécution des scripts est désactivée.

La tentative d’exécution d’un script en passant par l’explorateur suivie d’un clic droit sur un fichier retournera la même erreur.

images/10RI04.png

La seule différence est que la fenêtre s’ouvrira brièvement sans nous donner plus d’informations concernant l’erreur. Pour vérifier le bon fonctionnement, il faudra exécuter le script depuis une invite PowerShell.

2. Qu’est-ce que la stratégie d’exécution ?

Il faut donc modifier la politique de stratégie d’exécution, mais de quoi s’agit-il ?

La stratégie d’exécution est une fonctionnalité de sécurité permettant de contrôler la façon dont PowerShell chargera les fichiers de configuration et exécutera les scripts. Comme son nom l’indique, il s’agit donc d’une stratégie permettant de choisir la manière dont les scripts PowerShell peuvent s’exécuter sur les postes :

  • Les scripts peuvent-ils s’exécuter sur tous les postes ?

  • Tous les scripts ou uniquement certains ?

  • Les scripts téléchargés depuis Internet peuvent-ils être exécutés ?

  • Faut-il autoriser uniquement les scripts dits « sûrs » ?

C’est pour répondre à toutes ces questions que la politique de stratégie d’exécution des scripts est présente. En termes de sécurité, cette fonctionnalité permet d’éviter l’exécution de scripts malveillants.

Il est possible de définir...

Signer un script

Avec l’essor de la cybercriminalité, il est de plus en plus nécessaire d’être sûr de ce qui est exécuté sur un poste. De ce fait, il peut donc être pertinent d’utiliser des scripts signés afin d’augmenter la sécurité sur l’exécution des scripts.

Plusieurs types de certificats sont disponibles :

  • Certificat acheté auprès d’une autorité de certification reconnue (comme DigiCert ou VeriSign) impliquant des coûts financiers de plusieurs centaines d’euros.

  • Certificat généré auprès d’une autorité de certification d’entreprise, comme l’ADCS liée à l’Active Directory.

  • Certificat autosigné.

Cette signature numérique va permettre de signer le code et d’assurer son intégrité. S’il est modifié, il faudra le signer de nouveau, sinon il ne pourra pas s’exécuter.

La signature d’un script se réalisera en différentes étapes :

  • Génération d’un certificat.

  • Signature du script avec ce certificat.

Dans ce chapitre, nous utiliserons un certificat autosigné, étant donné la simplicité d’utilisation.

1. Générer un certificat autosigné

Utilisons tout d’abord la cmdlet Get-Command afin de chercher les cmdlets comportant le terme « certificat ».

PS C:\Users\damien.vanrobaeys> get-command *certificat* 
 
Name 
---- 
Add-CertificateEnrollmentPolicyServer 
Export-Certificate 
Export-PfxCertificate 
Get-Certificate 
Get-CertificateAutoEnrollmentPolicy 
Get-CertificateEnrollmentPolicyServer 
Get-CertificateNotificationTask 
Get-PfxCertificate 
Import-Certificate 
Import-PfxCertificate 
New-CertificateNotificationTask 
New-SelfSignedCertificate 
Remove-CertificateEnrollmentPolicyServer 
Remove-CertificateNotificationTask 
Set-CertificateAutoEnrollmentPolicy 
Switch-Certificate 
Test-Certificate 

Pour générer un certificat autosigné sous Windows, nous utiliserons la cmdlet New-SelfSignedCertificate.

Ce certificat peut être stocké dans le magasin personnel de l’utilisateur ou de l’ordinateur.

Nous le stockerons dans...