Mise en place d’un certificat signé par une autorité de certification sur une baie Dell EMC Unity

Logo Dell EMC Unity
Par défaut

A peu près tout le monde s’accorde à dire que la sécurisation des communications est un enjeu majeur pour les entreprises. Malheureusement le problème est trop rarement pris en compte en ce qui concerne les interfaces d’administration des différents éléments qui composent le SI. La mise en place de certificats valides en remplacement des autosignés serait un grand pas en avant. Alors pourquoi ce principe de sécurité de base est-il trop peu souvent appliqué ? Une explication possible est que souvent les éditeurs/constructeurs ne facilitent pas la tâche aux intégrateurs/administrateurs en ne documentant pas (ou trop succinctement) les opérations à réaliser pour atteindre ce but.

Dans cet article je vous propose de remédier partiellement à ce problème en détaillant la procédure pour installer un certificat signé par une autorité de certification Microsoft Active Directory sur une baie Dell EMC Unity. Ce certificat servira à:

  • Garantir que vous êtes bien connecté à la baie souhaité, on peut ainsi dire qu’il fait office de carte d’identité de l’équipement,
  • Chiffrer les communications entre votre navigateur et la baie.
  • Ne plus avoir à cliquer 36 fois pour certifier que oui, on veut vraiment se connecter à cette baie même si les communications ne sont pas sécurisées…

Bien que spécifiquement rédigée pour les Unity, cette procédure devrait vous donner de bonnes bases pour répéter l’opération sur d’autres équipements.

Workflow

L’opération peut se résumer en 4 étapes:

  1. La validation des prérequis
  2. La génération d’une demande de certificat ainsi que d’une clé privée associée
  3. L’obtention d’un certificat signé par une autorité de certification AD
  4. L’importation de ce certificat et de la clé privée dans la baie Unity.

Prérequis

Pensez à valider les prérequis suivants avant de dérouler la procédure !

  • OpenSSL doit être installé sur votre poste de travail

Pour cet article, la version 1.1.0.5 a été utilisée.

  • Vous devez disposer d’un accès à une autorité de certification Microsoft AD

Il vous faudra les identifiants d’un compte ayant les droits nécessaires pour effectuer une demande de certificat. Les instructions que vous trouverez dans cet article correspondent à une autorité de certification hébergée sur un serveur Windows 2012 R2.

  • Un accès en SSH à la baie Unity (via le compte Service)

L’accès SSH doit avoir été activé préalablement sur la baie. Le mot de passe du compte service est généralement le même que celui du compte admin.

  • Un outil pour transférer le certificat et sa clé privée sur la baie Unity.

Si vous vous servez d’un système d’exploitation de Microsoft, un utilitaire comme WinSCP fera parfaitement l’affaire.

Procédure

Générer une demande de certificat et une clé privée avec OpenSSL

La première étape va consister à générer une demande de certificat ainsi qu’une clé privée associée. Nous allons utiliser OpenSSL pour cela. Pour nous faciliter la tâche et éviter d’avoir une longue liste de questions auxquelles répondre pendant la génération de la demande, nous allons créer un fichier de réponse nommé openssl.txt et contenant les informations suivantes (à modifier suivant vos besoins…):

Le champ CN doit correspondre exactement au FQDN utilisé pour se connecter à l’interface de management de la baie. Les champs DNS.1 et DNS.2 correspondent respectivement au nom long et au nom cours de la baie. Le champ IP.1 représente l’IP d’administration.

Une fois ce fichier créé nous pouvons l’utiliser pour générer la demande:

PS C:\Unity> openssl req -new -nodes -out unity.csr -newkey rsa:2048 -keyout unity.pk -config .\openssl.txt

Si tout se passe bien, vous devriez voir les informations suivantes apparaitre:

Generating a 2048 bit RSA private key
....+++
.........................................+++
writing new private key to 'unity.pk'
-----

Vous devez maintenant disposer de deux nouveaux fichiers. Dans notre exemple le fichier unity.csr correspond à la demande de certificat qui sera soumise à l’autorité de certification. Le fichier unity.pk contient la clé privée qui a permis de signer cette demande.

Pensez à conserver la clé privée, elle sera par la suite copiée sur la baie Unity.

Pour valider que la demande de certificat a correctement été générée, utilisez la commande ci-dessous:

PS C:\Unity> openssl req -in .\unity.csr -noout -text
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=FR, ST=Loire-Atlantique, L=Nantes, O=
Myvmworld, OU=Lab/emailAddress=administrator@exemple.com, CN=srv-unity-01.exemple.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c5:b0:a1:d4:98:9b:c8:25:04:71:cd:36:e6:ce:
f6:83:aa:5d:77:e4:fa:58:4e:b2:81:0f:23:5c:59:
d0:c5:0c:3f:37:88:32:b2:a4:a2:03:c0:c5:00:00:
b8:a3:96:17:52:a6:cc:ef:36:2a:e7:f9:5c:26:46:
50:55:65:44:7f:fd:f8:03:3e:39:d1:fc:97:e1:37:
7f:5c:1b:20:36:fc:d5:ae:31:f6:49:58:fb:5d:4a:
....
d0:73:fa:97:12:f0:bb:ac:cb:c3:a0:8e:f1:1c:eb:
66:3c:f0:50:85:f3:be:21:53:82:98:73:af:b9:12:
7d:68:9c:dd:fa:3a:c3:b9:5c:8b:8e:40:60:f9:35:
97:eb:e5:34:0b:97:d7:43:a3:1e:f2:a4:bf:a7:03:
e8:db:c2:5b:7d:e1:c1:a8:33:61:6b:30:b3:16:79:
10:12:cf:67:f2:fd:ad:68:7c:0d:dc:8b:37:c6:55:
19:49
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions:
X509v3 Subject Alternative Name:
DNS:srv-unity-01.exemple.com, DNS:srv-unity-01, IP Address:192.168.0.1
Signature Algorithm: sha256WithRSAEncryption
18:45:de:02:16:a1:e3:d4:9e:d6:74:87:61:74:a9:bf:a0:5f:
2c:09:1c:b5:2b:0f:42:26:0e:f2:40:29:ea:51:73:54:3d:4e:
53:f7:73:ef:16:98:ac:20:1a:c8:15:7c:b9:df:de:39:ec:c0:
fa:4b:f2:06:99:47:c7:8a:a3:f3:6f:28:2b:07:a2:be:84:f6:
....
b4:6b:09:fa:cb:79:7f:83:95:43:32:2e:14:94:f4:eb:b9:88:
27:62:cf:24:bb:54:9c:d6:69:2e:eb:ae:0e:cb:4d:fc:09:12:
19:b8:2e:c4:ac:06:a0:9d:a7:09:48:e7:54:9a:aa:f7:df:27:
6b:17:5d:79:43:88:0a:4f:be:f9:ae:c4:3f:a4:0c:2c:47:2a:
25:dd:3c:10:44:b5:10:35:ef:d0:d1:2e:25:19:b1:33:9c:99:
9a:2b:28:62

Vous devriez retrouver les informations fournis dans le fichier de réponse.
Nous avons maintenant en notre possession les informations nécessaires pour effectuer une demande de certificat auprès d’une autorité de certification.

Générer un certificat signé par une autorité de certification Microsoft AD

Dans l’étape précédente nous avons généré une demande de certificat ainsi que sa clé privée. Nous allons nous en servir pour obtenir un certificat, il sera signé par l’autorité de certification afin d’en valider la provenance.

Pour réaliser cette opération, connectez-vous au service web de votre autorité de certification. Il s’agit d’une page web généralement accessible à l’adresse http://<FQDN autorité de certification>/certsrv. Une fois authentifié, vous devrez:

  1. Cliquer sur la tâche Demander un certificat
  2. Cliquer sur demande de certificat avancé
  3. Cliquer sur Soumettez une demande de certificat en utilisant un fichier CMC ou PKCS #10 codé en base 64, ou soumettez une demande en utilisant un fichier PKCS #7 codé en base 64
  4. Dans le champ Demande enregistrée copié le contenu du fichier de demande de certificat (ici unity.csr)

Copier l’intégralité du contenu du fichier, penser à y inclure la première et dernière ligne -----BEGIN CERTIFICATE REQUEST----- et -----END CERTIFICATE REQUEST-----

  1. Dans le champ Modèle de certificat sélectionner Serveur Web

  1. Cliquer sur Envoyer
  2. Sur la page Certificat émis sélectionner Codé en base 64 et cliquer sur Télécharger le certificat
  3. Enregistrer le certificat sur votre poste et le renommer en unity.crt

Par défaut le certificat généré se nomme certnew.cer

Importer le certificat et la clé privée sur la baie Unity

Maintenant que nous disposons d’un certificat signé par l’autorité de certification et de sa clé privée. Nous allons l’importer sur la baie. Au préalable il va vous falloir copier les 2 fichiers concernés sur la baie. Un utilitaire comme WinSCP fera parfaitement l’affaire.

Dans l’exemple ci-dessous les fichiers ont été copiés dans le répertoire ~/cert.

Le certificat et la clé privée doivent être nommés de la même manière à l’exception bien sûr de l’extension…

14:10:39 service@VIRT1710RZW84B-spa spa:~/cert> ll
total 8
-rw-r--r-- 1 service service 1764 Jun  6 14:21 unity.crt
-rw-r--r-- 1 service service 1704 Jun  6 14:16 unity.pk

L’importation du certificat se fait avec la commande svc_custom_cert. Il faudra préciser le nom de base des fichiers. Dans notre cas, en indiquant que le nom de base est unity la commande va chercher à importer les fichiers unity.crt (certificat) et unity.pk (clé privée).

14:19:00 service@VIRT1710RZW84B-spa spa:~/cert> svc_custom_cert unity

Si tout se passe bien, vous devriez voir le message suivant indiquant que l’import c’est correctement déroulé.

Successfully installed custom certificate files.
Restarting web server ...
Tue Jun  10 14:19:53 2017:633e\0x7fcf2c3a97c0:32:Module CIC/1.1.10.6 loaded

A partir de maintenant, lorsque vous vous connecterez à Unisphere, vous aurez le plaisir de voir apparaitre le fameux cadenas dans la barre d’adresse !

J’espère que cet article vous aura été utile et que vous aurez pu facilement le suivre pour installer un nouveau certificat sur votre baie Unity.

N’hésitez pas à laisser un commentaire ou bien contactez moi sur twitter (@erwanquelin) pour toutes questions.

Share This...Buffer this pageShare on LinkedInTweet about this on TwitterShare on Google+Email this to someonePin on PinterestShare on Facebook

UNITY- POWERSHELL : THE FIRST STEPS TO AUTOMATION

Par défaut

Interview by Erwan Quelin: made in Nantes develops scripts for UNITY Dell EMC arrays.

Interview with Erwan Quelin about the development of his PowerShell module

Erwan, based in Nantes, has been a Systems engineer at Cheops Technology for 6 years. He works in multiple ways with a wide variety of clients in the Western region. A specialist in virtualization with VMware products and in storage using the VNX, Unity and VPLEX product families from Dell EMC, Erwan is certified as a VMware Certified Professional-Data center virtualization 4, 5 and 6 and as an EMC Implementation Engineer-VNX and Unity, and has recently joined the vExpert VMWare program and Dell EMC Elect for the year 2017.

Erwan, could you tell us a little more about the development of this script?

Automation of the IT system is a major topic which is not limited only to GAFA. As part of my service and my work I always try to automate tasks which can sometimes be repetitive but necessary to create a storage array or a virtualization infrastructure in an optimal and permanent way. This has created a real time savings on tasks that bring no added value for my customers (like creating X LUNs…) and also ensures me consistency in my deployments, for example, by ensuring such that both arrays are configured strictly identically.

When Dell EMC released Unity arrays on the market, I quickly took an interest in the fact that they had a RESTFul API which makes it possible to administer them via simple http requests. Having noticed this, I started developing a PowerShell module which would make it possible to fully administer EMC Unity arrays from the command line.

PowerShell

Can you give us more details about this module?

Before we get into the details of the Unity-PowerShell module, it may be necessary to explain what PowerShell is and why it is interesting compared with other languages.

PowerShell is both a scripting language based on .NET and an online command interface. It is developed by Microsoft and replaces the venerable cmd.exe console, providing additional commands to manage any type of compatible device.

PowerShell is of course mainly used to manage the Microsoft ecosystem (Windows Server, Exchange, SharePoint, etc.) ecosystem, but some vendors make additional commands available in the form of modules to administer their product.

One of the most popular extensions is PowerCLI. This is developed by VMware, and uses the PowerShell command line to administer a range of products from the vendor (vSphere ESXi, vSphere vCenter, etc.). A few months ago, Microsoft made the PowerShell project Open Source, and extended it to the Linux and Mac OS operating systems.

So what does ‘cmdlet’ mean?

PowerShell commands are called Commandlets. When launched unilaterally, they can be used to execute a specific action, such as the Get-Service command, which, as its name indicates, is used to view information about Windows services.

In your opinion, what differentiates PowerShell from its peers?

What makes PowerShell powerful and easy to use is the concepts of object and pipeline. The Get-Service command doesn’t just display text, but generates an object that can be manipulated (for example by applying a filter to show only started services), or to pipe the output into another command. The command below can be used to restart the DnsCache service online:

> Get-Service -Name DnsCache | Restart Service

By adding a little logic with If arguments and other loops, it is possible to develop powerful scripts that can be used to administer a system much more easily.

Unity-PowerShell

What is your script used for exactly?

The Unity-PowerShell module has been developed using the same mechanisms. It allows administrators to retrieve information about one or more Unity arrays and to configure them. When a LUN is created, which requires more than ten clicks, the module can be used to perform the same operation with a single command line, and to do this consistently for each LUN created.

The module can be used on any Windows desktop or server as soon as PowerShell 5 is available. It is possible (and recommended) to download and activate the module with the following commands:

https://www.powershellgallery.com/packages/unity-PowerShell/0.14.1

> Install Module -Name Unity-PowerShell -Scope Current User
> Import-Module -Name Unity PowerShell

When the module is available, the new commands it provides can be listed:

If in doubt, help is available for each command:

> Get-Help -Name Get-UnityPool

Now we have an overview of the subject, let’s get into the meat of the matter and connect to a Unity array. You will need to know its FQDN or IP address and a username and password.

> connect-Unity -Server unity01.okcomputer.lab

If everything goes well, the command will display information to you about the array you are connected to, such as such as the name and model, for example. Now let’s try to retrieve information concerning storage pools. The commands used to query an array all start with GET. Logically enough, you can list the pools with the following command:

> Get-UnityPool

It is possible to limit your search to a specific pool.

In these commands we can see an important part of the operation of unity: IDs. Each item is listed not by name but by a unique ID. Consequently, this ID is used in virtually all commands with the module.

For example, if you want to add a description to the first pool, you need to populate the command Set-Unity Pool with the ID ‘pool_1’:

> Set-UnityPool -ID ‘pool_1’ -Description ‘Pool avec FastVP active’

We have seen that with a little practice, these commands are relatively easy to use and can be used advantageously instead of the graphical user interface. The module is developed in PowerShell will give you the ability to integrate it in scripts, which can be used, for example, to create multiple LUNs at a time, then automatically present them to the servers concerned. You could also develop a script to automatically increase the size of a LUN based on criteria that you define.

By using other existing as PowerShell modules, such as Pester (https://github.com/pester/pester), it is possible to define a testing framework which you might use to make sure that your Unity arrays are always configured according to a pre-designed mold.

It would be difficult to describe all possible use cases since the possibilities are great.

I hope this article will help you see the attraction of using the Unity-PowerShell module to administer your Unity arrays, and that it will make you want to take it further. The module is still in development and is open to all contributions, if you feel the desire to write code and documentation, report a bug or simply to provide feedback on the module.

Don’t hesitate to contact Erwan on Twitter:

or on GitHub: https://github.com/equelin

Address of Unity-PowerShell project: https://github.com/equelin/unity-PowerShell

Documentation: http://Unity-PowerShell.readthedocs.IO/en/latest/?badge=latest

Share This...Buffer this pageShare on LinkedInTweet about this on TwitterShare on Google+Email this to someonePin on PinterestShare on Facebook

Unity-Powershell : Les premiers pas vers l’automatisation

Par défaut

Interview d’Erwan Quelin : made in Nantes développe des scripts pour les baies UNITY Dell EMC.

Entretien avec Erwan Quélin sur le développement de ton module PowerShell

Basé sur Nantes, Erwan est depuis près de 6 ans Ingénieur Systèmes chez Cheops Technology. Ses interventions sont multiples et auprès de clients très diversifiés dans la région Ouest. Spécialisé dans la virtualisation autour des produits VMware et dans le stockage autour des gammes VNX, Unity et VPLEX de Dell EMC, Erwan est certifié VMware Certified Professional – Datacenter virtualization 4, 5 et 6 ainsi que EMC Implementation Engineer – VNX et Unity et vient d’intégrer le programme VMware vExpert et Dell EMC Elect pour l’année 2017.

Erwan, pourrais tu nous en dire un peu plus sur le développement de ce script ?

L’automatisation du système d’information est un sujet prépondérant qui ne s’inscrit pas uniquement au sein des GAFA. Dans le cadre de mes missions et de mes prestations  je cherche systématiquement à automatiser de façon optimum et permanente les tâches parfois répétitives mais nécessaires à la mise en place d’une baie de stockage ou d’une infrastructure de virtualisation. Cela génère un véritable gain de temps sur des tâches qui n’ont pas de valeur ajoutée pour mes clients (comme créer X LUN…) et me garantit également une cohérence dans mes déploiements en m’assurant par exemple que deux baies sont configurées strictement de manière identique.

Lorsque Dell EMC a mis sur le marché les baies Unity, je me suis rapidement intéressé au fait qu’elles disposaient d’API RESTFul qui permettait de les administrer via de simples requêtes http. Face à ce constat, je me suis lancé dans le développement d’un module PowerShell qui permettra d’administrer entièrement les baies EMC Unity en ligne de commande.

PowerShell

Tu nous donnes plus de détails sur ce module ?

Avant de rentrer dans les détails du module Unity-Powershell, il est peut-être nécessaire d’expliquer ce qu’est PowerShell et quel est son intérêt par rapport aux autres langages.

PowerShell est à la fois un langage de scripting basé sur .NET ainsi qu’une interface en ligne de commande. Il est développé par Microsoft et vient remplacer la vénérable console cmd.exe en proposant des commandes supplémentaires permettant de gérer tout type d’équipements compatibles.

PowerShell est bien évidemment principalement utilisé pour manager l’écosystème Microsoft (Windows Server, Exchange, Sharepoint…) mais certains éditeurs mettent à disposition des commandes supplémentaires sous la forme de modules pour administrer leur produit.

Une des extensions les plus connues est PowerCLI. Développée par VMware, elle permet d’administrer via des lignes de commandes PowerShell tout un ensemble de produits de l’éditeur (vSphere ESXi, vSphere vCenter,…). Il y a quelques mois, Microsoft a rendu le projet PowerShell Open Source et il l’a porté sur les systèmes d’exploitation Linux et Mac OS.

Que signifie alors cmdlet’s ?

Les commandes PowerShell sont appelées Commandlets. Lancées unitairement,  elles permettent d’exécuter une action précise, comme par exemple la commande Get-Service qui comme son nom l’indique permet d’afficher des informations concernant les services Windows.

Selon toi, en quoi Powershell se différencie de ses homologues  ?

Lire la suite

Share This...Buffer this pageShare on LinkedInTweet about this on TwitterShare on Google+Email this to someonePin on PinterestShare on Facebook