Archives de la catégorie ‘AD Security’

Note : cette Big-Picture est disponible en téléchargement ici.

Introduction

Si vous êtes amenés à déployer et administrer des VM IaaS dans Azure, il est fortement déconseillé d’établir des connexions Directes RDP & SSH (à travers Internet) sur celles-ci : il s’agit d’une « Bad Practice » /cas courant dans les entreprises !

Les VMs Azure disposant d’une interface Public (@IP Public) sont exposées à Internet et donc à plusieurs Security Risks liés aux protocoles RDP et SSH.

Quels « Best Practices » ?

La « Best Practice » consiste à utiliser une connexion VPN Site-to-Site (entre le VNET Azure et votre réseau local : canal sécurisé IPSec /IKEv2) ou Point-to-Site (entre le VNET Azure et votre Machine d’Administration : canal sécurisé SSTP/IKEv2).

Avec cette architecture, vous réduisez la surface d’attaque en supprimant l’interface Publique de vos VMs (utilisation d’une Private NIC Only).

L’objectif du présent post est de vous détailler (step-by-step) la procédure à suivre pour SetuPé et configurer une connexion VPN Point-to-Site entre votre environnement Azure et votre ou vos machines d’administration distantes.

Let’s do it 🙂

 

# OS Client supporté pour la connexion VPN Point-to-Site

Les Operating System (OS) suivants sont pris en charge pour la connexion VPN Point-to-Site :

  • Windows :
    • Windows Client : Windows 7, 8, 8.1 et 10
    • Windows Server : Windows Server 2008, 2008 R2, 2012, 2012 R2 et 2016
  • Mac OS X

 

#[Prérequis] Créez votre compte Azure

Pour mettre en pratique les différentes techniques expliquées dans le présent article, vous devez disposer d’un compte Azure. Vous pouvez en créer un gratuitement via ce lien.

Useful info : MS vous offre 200$ de crédit Azure pour tout nouveau compte créé. Cette offre est valable pendant 30 jours (Trial Mode).

 

#Utilisation de l’interface Azure CLI 2.0 vs Ouverture de Session Azure Cloud Shell

Les scripts/lignes de codes listées ci-dessous peuvent être exécutées depuis :

  • Interface Azure CLI 2.0 (mode local)
  • Azure Cloud Shell  (mode web)

Si vous souhaitez exécuter les lignes de codes ci-dessous localement depuis votre machine d’administration, je vous invite à installer l’interface Azure CLI 2.0 en suivant les instructions détaillées dans cet article.

Sinon, vous pouvez simplement vous connecter sur le site shell.azure.com, ouvrir directement une session Azure Cloud Shell exécutez les scripts décrits ci-dessous.

Console Azure Cloud Shell Web

Note : Azure Cloud Shell représente votre machine d’administration hébergée dans le Cloud Azure. Elle est accessible depuis n’importe ou et via n’importe quel device. Le Cloud Shell Azure est accessible depuis le Portail Azure (portal.azure.com), il peut également être accédé directement depuis l’URL shell.azure.com

 

#Créez votre connexion VPN Azure Point-to-Site

Pour créer une connexion VPN Point-to-Site (P2S), vous devez créer et configurer plusieurs objets/services Azure : Passerelle VPN Azure, Public @IP de la Gateway, Certificat pour l’authentification de vos clients VPN distants

Voici les étapes à suivre pour créer et configurer correctement votre connexion VPN P2S.

  1. Créer un nouveau groupe de ressource qui regroupera toutes les ressources Azure qui seront créées
  2. Créer un nouveau VNET Azure
  3. Créer/Déclarer le Gateway Subnet du VNET Azure créé
  4. Créer une Nouvelle Passerelle VPN P2S (Point-to-Site)
  5. Créer une nouvelle @IP Public pour la nouvelle Passerelle VPN
  6. Créer/Générer un nouveau certificat Self-Signed (Auto-signé) pour authentifier les clients VPN Distants
  7. Déclarer le contenu de la clé Public du Certificat Root sur la configuration VPN Point-to-Site

 

Note #1 : les étapes 1, 2 et 3 peuvent être by-passées si vous souhaitez configurer une connexion VPN P2S sur un VNET existant. Vous devriez dans ce cas changer les valeurs décrites ci-dessous par celles correspondant aux objets Azure existants (nom groupe de ressource, nom VNET, IP Address Prefix/CIDR…Etc)

Note #2 : si vous disposez d’une PKI sur le réseau local ou dans le Cloud, vous pouvez générer un certificat SSL signé/validé par votre CA et l’importer dans Azure. Dans notre cas, nous allons simplement utiliser un certificat Auto-Signé :).

 

Pour créer votre connexion VPN Azure P2S, exécutez les lignes de codes listées ci-dessous.

Notez que chaque bloc de code correspond à une des étapes décrite ci-haut.

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

#Etape1 :  Creation du ressource groupe
az group create -n hkdemorg -l WestEurope

#Etape2 : Creation du VNET
az network vnet create –name hkdemovnet –resource-group hkdemorg -l WestEurope –address-prefixes 10.110.0.0/16 –subnet-name hkdemosubbe –subnet-prefix 10.110.1.0/24 –ddos-protection false

#Etape3 : Creation du sous-reseau de la Passerell ‘Subnet Gateway’
az network vnet subnet create –address-prefix 10.110.254.0/24 –name GatewaySubnet –resource-group hkdemorg –vnet-name hkdemovnet

#Etape4 : Creation de l’adresse IP Public de la Gateway VPN
az network public-ip create –name hkdemovpngtwpip –allocation-method Dynamic –location westeurope –resource-group hkdemorg –sku Basic

#Etape5 : Creation de la Gateway VPN P2S
az network vnet-gateway create –name hkdemovpngtw -g hkdemorg –vnet hkdemovnet –public-ip-addresses hkdemovpngtwpip –location westeurope –gateway-type Vpn –sku VpnGw1 –vpn-type RouteBased –address-prefixes 172.116.1.0/24 –client-protocol SSTP

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Plusieurs résultats vous sont retournés à la fin de l’exécution de chaque commande, cela vous permet de vérifier si les services Azure ont été créés correctement (ou pas : retour d’un ou plusieurs Error Messages).

Nous allons maintenant vérifier si tous les services Azure créés précédemment apparaissent depuis le Portail Azure.

Pour ce faire, connectez-vous sur Portal.azure.com et cliquez sur « Groupes de Ressources » ou « Resource Groups » si votre interface Web est en « Anglais ».

Notre Groupe de Ressource (hkdemorg) créé en « Etape 1 » doit apparaître sous « Groupe de ressources » :

Cliquez cette fois-ci sur le Groupe de Ressource hkdemorg pour visualiser toutes les ressources créées (VNET,  Passerelle VPN et son Adresse IP Publique associée) :

 

#Création du certificat Auto-Signé pour l’authentification des clients distants

Les Certificats sont utilisés par Azure pour authentifier les clients distants se connectant sur votre VNET Azure à travers la connexion VPN Point à Site.

Dès que vous aurez obtenu votre certificat (obtenu via votre PKI Enterprise ou un auto-signé), vous devez renseigner les informations relatives à sa clé Public au niveau de la configuration Point-to-Site Azure. Ce Certificat sera donc considéré comme étant « Trusted » pour toute connexion VPN P2S à votre VNET.

En outre, vous devez générer le certificat client à partir du Certificat Root de Confiance, vous l’installez ensuite sur chaque poste client devant s’authentifier/se connecter à travers le canal VPN P2S.

Maintenant que nous avons découvert à quoi servent les certificats dans une configuration VPN Azure, nous passerons à l’étape 6 qui consiste à créer/générer un certificat auto-signé Root pour l’authentification de nos postes clients VPN.

Pour générer ce certificat Auto-Signé, deux options s’offrent à vous :

  • Utilisation de l’outil MakeCert.exe
  • Utilisation de la Cmd-Let New-SelfSignedCertificate 

 

Note importante : l’outil MakeCert est considéré comme « Obsolète » et n’est plus recommandé par l’éditeur. Voir cet article pour en savoir plus

Nous allons donc utiliser la Cmd-let New-SelfSignedCertificate pour générer notre certificat

Commencez par ouvrir une Session Windows sur un Poste Windows 10, lancez ensuite PowerShell ISE en tant qu’Administrateur et exécutez les commandes suivantes :

#Etape6-Part1 : Creation du Certificat Auto-signe « Root »
$hkcert = New-SelfSignedCertificate -Type Custom -KeySpec Signature -Subject "CN=HKP2SRootCert" -KeyExportPolicy Exportable
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation « Cert:\CurrentUser\My » -KeyUsageProperty Sign -KeyUsage CertSign

#Etape6-Part2 :  Generation du certificat client
New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature -Subject "CN=HKP2SChildCert" -KeyExportPolicy Exportable
-HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My"
-Signer $hkcert -TextExtension @(« 2.5.29.37={text}1.3.6.1.5.5.7.3.2 »)

Après exécution des commandes PowerShell ci-dessus, deux certificats sont générés au et stockés dans votre Magasin de certificats local (Certificats – Utilisateur Local):

  • HKP2SRootCert : certificat Root (dont la clé Public doit être déclarée sur Azure)
  • HKP2SChilfCert : certificat client (à installer sur chaque poste/client VPN).

Suivez les instructions suivantes pour exporter les deux certificats (Root & Child).

Export du Certificat Root, Pourquoi ?

Cette opération est importante car elle nous permettra de récupérer les informations sur la clé Public du Certificat Root pour les déclarer au niveau d’Azure (Config P2S) :

  1. Saisissez CertMgr.msc depuis le Menu Démarrer et lancez l’outil retourné dans les résultats de recherche
  2. La console « Certificats » apparaît. Développez « Personnel » > « Certificats« 
  3. Faites un Clic-droit sur HKP2SRootCert > Toutes les Tâches > Exporter…
  4. L’assistant suivant apparaît, cochez « Non, ne pas exporter la clé privée » et cliquez sur « Suivant » :

  1. Cochez « X.509 encodé en base 64 (*.cer) » et cliquez sur « Suivant » pour continuer :

  1. Cliquez sur « Parcourir… » et sélectionnez un emplacement dans lequel le certificat (.cer) sera placé (D:) dans l’exemple suivant) :

  1. Enfin, cliquez sur « Terminer » pour fermer l’assistant:

 

Export du Certifica Child (Client), Pourquoi ?

Le certificat client doit être installé sur chaque machine cliente devant se connecter (via le VPN P2S) sur votre VNET Azure. La procédure décrite ci-dessous vous permettra de générer un fichier PFX (avec son mot de passe associé).

  1. Saisissez CertMgr.msc depuis le Menu Démarrer et lancez l’outil retourné dans les résultats de recherche
  2. La console « Certificats » apparaît. Développez « Personnel » > « Certificats« 
  3. Faites un Clic-droit sur HKP2SChildCert > Toutes les Tâches > Exporter…
  4. L’assistant suivant apparaît, cochez « Oui, exporter la clé privée » et cliquez sur « Suivant » :

  1. Cochez « Echange d’informations personnelles – PKCS #12 (.PFX) » et cliquez sur « Suivant » pour continuer :

  1. Cochez « Mot de passe« , spécifiez un mot de passe, sélectionnez AES256 comme algorithme de chiffrement et cliquez sur « Suivant » :

  1. Choisissez un emplacement pour stocker votre fichier .Pfx et cliquez sur « Suivant » :

  1. Enfin, cliquez sur « Terminer » pour fermer l’assistant :

Le fichier PFX doit être installé sur toutes les machines d’administration depuis lesquelles vous pouvez être amenés à vous connecter pour établir la connexion VPN P2S Azure.

 

#Déclarer le contenu de votre certificat Root sur Azure (Configuration Point-to-Site)

A l’aide de Notepad ou Notepad++, éditez le fichier .Cer (Certificat Root Exporté précédemment) et copiez le contenu de sa clé Public comme montré ci-dessous :

Ces informations doivent être déclarées côté Azure (Configuration Point-to-Site).

Pour ce faire, exécutez la commande Az CLI suivante :

Note importante : remplacez la valeur du paramètre « –public-cert-data » par le contenu du Cert Root que vous avez copié précédemment.

#Etape7 Declaration du Cert Root au niveau de la configuration Point-to-Site Azure
az network vnet-gateway root-cert create –resource-group hkdemorg –gateway-name hkdemovpngtw –name hkvpnp2scert –public-cert-data « MIIC6zCCAdOgAwIBAgIQN9CJJEC3KopF32cKXpvOLTANBgkqhkiG9w0BAQsFADAY
MRYwFAYDVQQDDA1IS1AyU1Jvb3RDZXJ0MB4XDTE4MDcyNzIwNDQyMFoXDTE5MDcy
NzIxMDQyMFowGDEWMBQGA1UEAwwNSEtQMlNSb290Q2VydDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAMHLP5DxRhA9nem2F2/nELeHLyjD+NSLl9NWjikO
I6fTF2gnl6+cmRfoFbuZmjl6ocS7h9g9bNatTDeN/AFQx1xyf7ZKp9nZryEM9VdC
HoaTGkMlmdiqmXmyHzxBH457s4spEvM4udCIrnCkczn8ocWX11ea96BF1ZaUJ6x7
t3o8V8FzvcVh/7zeoK8x+sQU/j8f6Qs20/prjFrrcZ7olI1C2R8eBZkBw1mEe1Nt
0txmd8lmkjWZJNi17V5C+SOxpWwuyZml/Hw186jNi4wvNXCg9nK3Wn0NLCfOkILN
oQIbvraz7yYWNBZLq/xKqSumGtF4aV0t9yL/0dRfENpkQD0CAwEAAaMxMC8wDgYD
VR0PAQH/BAQDAgIEMB0GA1UdDgQWBBQCR1tl1iycoP6oJDjKrWcRAh6+hTANBgkq
hkiG9w0BAQsFAAOCAQEABRpmIzysxcKEBrCm/EtgjOYoPaj5SlKD8wJhTk1BGXG0
OE9yLTeuIscmZygT1Wt20lAaWlJAqbRmuTkhXbbinttc+WOyWbqvWrAnsIbydVAP
DYqz0vOEfTIxROeAw+keorAc/jhmszBgLbkRAhJ9CDamutKtPGxNYq0lI9BAs46e
l109pxxz/6hDLGOJFNPXdZDWqceoxjtFhWnFNBMXj6Z/2NEIA3u474eI2hDoguRE
rz3NJ9qJyINrjf9ncg4Yc0/RlM3LaVhLjcLpCp31dkbfPXx1/3IqSusiiUUSFLHG
64XQ9jVxvozhkuUXqBbmKekCnOTfHPbIeHA5mcv9RA== »

#Téléchargez le Package « VPN Client »

Avant de télécharger le client VPN (Fichier .Exe), commencez par vérifier que la clé Public de votre certificat Root a bien été déclarée au niveau de la configuration Point-à-Site Azure.

Enfin, cliquez sur « Télécharger le client VPN » pour générer le client VPN à installer sur votre machine d’administration : il s’agit d’un .Exe qui configure automatiquement la connexion VPN avec toutes les informations que vous avez configurées tout au long de ce post.

Une fois téléchargé, Dé-zippez le fichier et exécutez le Setup File correspondant à la version de votre OS Client.
Dans mon cas, j’utilise une machine Windows 10 64-bit. Le fichier WIndowsAmd64\VpnClientSetupAmd64.exe a donc été exécuté :

Le Setup VPN Client installe et configure automatiquement la connexion VPN Suivante :

Cliquez sur le nom de la connexion (hkdemovnet) pour faire apparaître la boite de dialogue suivante :

Cliquez sur « Se connecter« , et ensuite sur « Connecter » pour établir la connexion VPN P2S :

Une fois connecté, le statut de la connexion passe à « Connecté« , vous pouvez également vérifier l’adresse IP qui vous a été attribuée depuis l’invite de commande > IPConfig /All et la comparer à celle qui apparaît depuis le volet « Configuration Point-à-Site »  :

Et voilà le tour est joué :).

N’hésitez pas à me laisser un commentaire si vous avez des questions.
A bientôt Dear Readers.

#HK

Publicités