Signature Authenticode

De NCad Wiki
Aller à la navigation Aller à la recherche

Rôles Active Directory

Installation du rôle ADCS | Gestion des certificats | Authentification par cartes à puce

Installation du rôle ADDS | Sécuriser son environnement Active Directory | Windows LAPS | gMSA


Archives : Contrôleur de domaine Windows Server 2003 | Intégration Client Ubuntu sur AD Windows Server 2003 | Windows Server 2008

Présentation

La signature Authenticode permet d'apposer une signature sur un fichier ou un script. Dans un contexte d'exécution de scripts PowerShell, on peut restreindre l'exécution uniquement à du code signé.

Ce la permet de garantir l'intégrité du code et d'éviter toutes manipulations tierces à des fins d'élévation de privilèges par exemple.

Signer un script

Signer un script PowerShell

  • L'exemple suivant permet de signer le script PowerShell nommé MonScriptPowerShell.ps1 :
$cert = Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath MonScriptPowerShell.ps1 -Certificate $cert

Signer plusieurs scripts PowerShell

  • L'exemple suivant permet de signer l'ensemble des scripts PowerShell contenu dans le répertoire C:\MES_SCRIPTS :
$PathScriptToSign = "C:\MES_SCRIPTS\"
$CertCodeSigning = Get-ChildItem Cert:\CurrentUser\My\ -CodeSigningCert

$ListScripts = Get-ChildItem -Path $PathScriptToSign -Name -Include *.ps1

foreach ($line in $ListScripts)
{
   Set-AuthenticodeSignature "$PathScriptToSign$line" -Certificate $CertCodeSigning
}

Stratégie d'approbation d'exécution du code signé

Présentation

Par défaut, la stratégie Microsoft autorise l'exécution des scripts qu'ils soient signés ou pas. La GPO présentée ici à deux fonctions :

  • Forcer les systèmes appliquant la GPO à exécuter uniquement du code signé.
  • Forcer les systèmes appliquant la GPO à exécuter du code signé uniquement pour les signatures autorisées.

Mise en place de la stratégie

Dans cet exemple, cette stratégie s'applique uniquement aux contrôleurs de domaine.

  1. Ouvrir le Tableau de bord du Gestionnaire de serveur puis depuis le menu Outils, cliquer sur Gestions des stratégies de groupe.
  2. Faire un clic droit sur l'objet Domain Controllers puis Créer un objet GPO dans ce domaine, et le lier ici... .
  3. Nommer la GPO O_WINDOWS_ALLSIGNScripts puis cliquer sur le bouton OK.
    MMCGPO NEWOBJECT O WINDOWS ALLSIGNScripts.png
  4. Modifier la GPO puis accéder à la stratégie Configuration ordinateur / Stratégies / Modèles d'administration / Composants Windows / Windows PowerShell puis accéder aux propriétés de la stratégie Activer l'exécution des scripts.
    MMCGPO NEWOBJECT O WINDOWS ALLSIGNScripts EDIT ALLOW SCRIPTS.png
  5. Depuis la boîte de dialogue des Propriétés :
    1. Sélectionner l'option Activer1.
    2. À la section Stratégie d'exécution, depuis le menu de sélection sélectionner la valeur Autoriser uniquement les scripts signés2.
      MMCGPO NEWOBJECT O WINDOWS ALLSIGNScripts EDIT ALLOW SCRIPTS SETTINGS.png