Archives de avril, 2016

S’applique à : AppLocker 2012 et 2012 R2

Note : Si vous n’avez pas encore découvert la fonctionnalité « Applocker » et son fonctionnement sous Windows Server 2012 R2, je vous invite à consulter cet article :

[PART1] Introduction à AppLocker sous Windows Server 2012 R2

Introduction

Windows PowerShell est l’interpréteur de commandes qui vous simplifie la vie :), en effet, si vous êtes amenés à implémenter, tester et gérer des Règles de restrictions logicielles via AppLocker 2012 ou 2012 R2, sachez que Windows PowerShell peut vous aider à accélérer le processus d’implémentation des Stratégies Applocker.

Depuis Windows Server 2008 R2, Microsoft a introduit un nouveau Module PowerShell qui vous permet de créer, tester et gérer les Stratégies AppLocker, il s’agit du Module « Applocker ».

Ce dernier regroupe cinq Cmd-lets, saisissez Get-Command -Module AppLocker depuis une console Windows PowerShell pour en savoir plus :

AppLocker_1

Le tableau ci-après détaille plus d’informations sur chaque Cmd-let :

Cmd-let Description
Get-AppLockerFileInformation Permet de collecter des informations nécessaires pour AppLocker, et ce à partir d’un répertoire spécifique ou des Journaux d’événements.

Les informations collectées peuvent inclure des informations sur l’éditeur, Hash ou encore chemin d’accès aux fichiers

Set-AppLockerPolicy Permet de configurer et lier une Stratégie AppLocker à une GPO
Get-AppLockerPolicy Permet de lister les Stratégies AppLocker à partir d’une GPO Locale, du Domaine ou effective
New-AppLockerPolicy Utilise les informations collectées (via la Cmd-let Get-AppLockerFileInformation) pour générer automatiquement une Règle pour un utilisateur ou un groupe d’utilisateurs spécifique. Les règles générées peuvent être basées sur l’éditeur, Hash ou chemin d’accès.
Test-AppLockerPolicy Utilise une Stratégie AppLocker spécifique pour tester si un fichier ou une liste de fichiers est autorisée à s’exécuter sur la machine locale, et ce pour un utilisateur donné
Créez vos Règles AppLocker

Avant de pouvoir créer vos Règles de restrictions logicielles, AppLocker a besoin d’analyser et collecter certaines informations sur les Apps /Programmes dont l’exécution doit être autorisée ou restreinte.

Pour ce faire, la Cmd-let « Get-AppLockerFileInformation » doit être utilisée, dans l’exemple suivant, elle sera utilisée pour scanner le dossier C:\Sources afin de collecter les informations sur le Hash, Editeur … sur les exécutables /scripts /Libraries DLL qui y sont stockés

1

Note : le paramètre -Recurse est utilisé pour prendre en compte les sous-dossiers et fichiers du Dossier spécifié au niveau du paramètre -Directory.

La commande peut être suivie de « | Out-GridView » pour une meilleure visibilité des données collectées et retournées par la Cmd-let Get-AppLockerFileInformation

2

Comme illustré dans l’image ci-dessus, la Cmd-let Get-AppLockerFileInformation ne remonte aucune information sur l’éditeur « Publisher » concernant les deux .EXE (CA_SETUP.exe & ASE_SETUP_FINAL.exe).

Cette information est à prendre en compte lors de la création des Règles AppLocker.

Nous allons donc créer une nouvelle Règle AppLocker basée uniquement sur le Path ou Hash ou les deux pour autoriser les exécutables du dossier C:\Sources.

Une technique de création « Rapide » des Règles AppLocker existe, il s’agit de « piper » le résultat retourné par la Cmd-let Get-AppLockerFileInformation, et le passer à la Cmd-let « New-AppLockerPolicy »

Comment ça marche ?

Tout d’abord, les trois informations suivantes sont à renseignées  :

  • Type de règle (paramètre -RuleType) : Path et/ou Publisher et/ou Hash
  • Utilisateur ou Groupe d’utilisateurs (paramètre -User) : Utilisateur ou Groupe d’utilisateurs (locaux ou d’un domaine AD)
  • Nom de la règle (paramètre -RuleNamePrefix)

Dans l’exemple suivant, nous allons créer une règle AppLocker (nommée DevApps) pour autoriser l’exécution des Apps placées dans le dossier C:\Sources en se basant sur leur Hash, et ce uniquement pour le groupe d’utilisateurs AD « UtilisateursAppLocker« . La configuration de la règle est ensuite exportée vers un fichier XML nommé « DevApps.XML », ce dernier sera placé sur C:.

Get-AppLockerFileInformation -Directory C:\Sources -Recurse | New-AppLockerPolicy -RuleType Hash -User UtilisateursAppLocker -RuleNamePrefix DevApps -XML | Out-File C:\DevApps.XML 

Testez vos Règles AppLocker

Les « Best Practices » MS consistent à tester et valider les règles AppLocker avant toute application /déploiement sur un environnement de production.

Tester les règles AppLocker au préalable permet en effet de détecter tout impact /effet de bord sur les autres Apps existantes sur vos serveurs ou simplement corriger une erreur de configuration.

Le test des règles AppLocker peut être effectué via la Cmd-let Test-AppLockerPolicy.

Dans l’exemple suivant, nous allons tester (simuler) l’exécution de l’Application « ZoomIT.exe » placé dans le dossier C:\Sources :

Test-AppLockerPolicy -XMLPolicy C:\DevApps.XML -Path C:\Sources\ZOOMIT.exe

Le résultat retourné par cette commande détaille l’action qui sera effectuée par AppLocker après exécution de l’exe ZoomIT.

Cela vous permet de vous assurer que la restriction logicielle sera bien en place lors de l’application de la règle AppLocker.

Appliquer vos règles AppLocker

Le fichier XML généré précédemment peut être importé (appliqué) :

  • sur une GPO locale (restriction appliquée uniquement sur une seule machine)
  • sur une GPO du domaine (restriction appliquée sur un ou plusieurs machines : selon la liaison de la GPO > OU, Site, Domaine … )

Pour importer le fichier XML sur une GPO locale, la commande suivante est utilisée :

Set-AppLockerPolicy –XMLPolicy C:\DevApps.XML

Pour importer le fichier XML sur une GPO du domaine, la commande suivante est utilisée :

Set-AppLockerPolicy –XMLPolicy C:\DevApps.XML -LDAP « LDAP://FQDN_DC/CN={GUID},CN=Policies,CN=System,DC=MonDomaine,DC=lan »

Vous devez remplacer les variables suivantes par les informations liées à votre domaine AD et DC.

FQDN_DC = Nom DNS du DC hébergeant les services AD DS

GUID = ID de la GPO dans laquelle les règles configurées sur le fichier XML seront importées

MonDomaine = Nom NetBIOS de votre domaine AD

Note : le GUID d’une GPO peut être obtenu via la commande suivante :

Get-GPO -All | select DispayName, ID

TMP_AppLocker1

Dans l’exemple suivant, les règles du fichier XML DevApps.XML seront importées dans la GPO « AppLocker » dont le GUID est 53fa551d-2e8e-436a-8a35-f0dc7f534dcd

Set-AppLockerPolicy –XMLPolicy C:\DevApps.XML -LDAP « LDAP://LABDC01.vLAB.LAN/CN={53fa551d-2e8e-436a-8a35-f0dc7f534dcd},CN=Policies,CN=System,DC=vLAB,DC=LAN »

Après exécution de la commande ci-dessus, lancez l’outil GPMC.msc, naviguez jusqu’à la GPO utilisée précédemment et constatez l’apparition de nouveaux paramètres, notamment l’apparition des règles AppLocker :

TMP_AppLocker2

Cet article est un extrait de l’eBook : AppLocker 2012 R2 – Design et déploiement en Entreprise [Guide du Consultant]

applocker_cover

Publicités

MSAzure_eBook_Cover

Hello everyone,

Microsoft a récemment publié un eBook gratuit et assez complet sur Microsoft Azure :

Microsoft Azure Essentials: Fundamentals of Azure

Si vous souhaitez donc découvrir MS Azure ou simplement monter en compétences sur cette Plateforme Cloud MS, cet eBook est fait pour vous.

Il est téléchargement gratuitement ici.

Bonne lecture à tous.

Bonjour tout le monde,

Aujourd’hui, j’aimerais partager avec vous une astuce concernant Windows PowerShell.

Lors d’une intervention, la question suivante m’a été posée :

Comment cacher la console Windows PowerShell lors de l’exécution d’un script ?

La réponse est la suivante:

PowerShell.exe -WindowStyle Hidden -File D:\MonScriptPS.ps1

Lancez donc Windows PowerShell (en tant qu’Admin) et saisissez la commande ci-dessus en remplaçant D:\MonScriptPS.ps1 par le chemin de votre Script PowerShell.

Si toutefois vous n’avez pas le contrôle sur la manière dont le script est lancé /appelé, vous pouvez rajouter la ligne de code suivante au début de votre script.

Add-Type -Name win -MemberDefinition ‘[DllImport(« user32.dll »)] public static extern bool ShowWindow(int handle, int state);’ -Namespace native [native.win]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle,0)

Save, Run and Enjoy :).