Gestion à distance avancée
Introduction
Depuis la version 2.0 de PowerShell, les fonctionnalités autour de l’administration à distance n’ont cessé d’évoluer, même si le principe de base reste le même. La recrudescence des cyberattaques pousse les sociétés et organismes divers à revoir fortement leur politique de sécurité. L’un des éléments importants est l’acquisition de privilèges destinés spécifiquement à une personne ou un rôle. Le fait de donner plus de privilèges que nécessaire engendre des failles potentielles exploitables par un attaquant en cas de corruption du compte utilisateur. Sous Linux, il y a sudo, sous Windows, il y a JEA.
Avant d’aller plus loin, il est important d’avoir parfaitement assimilé les bases des sessions PowerShell, ainsi que l’administration à distance. Un rappel sera effectué, mais cela ne couvrira pas l’ensemble du thème. Il sera simplement limité à la configuration de sessions via JEA.
JEA (Just Enough Administration)
JEA (Just Enough Administration) est une amélioration de la gestion des sessions apparue avec la version 5.0 de PowerShell. JEA permet de limiter les commandes PowerShell que les administrateurs et utilisateurs peuvent exécuter sur les systèmes. C’était déjà le cas dans les anciennes versions, mais la mise en place et l’exploitation étaient laborieuses. On devait mettre à jour les droits des sessions avec une GUI d’ACL. Dans JEA, les rôles sont gérés par des fichiers. Ces fichiers peuvent être gérés manuellement, mais il existe également des commandes facilitant le travail.
1. Pourquoi JEA ?
JEA améliore la sécurité des systèmes administrés à distance. On retrouve ici la notion de RBAC (Role-Based Access Control). Cette dernière exprime le besoin de définir l’accès à une ressource en fonction du rôle de l’utilisateur. Pour y parvenir, JEA dispose de trois mécanismes principaux :
-
Limiter les opérations réalisables par chaque utilisateur en fonction de leur rôle.
-
Auditer les actions réalisées par chaque utilisateur.
-
Limiter le nombre d’administrateurs sur les systèmes.
2. Prérequis
La version 5.0 ou une version supérieure de PowerShell est nécessaire. Toutefois, la version 5.1 standard est le minimum recommandé. Celle-ci est disponible de base depuis les systèmes Windows 10 et Windows Server 2016. Concernant les versions antérieures de Windows, il est possible d’installer le Management Framework 5.1 sorti en version release depuis janvier 2017. En prérequis de son installation, le système doit disposer au minimum du framework DotNet 4.5.2. Les informations et liens nécessaires sont disponibles ici : https://learn.microsoft.com/en-us/powershell/scripting/learn/remoting/jea/prerequisites?view=powershell-5.1
Attention : certaines fonctionnalités ne sont pas disponibles en fonction des systèmes d’exploitation. Pour plus d’informations, il est recommandé de se référer à la documentation en ligne de JEA. Il est également important de prendre en compte la fin de vie des différents systèmes d’exploitation.
Autre...
PowerShell Web Access
PowerShell Web Access est une fonctionnalité disponible depuis Windows Server 2012. Elle n’a pas beaucoup évolué depuis ces débuts. Le but de cette fonctionnalité est de proposer une administration des périphériques via une console PowerShell à travers un navigateur web. Ainsi, à partir de n’importe quels périphériques (smartphone, tablette, PC), et peu importe la plateforme (Android, iOS, etc.), sans outil supplémentaire, on peut lancer des commandes/scripts PowerShell.
Cela nécessite bien sûr une bonne réflexion au niveau de la sécurité si l’on rend l’application disponible depuis Internet. Même si le site web est sécurisé avec le protocole SSL.
1. Prérequis
Pour mettre en place PowerShell Web Access, il est nécessaire de respecter un certain nombre de prérequis aussi bien au niveau du navigateur web qu’au niveau du serveur.
-
Serveur :
-
Windows Server 2012 ou une version supérieure (Datacenter ou Standard)
-
Rôle Web Server (IIS)
-
framework .NET 4.5
-
Windows PowerShell 3.0 ou une version supérieure
La version 3.0 de PowerShell est celle disponible initialement dans Windows Server 2012.
-
Liste des navigateurs web de bureau testés officiellement :
-
Windows Internet Explorer 8.0 à 11.0
-
Mozilla Firefox 10.0.2
-
Google Chrome 17.0.963.56m pour Windows
-
Apple Safari 5.1.2 pour Mac OS
Toutefois, l’application peut fonctionner sur d’autres navigateurs. Pour cela, ils doivent autoriser les cookies, accepter l’exécution de JavaScript et accepter les connexions HTTP.
Exemple de navigateurs et appareils mobiles qui ont subi des tests minimaux de bon fonctionnement :
-
Windows Phone 7 et 7.5
-
Google Android WebKit 3.1 Browser Android 2.2.1 (Kernel 2.6)
-
Apple Safari pour iOS 5.0.1
Il s’agit de données officielles tirées du site MSDN Microsoft. Les exemples qui suivent ont tous été réalisés depuis l’application Edge Windows 10 Phone et un navigateur Google Chrome.
2. Installation
Pour procéder à l’installation de PowerShell Web Access, soit on lance une console PowerShell en tant qu’administrateur et on exécute la commande Install-WindowsFeature :
PS > Install-WindowsFeature -Name WindowsPowerShellWebAccess...
Session distante avec SSH
Les sessions à distance sur PowerShell Core ne posent pas énormément de problèmes en environnement Windows. Quand on inclut Linux ou macOS dans la boucle, c’est une autre histoire. En effet, Linux et macOS ne connaissent pas WinRM et WSMan. Ces deux éléments sont purement Windows. Néanmoins, il existe déjà un mécanisme de session à distance sur Linux et macOS. Il s’agit d’OpenSSH. Ce dernier utilise le protocole SSH.
Afin de faciliter la communication entre les différents environnements, l’équipe PowerShell a décidé de porter une solution OpenSSH sous Windows et de l’utiliser sous PowerShell Core.
L’avantage de la solution OpenSSH est qu’elle ne nécessite pas d’environnement de domaine ou la génération manuelle de certificats pour chiffrer les flux. Tout est déjà crypté de bout en bout de manière native.
1. Installation sous Windows
La solution OpenSSH sous Windows comporte deux éléments, la partie client et la partie serveur. La première implémentation a eu lieu sous Windows Server 2016 et Windows 10. Il existe deux manières de les installer, soit en passant par le dépôt GitHub, soit directement depuis les fonctionnalités facultatives du système.
Pour l’exemple, on passera par les fonctionnalités facultatives et les commandes Get-WindowsCapability et Add-WindowsCapability.
Dans cette section, nous nous concentrerons sur la partie serveur.
Liste des capacités openSSH
PS > Get-WindowsCapability -Name OpenSSH.Server* -Online
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
DisplayName : OpenSSH Server
Description : OpenSSH-based secure shell (SSH) server, for secure key
management and access from remote machines.
DownloadSize...