Windows Server 2012 – PowerShell Web Access
Sommaire
I. Présentation
PowerShell Web Access est une fonctionnalité disponible depuis Windows Server 2012 et qui permet d'avoir un accès sur une console PowerShell en mode web, sur un de vos serveurs Windows situés en front-end, dans le but d'administrer vos serveurs en internes depuis cette interface.
Ainsi, plutôt que d'installer les outils d'administration à distance sur votre machine, vous pouvez gérer à distance vos serveurs en utilisant un navigateur compatible, que ce soit depuis un ordinateur, un smartphone ou une tablette. Bien sûr, vous devez disposer d'un accès à internet.
II. Configuration requise côté client
Au niveau du client, vous devez disposer d'un navigateur compatible.
- Internet Explorer (8.0, 9.0, 10.0)
- Mozilla Firefox (à partir de 10.0.2)
- Google Chrome (à partir de 17.0.963.56m)
- Safari (5.1.2)
Le mieux ce sera de tester directement, il y a tellement de navigateurs différents, de plateforme différentes et de versions différentes... Quoi qu'il en soit le navigateur devra être capable de lire des pages HTTPS, d'autoriser les Cookies du site web de la passerelle PowerShell, et, de prendre en charge le JavaScript.
III. Configuration requise côté serveur
Au niveau du serveur, le système d'exploitation doit bien entendu être Windows Server 2012 (ou 2012 R2), disposer de Windows Powershell 3.0 (disponible depuis Windows Server 2012), du .NET Framework 4.5 et d'un serveur Web IIS pour l'hébergement du site Web.
IV. Installation de la fonctionnalité
Pour l'installation je vous propose deux méthodes : via l'interface graphique ou via une commande PowerShell. A vous de choisir !
A. Via l'interface graphique
Ouvrez le Gestionnaire de serveur, cliquez sur "Gérer" et "Ajouter des rôles et fonctionnalités".
Cliquez sur "Suivant" pour passer le message "Avant de commencer" de l'assistant. Choisissez "Installation basée sur un rôle ou une fonctionnalité" et poursuivez.
Sélectionnez le serveur sur lequel vous souhaitez installer la fonctionnalité puis continuez.
Passez l'étape des rôles, puis, dans les fonctionnalités cliquez sur la flèche à gauche de "Windows PowerShell" et cochez "Accès Web Windows PowerShell". Cochez la case pour inclure les outils de gestion pour qu'IIS soit installé sur votre serveur et que l'accès web fonctionne correctement. Poursuivez.
Confirmez que vous souhaitez installer cette fonctionnalité puis patientez, comme pour toute installation.
Redémarrez votre serveur pour finir une fois l'installation terminée.
B. Via PowerShell
Concernant l'installation via PowerShell, exécutez une console avec les droits Administrateur. Il est possible de repérer le nom de la fonctionnalité de Powershell Web Access grâce à la commande suivante :
Get-WindowsFeature
Éventuellement pour avoir une vue plus agréable à lire :
Get-WindowsFeature | ft DisplayName,Name
On remarque que le nom de la fonctionnalité est "WindowsPowerShellWebAccess". Saisissez la commande suivante pour l'installer :
Install-WindowsFeature -Name WindowsPowerShellWebAccess -ComputerName SRV1.it-connect.fr -IncludeManagementTools -Restart
Remplacez la chaîne à la suite de "-ComputerName" par le nom de votre serveur. Quant à "-IncludeManagementTools" c'est utile pour installer toutes les dépendances utiles au fonctionnement et "-Restart" pour redémarrer le serveur si besoin.
V. Configuration de la passerelle
Pour configurer la passerelle, là encore il y a plusieurs méthodes, où l'on mixe l'utilisation de l'interface graphique et de PowerShell. Passons désormais à la configuration de la passerelle, ouvrez une console avec des droits élevés.
Dans le cas d'un environnement de test, la configuration de l'application dans un site IIS ainsi que l'installation d'un certificat est réglé en une commande PowerShell. Cependant, si vous effectuez la mise en place avec un certificat SSL authentique et vérifié, la procédure est un peu plus longue. Voyons les deux cas, où il sera question à chaque d'utiliser le commandlet nommé Install-PswaWebApplication.
A. Environnement de test
Dans le cadre d'un environnement de test, vous pouvez mettre en place la configuration facilement avec la commande suivante :
Install-PswaWebApplication -UseTestCertificate
Note : Le certificat de test expirera dans 90 jours
Toutefois, ne la saisissez pas si vous souhaitez modifier le nom de l'application. Dans ce cas, vous devrez ajouter le paramètre "WebApplicationName" à la commande :
Install-PswaWebApplication –WebApplicationName MonApp –UseTestCertificate
Note : Pour changer le nom du site dans lequel créer l'application, utilisez le paramètre "WebSiteName"
B. Environnement de production
Dans le cas d'un environnement de production où vous disposez d'un certificat authentique, voici la procédure à suivre. Exécutez la commande PowerShell comme pour le cas précédent en spécifiant le nom du site et/ou le nom de l'application mais sans ajouter "UseTestCertificate" puisque l'on est plus dans un cas de test.
Install-PswaWebApplication
Ceci créera une application dans IIS. Ensuite, dans le gestionnaire positionnez-vous sur le site dans lequel vous avez installé l'application (par défaut : Default Web Site). Sur la droite, cliquez sur "Liaisons" puis sur "Ajouter".
Remplissez les différents champs avec les valeurs correspondantes à votre configuration, mais au niveau du type vous devez impérativement indiquer "https". Quand vous aurez fait ce choix, un champ nommé "Certificat SSL" apparaîtra en dessous, indiquez-y votre certificat authentique de sécurité. Validez.
Pour le moment la configuration est effectuée, le site de l'application mit en place, on doit pouvoir y accéder mais on ne peut pas s'authentifier car nous n'avons pas géré d'authentification.
C. Suppression de l'application
Enfin, pour finir avec cette partie configuration avant d'attaquer les permissions, voici comment supprimer l'application PowerShell Web Access du serveur IIS (si besoin) :
Uninstall-PswaWebApplication -DeleteTestCertificate
Ajoutez l'option "DeleteTestCertificate" uniquement si vous avez installé l'application en mode test c'est à dire avec la directive "UseTestCertificate" auparavant.
VI. Configuration des permissions
Pour finir et afin de pouvoir utiliser le nouveau rôle mit en place sur notre serveur, nous allons voir comment définir des permissions d'accès. Par défaut, aucune autorisation n'est définie sur l'application, vous pourrez le vérifier avec la commande : Get-PswaAuthorizationRule. En fait, il y a 4 commandlets principaux :
- Get-PswaAuthorizationRule : Visualiser les règles de permissions actuelles
- Add-PswaAuthorizationRule : Ajouter une nouvelle règle
- Remove-PswaAuthorizationRule : Supprimer une règle définie auparavant
- Test-PswaAuthorizationRule : Test un accès selon plusieurs paramètres définis dans la commande
Avant de commencer, je vous retransmet ici une remarque de sécurité intéressante que j'ai trouvé sur le site de Microsoft : "Il suffit qu’une règle soit satisfaite pour qu’un utilisateur obtienne l’accès. Si un utilisateur se voit accorder l’accès à un seul ordinateur avec accès linguistique complet ou avec accès uniquement aux applets de commande de gestion à distance Windows PowerShell, depuis la console Web, il peut se connecter à d’autres ordinateurs qui sont connectés au premier ordinateur cible. La manière la plus sécurisée de configurer l’Accès Web Windows PowerShell consiste à autoriser les utilisateurs à accéder uniquement à des configurations de sessions contraintes (également appelées points de terminaison ou instances d’exécution) pour les autoriser à accomplir des tâches spécifiques qu’ils ont normalement besoin d’effectuer à distance."
Les configurations de sessions se sont des paramètres saisis dans un fichier ".pssc" qui permettent de paramétrer la session PowerShell sur l'hôte sur lequel vous vous connectez et de vous restreindre éventuellement à certaines actions ou à l'utilisation de certaines commandes. Ainsi, vous donnez l'accès PowerShell à distance sur vos serveurs mais tout en mettant en place des restrictions pour sécuriser l'accès (et notamment éviter cette notion de cascade où l'on se connecterait à un serveur puis depuis ce serveur à un autre serveur, etc.). Informations sur les fichiers de session : PSSC Session File
La session PSSession utilisée doit être disponible sur l'ensemble des ordinateurs concernés par la règle. Pour visualiser les PSSession d'une machine utilisez la commande suivante :
Invoke-Command {get-pssessionconfiguration} -ComputerName SRV-AD01
A. Ajout d'une nouvelle règle
Pour créer une nouvelle règle nous utiliserons le command-let Add-PswaAuthorizationRule dont je vous ai parlé précédemment.
Par exemple, pour donner à l'utilisateur "fburnel" le droit d'établir une connexion vers le serveur "SRV-AD01" avec la PSSession "microsoft.powershell" et en nommant la règle "Accès à SRV-AD01 pour Florian".
Add-PswaAuthorizationRule -rulename "Accès à SRV-AD01 pour Florian" -computername SRV-AD01 -username IT-CONNECT\fburnel -configuration microsoft.powershell
La règle d'autorisation de connexion est désormais créée. Vous pouvez accéder à votre interface Powershell Web Access pour effectuer une connexion. Renseignez votre nom d'utilisateur qui a le droit de connexion, son mot de passe, puis ensuite le nom de l'ordinateur cible, il peut être intéressant également de saisir des informations d'identification différentes encore en dessous pour que l'accès soit effectué sous forme de double authentification : Un utilisateur ayant le droit de connexion depuis la passerelle Powershell et un autre le droit d'accès à la console.
Connectez-vous, vous obtiendrez une session Powershell sur l'hôte distant :
Cliquez sur "Quitter" en bas à droite pour vous déconnecter du serveur.
B. Supprimer une règle
Si vous faites une erreur lors de la définition d'une règle ou qu'une de vos règles devient obsolète, vous voudriez surement la supprimer. Pour cela, on utilise le commandlet "Remove-PswaAuthorizationRule" cité plus haut.
Pour réaliser la suppression, on peut utiliser l'ID de la règle. Ce qui est simple puisqu'il s'agit d'un identifiant unique à chaque règle. Pour récupérer cette identifiant, saisissez la commande permettant de lister l'ensemble des règles (Get-PswaAuthorizationRule) et repérez l'identifiant dans la première colonne.
Ensuite, par exemple si le numéro de règle est le "0" on saisira :
Remove-PswaAuthorizationRule -Id 0
Vous pouvez ensuite lister à nouveau les règles pour vérifier qu'elle est bien supprimée.
VII. Nouveautés depuis Windows Server 2012 R2
[Mise à jour 27/11/2013] Windows PowerShell Web Access inclus les nouveautés suivantes dans Windows Server 2012 R2 :
- Se déconnecter et se reconnecter sur des sessions existantes grâce à un bouton qui permet de sauvegarder la session en cours.
- Définir et afficher les paramètres par défaut sur la page de connexion
- Gérer les règles d'autorisation à distance grâce à un paramètre "Credential" désormais présent dans les commandlets de Pswa.
- Utilisation de plusieurs sessions simultanées dans une même session de navigateur grâce aux onglets.
Ce tutoriel sur Powershell Web Access touche à sa fin, n'hésitez pas à donner votre avis et éventuellement apporter vos compléments d'informations.
Salut!
Je suis vraiment impressionné par votre site et surtout par son contenu.
Je suis un jeune informaticien et je suis en train de faire un stage dans une entreprise qui se situe en bordure de mer ce qui fait qu’on a souvent
des problèmes liés à la proximité de la mer comme la présence de fines gouttes de sels sur le ventilateur des CPU et autres.
J’aimerais savoir quels conseils pouviez vous me donnez pour éviter les pannes récurrentes liés à mon environnement.
Merci!
Salut,
Pas évident à gérer les contraintes environnementales comme ça… Tu devrais te renseigner sur internet s’il existe du matériel (type ventilateur) avec des filtres spécifiques pour éviter justement ce genre de problème. Ce type de panne arrive régulièrement ?
La prochaine fois, pour ce type d’intervention merci d’utiliser le forum qui sera plus approprié.
Merci, et, bonne soirée.
Florian
Lance une discussion sur le Forum, je suis sur que d’autres viendront à ton aide ! =)
Ca nous permettra également de continuer la discussion dans un espace dédié à celle-ci
Salut!
Je vous remercie vraiment pour ce tuto combien de fois intéressant.
Mais j’aimerais, au passage, savoir si je peux utiliser un certificat en local différent d’un certificat de test, depuis le Windows Server 2012, dans un environnement de production, et quelle est la meilleur façon de créer ce certificat.
Merci et bonne soirée!