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

Avantages du déploiement

La signature Authenticode permet d'accroître la sécurité de l'environnement d'exécution du code sous l'environnement Microsoft Windows :

  • Elle permet d'apposer une signature sur un fichier ou un script.
  • Il est possible de restreindre l'exécution du code uniquement si ce dernier a été signé.
  • Il permet de garantir l'intégrité du code et d'éviter toutes manipulations tierces à des fins d'élévation de privilèges.
  • Il est possible de gérer les signatures de confiance sur un environnement Active Directory.

Scénario de déploiement

Le scénario s'appuie sur deux approches :

  • Signer l'ensemble des scripts qui ont été produit à l'aide d'un certificat personnel délivré par l'Autorité de Certification privée de l'Etablissement.
  • Restreindre l'exécution des scripts et n'autoriser que les scripts signés avec des certificats déterminés.

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 contenus 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.

Autoriser uniquement les scripts signés

  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

Gérer la liste des certificats approuvés

  1. Ouvrir le Tableau de bord du Gestionnaire de serveur puis depuis le menu Outils, cliquer sur Gestions des stratégies de groupe.
  2. Modifier la GPO O_WINDOWS_ALLSIGNScripts puis Accéder à la stratégie Configuration ordinateur / Stratégies / Paramètres Windows / Paramètres de sécurité / Stratégies de clé publique / Editeurs approuvés.
    1. Depuis la liste des certificats des éditeurs approuvés, faire un clic droit puis Importer... . L'Assistant Importation du certificat s'affiche.

Application de la stratégie

  1. Ouvrir un terminal de commande PowerShell ou CMD puis exécuter la commande suivante :

gpupdate /force