PowerShell Web Access

Dans le dernier article j'introduisais PowerShell Remoting, permettant d'administrer des systèmes Windows à distance. Aujourd'hui je voudrais présenter PowerShell Web Access, une nouveauté de Windows Server 2012. PowerShell Web Access permet d'accéder à une ligne de commande PowerShell sur un serveur distant, depuis n'importe quel navigateur web supportant JavaScript.

Le principe est d'installer PowerShell Web Access, une application IIS, sur un serveur qui servira de passerelle pour permettre l'accès par PowerShell à n'importe quel système sur lequel PowerShell Remoting (WinRM) est active.

Je vais résumer ici la manière dont je l'installe sur mes environnements de tests (comme tout bon IT je préfère faire simple et efficace.) Vous trouverez à la fin de l'article les références utiles entrant dans les détails et les options de l'installation. Dans mon cas je fais toutefois un choix fondamental : j'utilise SSL avec un vrai certificat. Si vous tombez sur une recommandation d'utiliser un certificat de test pour administrer vos serveurs, surtout ignorez-la, puisque cela annulerait la moitié de l'intérêt de SSL, l'authentification du serveur.

Environnement Active Directory et PKI

La première étape donc consiste à disposer d'un environnement Active Directory (AD DS) et PKI (AD CS). S'il s'agit d'un environnement de test, le plus simple est d'installer un contrôleur de domaine Windows Server 2012 et le service AD CS en mode autorité racine intégrée à l'AD. Dans mes maquettes j'installe AD CS sur le contrôleur de domaine.

AD CS nous permettra de disposer d'un certificat pour le serveur hébergeant PowerShell Web Access. S'il s'agit du DC lui-même, le certificat de type Domain Controller qu'il va récupérer fera l'affaire. S'il s'agit d'un serveur membre, choisissez un certificat de type Server. L'important est que le certificat ait l'usage "Server Authentication", et qu'il soit au nom du FQDN du serveur. Par exemple, dc.demo.local dans mon cas. Si vous pensez utiliser un nom DNS différent que le nom du serveur dans le domaine, assurez-vous que le certificat soit au nom qui sera effectivement utilisé. Il s'agit simplement de la manière d'utiliser un certificat SSL pour un site IIS.

Cette diversion terminée, revenons à l'installation qui nous intéresse. Elle va se dérouler en trois étapes :

  1. Installer la feature PowerShell Web Access.
  2. Installer et configurer l'application IIS.
  3. Définir les règles d'autorisation et la sécurité du site.

 

Installation de PowerShell Web Access

PowerShell Web Access est une feature de Windows Server 2012. Pour l'installer par l'interface graphique, depuis le Server Manager, lancer le Add Roles and Features Wizard et installer la feature qui se trouve sous Windows PowerShell :

Add Roles and Features Wizard

Si vous préférez PowerShell (on est quand même là pour ça), cela se fait avec cette commande :

Install-WindowsFeature -Name WindowsPowerShellWebAccess -IncludeAllManagementTools

Installation de l'application IIS

Une fois la fonctionnalité installée, il faut installer l'application web dans IIS, qui permettra d'y accéder. Pour cela, dans PowerShell :

Install-PswaWebApplication

ATTENTION : c'est sur cette commande que vous trouverez dans la plupart des documentations en ligne l'option -UseTestCertificate. Je ne la recommande pas, comme indiqué précédemment, puisqu'elle place automatiquement un certificat de test sur le site.

Pour spécifier le certificat SSL sur le site web :

Depuis le Server Manager, dans le menu Tools, lancer Internet Information Services (IIS) Manager. Dans l'arborescence de gauche, naviguer jusqu'au site web, Default Web Site et cliquer sur Bindings :

IIS Manager

Ajouter un binding de type https sur le port 443, et choisir le certificat du serveur que vous avez pris le soin de récupérer par la PKI interne de votre environnement. Si vous utilisez un nom DNS public, utilisez ici le certificat correspondant.

SSL binding

Règles d'autorisation et la sécurité du site

La dernière étape consiste à établir les règles d'autorisation pour spécifier qui a le droit d'accéder à quel serveur. Autrement dit, il faut définir une règle par serveur et par groupe ou utilisateur. Afin de réduire le nombre de règles il est préférable d'utiliser des groupes. Par exemple, pour donner accès au serveur srv1.w2k12-demo.net pour le groupe Domain Admins :

Add-PswaAuthorizationRule -ComputerName srv1.w2k12-demo.net -UserGroupName "w2k12-demo\Domain Admins" -ConfigurationName Microsoft.PowerShell

Il faut définir autant de règles que nécessaire en fonction des systèmes auxquels ont veut donner accès et des utilisateurs ou groupes qui doivent avoir le droit d'y accéder. Le dernier paramètre (-ConfigurationName) indique le endpoint PowerShell, ou session configuration, sur le système cible. Microsoft.PowerShell est le endpoint par défaut, mais il est possible d'en créer des spécifiques pour par exemple limiter les modules ou commandes accessibles.

Test de l'installation

Une fois l'installation terminée, il ne reste qu'à tester à l'aide d'un navigateur web comme Internet Explorer, en ouvrant l'URL : https://passerellepswa.domaine.local/pswa :

PSWA logon

Dans la page de logon, enter : le nom, le mot de passe, et le nom du système cible. Si les autorisations sont correcte, la page suivante devrait s'afficher, et à vous PowerShell dans IE !

PSWA

La touche <Tab> et le rappel des commandes précédentes par la flèche vers le haut fonctionnent. Si vous utilisez un appareil tactile comme un smartphone ou une tablette, les touches en questions sont disponibles en bas de la page.

La page fonctionne a priori sur tout navigateur avec JavaScript.

Exemples sur Safari sur Mac et sur iPhone :

pswa-safari

pswa-iphone-2

Pour plus d'informations et de détails sur l'installation de PowerShell Web Access :

Téléchargez Windows Server 2012 RC sous la forme d'un fichier ISO ou d'un VHD préinstallé : https://technet.microsoft.com/fr-fr/evalcenter/hh670538.aspx.