Introduction

Avec l'arrivée de nouveaux clients qui sont amenés à se connecter sur vSphere et qui potentiellement peuvent voir accès à des serveurs autres que ceux qu'ils doivent gérer, ou en cas de vol d'identifiant, nous avons besoin d'une solution permettant de connaître quel sont les consoles des VM qui sont ouvertes et quels sont les utilisateurs ainsi que leur niveau de privilège sur Windows.

Problématique

Même si la gestion des droits est extrêmement fine sur vSphere, il est possible que des droits puissent être modifiés par une tierce personne sans forcément penser aux conséquences sur l'héritage ou sur la pertinence des accès. De plus, les accès pour le support 1er niveau ont généralement les droits stop/start/reset sur les machines mais également le droit de console, le plus souvent pour monter un ISO sur la VM. Dans tous ses cas, si une session utilisateur est ouverte sur le serveur, la personne qui s'y connecte obtient les privilèges de l'utilisateur connecté.

Solution

Plusieurs solutions peuvent être mises en place afin de minimiser le risque d'accès au serveur via la console:

Gérer finement les droits des utilisateurs afin de ne leur donner accès qu'a leurs ressources

Limiter à une seule console à la fois par VM

Verrouiller automatiquement la session utilisateur dans Windows au bout d'un certain temps

Afin de permettre aux administrateurs des vCenter d'être au courant régulièrement des consoles ouvertes, le script ci-dessous permet, via les vmware tools installés dans les VM d'interroger directement Windows et de lui demander quels sont les utilisateurs qui possèdent des sessions actives et quels privilèges ils possèdent.

Le script

Description

Le script est composé d'une fonction principale checkOpenedConsole qui prend en paramètre :

clusterName : le nom du cluster vSphere a scanner

loginGuest : Le nom d'un utilisateur Windows ayant les droits administrateur sur la VM

pwdGuest : Le mot de passe associé

Celui-ci va effectuer les actions/vérifications suivantes :

Se connecter aux VM Windows et relever les sessions “consoles” actives

Extraire les login

Regarder dans Active Directory si celui-ci appartient à un groupe d'administrateur

Si c'est le cas, il va directement envoyer un email à la personne concernée lui demandant de fermer sa session

Sinon il va lister toutes les sessions ouvertes et envoyer un email à l'email de notre choix

Pour résumer, en sortie il envoi les emails suivants :

Si un utilisateur est administrateur du domaine et qu'il a une session console active sous Windows

Un listing aux administrateurs des serveurs avec la liste suivante:

Account : MYUSER

email : myuser.name@acme.corp

ConnectionType : console

DomainAdmin : 0

ConnectionStatus : Active

VmName : MyVMName

DomainAdmin peut-être 0 (non admin) ou 1 (admin)

Utilisation

<script powershell>

</script>