Just Enough Administration avec Windows Server 2016

Introduction

JEA est une technologie de sécurité qui permet une administration déléguée granulaire via PowerShell. Avec JEA, il est possible de :

  • Réduire le nombre d’administrateurs sur les machines
  • Limiter ce que les opérateurs et/ou les administrateurs peuvent faire
  • Offrir une meilleure compréhension de ce que les opérateurs et/ou administrateurs peuvent faire
  • Réduire la surface d’attaque possible en cas de compromission d’un compte

JEA a besoin de PowerShell v5.0, de Windows Management Framework 5.1 pour fonctionner et il est directement intégré à Windows Server 2016.

JEA s’appuie sur trois piliers :

  • Le fichier de capacité de rôle : Le fichier de capacité de rôle permet de définir quelles sont les commandes PowerShell qui pourront être exécutées, les exécutables externes pouvant être exécutés, les modules externes pouvant être chargés …
  • Le fichier de configuration de session : Le fichier de configuration de session permet de déterminer qui a le droit d’utiliser le point de terminaison JEA. Il permet également de définir quels sont les paramètres généraux affectés à l’utilisateur lors de la connexion
  • L’enregistrement du point de terminaison : Dernière étape permettant la création du point de terminaison pour la session

 

Exemple

Dans cet exemple, je vais limiter l’accès en lecture à un groupe d’administration au FSRM (File Server Ressource Manager) sur un serveur de fichier.

 

Préparation

Sur le serveur de fichier, activer l’administration à distance de PowerShell avec la commande :

Enable-PSRemoting

1

Idéalement, Microsoft préconise l’activation des logs pour les blocs PowerShell. Cette activation peut s’effectuer par GPO ou stratégie locale dans :

Configuration Ordinateur / Modèles d’administration / Composants Windows / Windows PowerShell

Les paramètres à activer sont :

  • Activer l’enregistrement des modules (\*)
  • Activer la journalisation de blocs de scripts PowerShell

Il faut ensuite déterminer les commandes à intégrer pour la création du fichier de capacité de rôle. Dans cet exemple, il y aura :

  • Quelques commandes Get-fsrm*
  • Une commande externe whoami

 

Création du fichier de capacité de rôle

Il faut d’abord créer un fichier de capacité de rôle. Ce fichier de capacité de rôle est, de base, vide. Il est cependant possible de le remplir manuellement ou directement avec les paramètres dans la commande PowerShell.

Nous allons donc créer un fichier de capacité de rôle nommé « Read_Only_Admin_FSRM.psrc » avec la commande :

New-PSRoleCapabilityFile -Path .\Read_Only_Admin_FSRM.psrc

2

Il est ensuite nécessaire de stocker notre fichier de capacité de rôle dans un dossier et dans un module. Le dossier doit être stocké dans un emplacement disponible dans la variable :

$env:PSModulePath

3

La création du dossier, du module et du manifest est effectuée avec les commandes suivantes :

$modulePath = Join-Path $env:ProgramFiles "WindowsPowerShell\Modules\NWTRADERSJEA"
New-Item -ItemType Directory -Path $modulePath

4

New-Item -ItemType File -Path (Join-Path $modulePath "NWTRADERSJEAFunctions.psm1")
New-ModuleManifest -Path (Join-Path $modulePath "NWTRADERSJEA.psd1") -RootModule " NWTRADERSJEAFunctions.psm1"

5

$rcFolder = Join-Path $modulePath "RoleCapabilities"
New-Item -ItemType Directory $rcFolder
Copy-Item -Path .\Read_Only_Admin_FSRM.psrc -Destination $rcFolder

6

Il est ensuite nécessaire de modifier le fichier *.psrc qui se trouvre à l’emplacement suivant :

C:\Program Files\WindowsPowerShell\Modules\NWTRADERSJEA\RoleCapabilities\Read_Only_Admin_FSRM.psrc

Décommenter les paramètres VisibleCmdlets et VisibleExternalCommands et ajouter les paramètres suivants :

  • VisibleCmdlets = ‘Get-FsrmAdrSetting’, ‘Get-FsrmAutoQuota’, ‘Get-FsrmClassification’, ‘Get-FsrmClassificationPropertyDefinition’, ‘Get-FsrmClassificationRule’
  • VisibleExternalCommands = ‘C:\Windows\System32\whoami.exe’

 

Création du fichier de session et enregistrement de la session

La création du fichier de session s’effectue avec la commande PowerShell :

New-PSSessionConfigurationFile

Comme pour la création du fichier de capacité, le fichier de session peut-être créé vierge ou directement avec les options. Dans notre exemple, je vais créer le fichier de session avec les paramètres grâce au script suivant :

#Définition des paramètres
$ConfParams = @{
      SessionType = 'RestrictedRemoteServer'
      RunAsVirtualAccount = $true
      RoleDefinitions = @{
          #Définition du rôle ainsi que du fichier de capacité
          $NonAdministrator = @{ RoleCapabilities = 'Read_Only_Admin_FSRM'}
      }
      TranscriptDirectory = "$env:ProgramData\JEAConfiguration\Transcripts"
}
New-Item -Path "$env:ProgramData\JEAConfiguration" -ItemType Directory

#Définition du nom de la session
$SessionName = 'JEA_FSRM_AdminRO'

#Création du fichier de session
New-PSSessionConfigurationFile -Path "$env:ProgramData\JEAConfiguration\JEAFSRMRO.pssc" @ConfParams

Une fois que le fichier de session est crée, il ne reste plus qu’a l’enregistrer avec la commande :

Register-PSSessionConfiguration

Dans notre exemple, la commande est la suivante pour l’enregistrement de la session « JEA_FSRM_AdminRO » :

#Enregistrement de la session
Register-PSSessionConfiguration -Name $SessionName -Path "$env:ProgramData\JEAConfiguration\JEAFSRMRO.pssc"

Test de connexion

Ensuite, à partir d’un client, il faut tester la connexion. Renseigner les identifiants de connexion avec :

$credential = Get-Credential

7

Il faut ensuite se connecter à la session PowerShell distante avec la commande suivante :

Enter-PSSession -ComputerName JEA-FS01 -ConfigurationName JEA_FSRM_AdminRO -Credential $credential

8

Une fois la connexion réussie, on peut vérifier sous quelle identité la connexion est effectuée avec la commande :

whoami

9

On peut également ensuite vérifier les commandes qui sont autorisées dans la session PowerShell avec la commande :

Get-Command

10

Conclusion

JEA permet de créer des rôles d’administration avec des droits très restrictifs, cependant la mise en place peut-être relativement compliquée.

Pour massivement déployer des sessions JEA, il est possible d’utiliser DSC.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s