Archives de août, 2017

Dans le cadre d’un projet de migration de Datacenters d’un de mes clients vers Azure, j’avais en charge l’étude, design et l’implémentation de plusieurs canaux VPN entre les Datacenters Azure et ceux OnPremise.

Compte-tenu du nombre de Gateway VPN Azure à monter, j’ai créé le script P(ower)S(hell) suivant pour automatiser et accélérer le processus de création des services Cloud réseaux nécessaires pour interconnexion.

Le code est détaillé ci-après, j’ai utilisé des noms & subnets de tests, vous aurez donc juste à remplacer les valeurs des variables par celles correspondant à votre environnement.

Mon architecture réseau Azure « cible » est la suivante :

  • 1 VNET nommé : hk-demo-vnet »
  • 1 Espace d’adressage : 10.0.52.0/24
  • 5 Subnets :
    • Subnet « Front-end » : 10.0.52.0/25
    • Subnet « Back-end » :  10.0.52.128/26
    • Subnet « Management« : 10.0.52.192/27
    • Subnet « DMZ » :  10.0.52.224/28
    • Subnet dédiée à la « Passerelle Az » : 10.0.52.240/28

 

Note : la seule étape qui nécessite un peu d’attente (~45 minutes environ) est la création de la Gateway VPN Az [Step #8]. Le reste des opérations est quasi immédiat :).

Note importante : le présent script concerne uniquement la configuration côté « Azure »; une configuration spécifique côté « Réseau OnPrem » est à faire, cela dépendra du type d’équipement déjà présent sur votre S.I (e.g : Fortigate, Cisco ASA, F5 BIG-IP, A10 Network…Etc). N’hésitez pas à consulter cette page pour vérifier la comptabilité /prise en charge de votre équipement réseau pour la connexion VPN avec Azure.


#1 Connecter votre compte Azure
Login-AzureRmAccount

#2 Selectionner votre Abonnement Azure (si vous en avez qu’un seul, vous pouvez bypasser cette etape). Dans l’exemple suivant, la subscription « HKDemoSubsription » sera selectionnee
Select-AzureRmSubscription -SubscriptionName « HKDemoSubscription »

#3 Crerr votre groupe de Ressource Azure au niveau de la Region Europe de l’Ouest
New-AzureRmResourceGroup -Name « hk-demo-rg » -Location ‘West Europe’

#4 Creer  du VNET ‘HK-Demo-vnet » et ses Subnets associés
$hkdemosubfe = New-AzureRmVirtualNetworkSubnetConfig -Name ‘hk-demo-sub-fe’ -AddressPrefix 10.0.52.0/25

$hkdemosubbe = New-AzureRmVirtualNetworkSubnetConfig -Name ‘hk-demo-sub-be’ -AddressPrefix 10.0.52.128/26

$hkdemosubmgmt = New-AzureRmVirtualNetworkSubnetConfig -Name ‘hk-demo-sub-mgmt’ -AddressPrefix 10.0.52.192/27

$SecuritySubnet = New-AzureRmVirtualNetworkSubnetConfig -Name ‘SecuritySubnet’ -AddressPrefix 10.0.52.224/28

$GatewaySubnet = New-AzureRmVirtualNetworkSubnetConfig -Name ‘GatewaySubnet’ -AddressPrefix 10.0.52.240/28

New-AzureRmVirtualNetwork -Name hk-demo-vnet -ResourceGroupName hk-demo-rg `
-Location ‘West Europe’ -AddressPrefix 10.0.52.0/24 -Subnet $hkdemosubfe, $hkdemosubbe, $hkdemosubmgmt, $SecuritySubnet, $GatewaySubnet

#5 Declarer La Passerelle /Device VPN Local ainsi que les Subnets de votre reseau Corporate (192.168.x.0 dans l’exemple suivant)
New-AzureRmLocalNetworkGateway -Name hk-demo-localgtw -ResourceGroupName hk-demo-rg `
-Location ‘West Europe’ -GatewayIpAddress ‘10.112.11.33’ -AddressPrefix ‘192.168.1.0/24’, ‘192.168.2.0/24’, ‘192.168.3.0/24’

#6 Creation d’une nouvelle adresse IP public pour la Gateway VPN Azure
$azuregtwpip = New-AzureRmPublicIpAddress -Name hk-demo-azgtwpip -ResourceGroupName hk-demo-rg -Location ‘West Europe’ -AllocationMethod Dynamic

#7 Declarer /Creer la configuration de la Gateway VPN Azure
$vnet = Get-AzureRmVirtualNetwork -Name hk-demo-vnet -ResourceGroupName hk-demo-rg
$subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name ‘GatewaySubnet’ -VirtualNetwork $vnet
$azgtwipconfig = New-AzureRmVirtualNetworkGatewayIpConfig -Name hk-demo-azgtwconfig -SubnetId $subnet.Id -PublicIpAddressId $azuregtwpip.Id

#8 Creer votre nouvelle Gateway Azure
New-AzureRmVirtualNetworkGateway -Name hk-demo-azgtw -ResourceGroupName hk-demo-rg -Location 'West Europe' -IpConfigurations $azgtwipconfig -GatewayType Vpn
-VpnType RouteBased -GatewaySku Standard

#9 Obtenir l’@IP Public de la Gateway Azure (verifier que l’IP Public de votre Gateway Azure est bien générée)
Get-AzureRmPublicIpAddress -Name hk-demo-azgtwpip -ResourceGroupName hk-demo-rg

#10 Creer la connexion VPN entre le Device OnPrem et Azure
$azuregtw = Get-AzureRmVirtualNetworkGateway -Name hk-demo-azgtw -ResourceGroupName hk-demo-rg
$localgtw = Get-AzureRmLocalNetworkGateway -Name hk-demo-localgtw -ResourceGroupName hk-demo-rg

New-AzureRmVirtualNetworkGatewayConnection -Name hk-demo-azgtwcon -ResourceGroupName hk-demo-rg -Location 'West Europe' -VirtualNetworkGateway1 $azuregtw -LocalNetworkGateway2 $localgtw
-ConnectionType IPsec -RoutingWeight 10 -SharedKey ‘$HKD€m0@2017$’


Run & Enjoy the script :).

Une fois l’interconnexion établie entre le Device VPN Azure et celui d’OnPrem, le statut de l’objet de connexion passe à « Connected« , checkez les « Data in » et « Data out » pour s’assurer que le traffic passe bien entre vos ressources locales (OnPrem) et celles hébergées dans le Cloud Az.

Restez connectés, de nouveaux posts autour de l’Azure (step-by-step guides, HowTo..Etc) sont en cours de finalisation :).

Rappel sur les Groupes de Ressources Azure [Azure Ressource Groupe]

Toutes les ressources créés /provisionnées dans Microsoft Azure ont besoin d’être associées à des « Groupes de Ressources ». il s’agit ici d’une fonctionnalité de base du modèle ARM (Azure Resource Manager).

Utiliser un groupe de ressources Azure vous permettra de grouper toutes vos ressources Cloud (VM, NIC, stockage, IP Public..etc) dans une sorte de « Conteneur logique » et de les gérer de manière centraliser

Puis-je déplacer mes ressources Azure d’un Groupe de Ressources vers un autre ?

Yes, cela est tout à fait possible !

Vous pouvez être amené à déplacer une ou plusieurs ressources Azure (VM, VNET, Compte de stockage…) d’un Groupe de Ressources vers un autre.

e.g : Déplacement d’une VM (ayant servie par exemple à la mise en pré-production d’une solution ou application pour validation) d’un groupe de ressources nommée « hk-preprod-rg » vers un Groupe de Ressources nommé « hk-prod-rg ». Un autre scénario classique est le déplacement d’une ou plusieurs VM Azure ayant servie pour la mise en place d’un PoC qui doit finir en Production. Vous aurez donc comme tâche le move de ces VMs d’un Groupe de Ressources TaGué « PoC » vers un autre TaGué « Prod ».

Comment ça marche ?

Le déplacement d’une ressource Azure d’un Groupe de Ressources vers un autre peut se faire via trois outils :

  • Nouveau Portail Azure : portal.azure.com
  • Windows PowerShell : module Azure
  • Azure CLI 2.0 : commande az resource move

 

Déplacement de Ressources via le Nouveau Portail Azure
  • Connectez-vous sur portal.azure.com
  • Cliquez sur le Groupe de Ressources « source » regroupant votre ou vos ressources Azure à déplacer. Dans l’exemple suivant, la ressource que je souhaite déplacer est associée au groupe de Ressources « hk-preprod-rg« .
  • Localisez et cliquez sur la Ressource à déplacer. Dans l’exemple, la VM « hk-preprod-vm1 » sera déplacée vers le Groupe de Ressources « hk-prod-rg« 

  • Depuis « Vue d’ensemble« , cliquez sur « Déplacer » et sélectionnez ensuite « Déplacer vers un autre groupe de ressources » :

  • L’assistant suivant apparaît, comme illustré dans l’image ci-dessous, vous pouvez également déplacer une ou toutes les autres ressources associées à la ressource que vous souhaitez déplacer. Sélectionnez le groupe de ressources de « Destination » et cliquez sur « Ok » pour démarrer le déplacement de la ressource.

  • Si vous cliquez sur le Groupe de Ressources de « Destination », vous constaterez l’apparition d’une notification vous indiquant le Déplacement de ressource.

 

Déplacement de Ressources via Windows PowerShell
  • Lancez Windows PowerShell (en tant qu’Administrateur) et saisissez Login-AzureRmAccount pour connecter votre compte Azure

  • Une fois connecté, saisissez la commande suivante et notez l’ID de la ressource à déplacer. Dans l’exemple suivant, nous allons afficher les informations sur la ressource Azure « hk-preprod-vm1« , qui est une VM Azure associée au groupe de Ressources « hk-preprod-rg » :

Get-AzureRmResource -ResourceName hk-preprod-vm1 -ResourceGroupName hk-preprod-rg

  • Pour déplacer votre ressource (dans l’exemple suivant > hk-preprod-vm1 dont l’ID de ressource est /subscriptions/31854640-1004-4040-81fc-be333f3cef5c/resourceGroups/hk-preprod-rg/providers/Microsoft.Compute/virtualMachines/hk-preprod-vm1), vous pouvez exécuter l’une des deux commandes suivante :

Move-AzureRmResource -ResourceId /subscriptions/31854640-1004-4040-81fc-be333f3cef5c/resourceGroups/hk-preprod-rg/providers/Microsoft.Compute/virtualMachines/hk-preprod-vm1 -DestinationResourceGroupName hk-prod-rg

ou

Get-AzureRmResource -ResourceName hk-preprod-vm1 -ResourceGroupName hk-preprod-rg | Move-AzureRmResource -DestinationResourceGroupName hk-prod-rg

  • Le déplacement de la ressource démarre …

 

Déplacement de Ressources via l’interface Azure CLI 2.0
  • Lancez l’Invite de commande CMD.exe (en tant qu’Administrateur) et suivez les instructions détaillées dans cet article pour connecter l’interface Azure CLI 2.0 à votre compte Azure
  • Comme sous Windows PowerShell, vous devez d’abord récupérer l’ID de la ressource à déplacer. Pour ce faire, Saisissez la commande suivante. Notez que dans l’exemple ci-dessous, la ressource à déplacer est la VM « hk-preprod-vm1 » associée au groupe de ressource source « hk-preprod-rg » :

az resource show -n hk-preprod-vm1 -g hk-preprod-rg –resource-type « Microsoft.Compute/virtualMachines »

Cette ressource (dont l’ID est /subscriptions/31854640-1004-4040-81fc-be333f3cef5c/resourceGroups/hk-preprod-rg/providers/Microsoft.Compute/virtualMachines/hk-preprod-vm1) sera déplacée vers le Groupe de ressources de Destination « hk-prod-rg », la commande suivante est utilisée :

az resource move –ids /subscriptions/31854640-1004-4040-81fc-be333f3cef5c/resourceGroups/hk-preprod-rg/providers/Microsoft.Compute/virtualMachines/hk-preprod-vm1 –destination-group hk-prod-rg


Plusieurs « HowTo » Azure sont en cours de finalisation et seront bientôt publiés, n’hésitez pas à vous abonner sur le Blog pour Keep updated de toute nouvelle publication.

A bientôt.

 

 

 

 

Malgré l’ajout des ~2300 nouvelles Cmd-lets PowerShell sur Windows Server 2012 R2 et 2016, le meilleur outil de gestion du Networking & Firewalling Windows reste (pour moi :D) le super Command-Line Tool Netsh.exe (Windows Network Shell).

En effet, Windows PowerShell fonctionne aujourd’hui qu’avec un sous-ensemble de fonctionnalités de management Windows Server, n’incluant pas la possibilité de configurer et gérer le Pare-feu Windows et ses fonctions avancées.

J’ai donc décidé de vous regrouper dans le présent post les « Top 10″ des Commandes Netsh que vous devez connaître pour créer, configurer et gérer vos Pare-feu Windows (Client & Server).

Les commandes détaillées ci-dessous peuvent aussi vous être utile lors de la configuration du Firewall Windows IaaS (E.g : VM Azure ou AWS)

 

1.Afficher /Lister une règle spécifique ou toutes les règles du Pare-feu Windows
  • Afficher toutes les règles : netsh advfirewall firewall show rule name=all
  • Afficher une règle spécifique (« SQL » dans l’exemple suivant) : netsh advfirewall firewall show rule name=SQL


2.Activer /Désactiver un ou plusieurs profils du Pare-feu Windows
  • Activer tous les profils du Pare-feu Windows : Netsh advfirewall set allprofiles state on
  • Désactiver tous les profils du Pare-feu Windows : Netsh advfirewall set allprofiles state off
  • Activer le profil « Public » du Pare-feu Windows : Netsh advfirewall set publicprofile state on
  • Désactiver le profil « Privé » du Pare-feu Windows : Netsh advfirewall set privateprofile state off
  • Activer le profil « Domaine » du Pare-feu Windows : Netsh advfirewall set domainprofile state on

3.Réinitialiser les stratégies (par défaut) du Pare-feu Windows
  • netsh advfirewall reset

4.Afficher et Configurer les fichiers Logs du Pare-feu Windows

Notez que le chemin par défaut des fichiers « Logs » liés au Pare-feu Windows est le suivant : C:\Windows\system32\LogFiles\Firewall\pfirewall.log

Vous pouvez visualiser ce chemin par défaut (pour tous les profils du Pare-feu) en exécutant la commande suivante :

  • netsh advfirewall show allprofiles logging

Nous allons définir dans l’exemple suivant le chemin « D:\WSFirewall\Logs\pfirewall.log », pour tous les profils du Pare-feu Windows (Domaine – Privé – Public)

  • netsh advfirewall set allprofiles logging filename « D:\WSFirewall\Logs\pfirewall.log« 

Note : après configuration d’un nouvel emplacement du fichier log pfirewall.log, l’ancien fichier log placé dans le chemin par défaut est automatiquement déplacé et renommé en .old


5.Autoriser ou Refuser le « Ping »
  • Autoriser le « Ping »: netsh advfirewall firewall add rule name= »All ICMP V4″ dir=in action=allow protocol=icmpv4
  • Refuser le « Ping » : netsh advfirewall firewall add rule name= »All ICMP V4″ dir=in action=block protocol=icmpv4

6.Ajouter (Autoriser) ou Supprimer un Port spécifique
  • Ajouter une nouvelle règle autorisant le port 1433 (port par défaut utilisé par SQL Server) : netsh advfirewall firewall add rule name= »Autoriser_Port_SQL Server » dir=in action=allow protocol=TCP localport=1433
  • Supprimer la règle précédente autorisant le port 1433 (port par défaut utilisé par SQL Server) : netsh advfirewall firewall delete rule name= »Autoriser_Port_SQL Server » protocol=tcp localport=1433

7.Autoriser un Programme
  • Dans l’exemple suivant, le Programme « IPScan » placé dans C:\Program Files\IPScan\IPScan.exe » sera autorisé : netsh advfirewall firewall add rule name= »Autoriser_IPScan » dir=in action=allow program= »%ProgramFiles%\IPScan\IPScan.exe »

8.Activer la gestion à distance
  • netsh advfirewall firewall set rule group= »Gestion à distance de Windows » new enable=yes


9. Activer /autoriser Les Connexions Bureau à distance
  • netsh advfirewall firewall set rule group= »Bureau à distance » new enable=Yes


10.Exporter ou importer la configuration & paramètres du Pare-feu Windows
  • Pour exporter toute la configuration du Pare-feu Windows vers D:\WSFirewall : netsh advfirewall export « D:\WSFirewall\WFconfiguration.wfw »

  • Pour exporter toute la configuration du Pare-feu Windows vers D:\WSFirewall : netsh advfirewall export « D:\WSFirewall\WFconfiguration.wfw »

Je vous laisse Run > Netsh Advfirewall /? et découvrir le reste des commandes.

Enfin, toujours gardez à l’esprit que le CLI Netsh.exe fait parti des outils en ligne de commande Windows les plus puissants (et compliqué aussi). Toujours PoC(er), Tester et Valider l’opération sur un LaB /Environnement d’Intégration /PréProd …Etc avant toute application sur les serveurs de Production.

A bientôt

MVP

J’ai l’immense honneur de vous annoncer le renouvellement de mon titre Microsoft « Most Valuable Professional » pour l’année 2017/2018

WTF

Un « Big Thanks » à Microsoft, Martine THIPHAINE et son équipe pour le temps consacré à l’étude du renouvellement de mon titre.

Compte tenu des différentes contributions autour de la technologie RDS (Remote Desktop Services), je suis nommé MVP RDS pour 2017/2018 (Catégorie « Enterprise Mobility »), selon la liste des MVP Francophone, je serais le premier (et l’unique :D) MVP RDS de France, et cela m’a fait énormément plaisir :).

What Next ?

Plusieurs contributions à venir, à commencer par :

Plusieurs séries d’articles autour de Microsoft Azure {Azure CLI 2.0 – Azure VM – Azure Batch – Azure Automation – Azure Networking – Azure Active Directory – ASR/Migration de Datacenter vers MS Azure, Windows Nano Server …} – RDS {2012 R2 /2016 : Design, Deployment, Security, Tuning & Migration} – Windows Server 2016 {HowTo : OS Hardening, IIS, Bitlocker /AppLocker, Security, Group Policy Objects, DFS/R, BranchCach, ADFS …} – VBS /BATCH /PS Scripting (avec des advanced scenarios)

Plusieurs « Guide pas à pas » sur différentes technos Microsoft orientés Infrastructure.

Plusieurs eBooks sur différentes technos Microsoft orientés Infrastructure.

Plusieurs scripts (.Bat /PS) de déploiement /automation sur différentes technos Microsoft orientées Infrastructure.

Mes projets d’écritures en cours :

Remote Desktop Services 2016 : Design, Deployment and Management (English version)

Remote Desktop Services 2016 : Design et déploiement d’une infrastructure RDS VDI 2016 dans le Cloud Azure

Azure Certification (533/534) : les premiers Cert Guides (en Français) sur la certification Azure Architect

Microsoft Azure : Concevoir et Déployer son infrastructure Cloud (IaaS /PaaS /STaaS /DaaS)

Microsoft Azure : Etendre son infrastructure Active Directory vers le Cloud

J’en profite de ce post pour remercier tous les followers (LinkedIn, Twitter, Blog …) ainsi que les personnes qui votent et partagent mes articles & actus.

A bientôt pour de nouvelles aventures.

Keep in touch :).

Hicham KADIRI

 
Introduction 

Un réseau virtuel Azure (Azure Virtual Network) est la représentation de votre réseau local d’entreprise dans le Cloud. En effet, quand vous décidez de déployer des ressources dans le Cloud et choisissez Microsoft comme fournisseur de Cloud public, eh bien votre « Réseau dans le Cloud » est le Azure Virtual Network (appelé aussi VNET : cf documentations Microsoft)

Vous pouvez configurer votre ou vos VNETs Azure de la même manière que pour votre ou vos réseaux locaux « On-Premise » : définir le plan d’adressage IP, les sous-réseaux (Subnets), le(s) serveur(s) DNS, les stratégies de sécurité, le routage …Etc

Vous pouvez également subdiviser votre VNET Azure en sous-réseaux pour isoler les différents trafics réseaux (e.g : environnements DMZ /INT /PREPROD /PROD) , ces sous-réseaux peuvent aussi représenter des « Branch Office » ou simplement des Sites de Backup /PRA pour votre S.I, un VNET Azure devient alors une extension de vos réseaux locaux internes « On-Prem » dans le Cloud.

La création d’un VNET Azure peut se faire via :

Le nouveau portail Azure : portal.azure.com

Windows PowerShell : utilisation du module PS Azure

Azure CLI 2.0 : via l’utilisation de la commande az network vnet

Nous allons découvrir à travers cet article la troisième méthode qu’est l’utilisation de l’interface Azure CLI 2.0

Now let’s create & manage our Azure Virtual Network via Azure CLI 2.0__O

 

Comment ça marche ?
  • Ouvrez une Session Windows sur la machine d’administration sur laquelle Azure CLI 2.0 a été installé
  • Lancez l’invite de commande (CMD.exe) en tant qu’Administrateur et saisissez az pour vérifier la disponibilité de l’interface Azure CLI 2.0
  • Après avoir saisi et exécuté la commande az, le Menu suivant vous est retourné :

  • La commande qui nous intéresse est Network. En effet, l’interface az dans le contexte Network vnet permet de créer et gérer les réseaux virtuels Azure.
  • Pour afficher toutes les commandes & sous-commandes liés à la création et gestion des VNETs, saisissez la commande suivante : az network vnet -h 

  • Pour afficher /lister les VNETs existants, saisissez az network vnet list –output table
    • Note : le paramètre –output table est utilisé pour une meilleure lisibilité du résultat retourné (résultat affiché sous forme de tableau)

  • Pour créer une nouveau VNET nommé « hk-vnet01 » dans le groupe de ressource « hk-ResourceGroup » et l’héberger au niveau de la région Azure « Europe de l’Ouest« , la commande suivante est utilisée : az network vnet create -n « hk-vnet01 » -g « hk-ResourceGroup » -l WestEurope

  • Pour créer une nouveau VNET nommé « hk-vnet02 » dans le groupe de ressource « hk-ResourceGroup » et l’héberger au niveau de la région Azure « Europe de l’Ouest » en spécifiant l’espace d’adressage 10.10.0.0/16 et en créant un premier sous-réseau dont l’ID est 10.10.1.0/24, la commande suivante est utilisée : az network vnet create -g hk-ResourceGroup -n hk-vnet02 -l WestEurope –address-prefix 10.10.0.0/16 –subnet-name HK-SUB-PROD –subnet-prefix 10.10.1.0/24

  • Pour afficher des informations détaillées sur un VNET spécifique (hk-vnet01 dans l’exemple suivant), la commande suivante est utilisée : az network vnet show -n « hk-vnet01 » -g « hk-ResourceGroup »

  • Pour supprimer un VNET spécifique (hk-vnet02 dans l’exemple suivant), la commande suivante est utilisée : az network vnet delete -n hk-vnet02 -g hk-ResourceGroup

  • Enfin, pour mettre à jour (modifier) un VNET spécifique, la commande suivante est utilisée : az network vnet update suivie du nom du groupe de ressource hébergeant le VNET (paramètre -g) et le nom du VNET à modifier /updater (paramètre -n). Les paramètres –address-prefixes et –add sont à utiliser pour mettre à jour la configuration de votre VNET. Si toutefois vous voulez afficher l’aide en ligne pour la commande az network vnet update, exécutez la commande suivante : az network vnet update -h