Filtrer le trafic réseau avec un groupe de sécurité réseau à l’aide de PowerShell

Vous pouvez filtrer le trafic réseau entrant dans un sous-réseau de réseau virtuel ou qui en sort, avec un groupe de sécurité réseau. Les groupes de sécurité réseau contiennent des règles de sécurité qui filtrent le trafic réseau par adresse IP, port et protocole. Les règles de sécurité sont appliquées aux ressources déployées dans un sous-réseau. Dans cet article, vous apprendrez comment :

  • Créer un groupe de sécurité réseau et les règles associées
  • Créer un réseau virtuel et associer un groupe de sécurité réseau à un sous-réseau
  • Déployer des machines virtuelles dans un sous-réseau
  • Tester les filtres de trafic

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Azure Cloud Shell

Azure héberge Azure Cloud Shell, un environnement d’interpréteur de commandes interactif que vous pouvez utiliser dans votre navigateur. Vous pouvez utiliser Bash ou PowerShell avec Cloud Shell pour utiliser les services Azure. Vous pouvez utiliser les commandes préinstallées Cloud Shell pour exécuter le code de cet article sans avoir à installer quoi que ce soit dans votre environnement local.

Pour démarrer Azure Cloud Shell :

Option Exemple/Lien
Sélectionnez Essayer dans le coin supérieur droite d’un bloc de codes ou de commandes. La sélection de Essayer ne copie pas automatiquement le code ni la commande dans Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur. Button to launch Azure Cloud Shell.
Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Pour utiliser Azure Cloud Shell :

  1. Démarrez Cloud Shell.

  2. Sélectionnez le bouton Copier sur un bloc de codes (ou un bloc de commandes) pour copier le code ou la commande.

  3. Collez le code ou la commande dans la session Cloud Shell en sélectionnant Ctrl+Maj+V sur Windows et Linux ou en sélectionnant Cmd+Maj+V sur macOS.

  4. Sélectionnez Entrée pour exécuter le code ou la commande.

Si vous choisissez d’installer et d’utiliser PowerShell en local, vous devez exécuter le module Azure PowerShell version 1.0.0 ou ultérieure pour les besoins de cet article. Exécutez Get-Module -ListAvailable Az pour rechercher la version installée. Si vous devez effectuer une mise à niveau, consultez Installer le module Azure PowerShell. Si vous exécutez PowerShell en local, vous devez également lancer Connect-AzAccount pour créer une connexion avec Azure.

Créer un groupe de sécurité réseau

Un groupe de sécurité réseau contient des règles de sécurité. Les règles de sécurité spécifient une source et une destination. Les sources et les destinations peuvent être des groupes de sécurité d’application.

Créer des groupes de sécurité d’application

Tout d’abord, créez un groupe de ressources pour toutes les ressources créées dans cet article avec New-AzResourceGroup. L’exemple suivant crée un groupe de ressources dans l’emplacement eastus :

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Créez un groupe de sécurité d’application avec New-AzApplicationSecurityGroup. Un groupe de sécurité d’application vous permet de regrouper des serveurs avec des exigences de filtrage de port similaires. L’exemple suivant crée deux groupes de sécurité d’application.

$webAsg = New-AzApplicationSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Name myAsgWebServers `
  -Location eastus

$mgmtAsg = New-AzApplicationSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Name myAsgMgmtServers `
  -Location eastus

Créer des règles de sécurité

Créez une règle de sécurité avec New-AzNetworkSecurityRuleConfig. L’exemple suivant crée une règle qui autorise le trafic entrant à partir d’Internet vers le groupe de sécurité d’application myWebServers par les ports 80 et 443 :

$webRule = New-AzNetworkSecurityRuleConfig `
  -Name "Allow-Web-All" `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 100 `
  -SourceAddressPrefix Internet `
  -SourcePortRange * `
  -DestinationApplicationSecurityGroupId $webAsg.id `
  -DestinationPortRange 80,443

The following example creates a rule that allows traffic inbound from the internet to the *myMgmtServers* application security group over port 3389:

$mgmtRule = New-AzNetworkSecurityRuleConfig `
  -Name "Allow-RDP-All" `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 110 `
  -SourceAddressPrefix Internet `
  -SourcePortRange * `
  -DestinationApplicationSecurityGroupId $mgmtAsg.id `
  -DestinationPortRange 3389

Dans cet article, RDP (port 3389) est exposé sur Internet pour la machine virtuelle myAsgMgmtServers. Pour les environnements de production, au lieu d’exposer le port 3389 sur Internet, il est recommandé de vous connecter aux ressources Azure que vous souhaitez gérer à l’aide d’une connexion réseau VPN ou privée.

Créer un groupe de sécurité réseau

Créez un groupe de sécurité réseau avec New-AzNetworkSecurityGroup. L’exemple suivant permet de créer un groupe de sécurité réseau nommé myNsg :

$nsg = New-AzNetworkSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -Name myNsg `
  -SecurityRules $webRule,$mgmtRule

Créez un réseau virtuel

Créez un réseau virtuel avec New-AzVirtualNetwork. L’exemple suivant crée un réseau virtuel nommé myVirtualNetwork :

$virtualNetwork = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork `
  -AddressPrefix 10.0.0.0/16

Créez une configuration de sous-réseau avec New-AzVirtualNetworkSubnetConfig, puis écrivez la configuration du sous-réseau dans le réseau virtuel avec Set-AzVirtualNetwork. L’exemple suivant ajoute un sous-réseau nommé mySubnet au réseau virtuel et l’associe au groupe de sécurité réseau myNsg :

Add-AzVirtualNetworkSubnetConfig `
  -Name mySubnet `
  -VirtualNetwork $virtualNetwork `
  -AddressPrefix "10.0.2.0/24" `
  -NetworkSecurityGroup $nsg
$virtualNetwork | Set-AzVirtualNetwork

Créer des machines virtuelles

Avant de créer les machines virtuelles, récupérez l’objet de réseau virtuel avec le sous-réseau à l’aide de la commande Get-AzVirtualNetwork :

$virtualNetwork = Get-AzVirtualNetwork `
 -Name myVirtualNetwork `
 -Resourcegroupname myResourceGroup

Créez une adresse IP publique pour chaque machine virtuelle avec New-AzPublicIpAddress :

$publicIpWeb = New-AzPublicIpAddress `
  -AllocationMethod Dynamic `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -Name myVmWeb

$publicIpMgmt = New-AzPublicIpAddress `
  -AllocationMethod Dynamic `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -Name myVmMgmt

Créez deux interfaces réseau avec New-AzNetworkInterfaceet attribuez une adresse IP publique à l’interface réseau. L’exemple suivant crée une interface réseau, lui associe l’adresse IP publique myVmWeb et la rend membre du groupe de sécurité d’application myAsgWebServers :

$webNic = New-AzNetworkInterface `
  -Location eastus `
  -Name myVmWeb `
  -ResourceGroupName myResourceGroup `
  -SubnetId $virtualNetwork.Subnets[0].Id `
  -ApplicationSecurityGroupId $webAsg.Id `
  -PublicIpAddressId $publicIpWeb.Id

L’exemple suivant crée une interface réseau, lui associe l’adresse IP publique myVmMgmt et la rend membre du groupe de sécurité d’application myAsgMgmtServers :

$mgmtNic = New-AzNetworkInterface `
  -Location eastus `
  -Name myVmMgmt `
  -ResourceGroupName myResourceGroup `
  -SubnetId $virtualNetwork.Subnets[0].Id `
  -ApplicationSecurityGroupId $mgmtAsg.Id `
  -PublicIpAddressId $publicIpMgmt.Id

Créez deux machines virtuelles dans le réseau virtuel pour pouvoir valider le filtrage du trafic à une étape ultérieure.

Créez une configuration de machine virtuelle avec New-AzVMConfig, puis créez la machine virtuelle avec New-AzVM. L’exemple suivant crée une machine virtuelle qui servira de serveur web. L’option -AsJob crée la machine virtuelle en arrière-plan. Vous pouvez donc passer à l’étape suivante :

# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."

$webVmConfig = New-AzVMConfig `
  -VMName myVmWeb `
  -VMSize Standard_DS1_V2 | `
Set-AzVMOperatingSystem -Windows `
  -ComputerName myVmWeb `
  -Credential $cred | `
Set-AzVMSourceImage `
  -PublisherName MicrosoftWindowsServer `
  -Offer WindowsServer `
  -Skus 2016-Datacenter `
  -Version latest | `
Add-AzVMNetworkInterface `
  -Id $webNic.Id
New-AzVM `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -VM $webVmConfig `
  -AsJob

Créez une machine virtuelle comme un serveur d’administration :

# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."

# Create the web server virtual machine configuration and virtual machine.
$mgmtVmConfig = New-AzVMConfig `
  -VMName myVmMgmt `
  -VMSize Standard_DS1_V2 | `
Set-AzVMOperatingSystem -Windows `
  -ComputerName myVmMgmt `
  -Credential $cred | `
Set-AzVMSourceImage `
  -PublisherName MicrosoftWindowsServer `
  -Offer WindowsServer `
  -Skus 2016-Datacenter `
  -Version latest | `
Add-AzVMNetworkInterface `
  -Id $mgmtNic.Id
New-AzVM `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -VM $mgmtVmConfig

La création de la machine virtuelle prend quelques minutes. Ne passez pas à l’étape suivante avant qu’Azure ait terminé la création de la machine virtuelle.

Tester les filtres de trafic

Utilisez Get-AzPublicIpAddress pour retourner l’adresse IP publique d’une machine virtuelle. L’exemple suivant retourne l’adresse IP publique de la machine virtuelle myVmMgmt :

Get-AzPublicIpAddress `
  -Name myVmMgmt `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

Utilisez la commande suivante pour créer une session Bureau à distance avec la machine virtuelle myVmMgmt à partir de votre ordinateur local. Remplacez <publicIpAddress> par l’adresse IP retournée par la commande précédente.

mstsc /v:<publicIpAddress>

Ouvrez le fichier .rdp téléchargé. Si vous y êtes invité, sélectionnez Connexion.

Entrez le nom d’utilisateur et le mot de passe spécifiés lors de la création de la machine virtuelle (il se peut que vous deviez choisir Plus de choix, puis Utiliser un compte différent pour spécifier les informations d’identification que vous avez entrées lors de la création de la machine virtuelle), puis sélectionnez OK. Un avertissement de certificat peut s’afficher pendant le processus de connexion. SélectionnezOui pour poursuivre le processus de connexion.

La connexion réussit, car le port 3389 autorise le trafic entrant depuis Internet vers le groupe de sécurité d’application myAsgMgmtServers dans lequel se situe l’interface réseau attachée à la machine virtuelle myVmMgmt.

Utilisez la commande suivante pour créer une connexion Bureau à distance vers la machine virtuelle myVmWeb à partir de la machine virtuelle myVmMgmt, avec la commande suivante, à partir de PowerShell :

mstsc /v:myvmWeb

La connexion réussit car une règle de sécurité par défaut au sein de chaque groupe de sécurité réseau autorise le trafic par tous les ports entre toutes les adresses IP au sein d’un réseau virtuel. Vous ne pouvez pas créer une connexion Bureau à distance à la machine virtuelle myVmWeb depuis Internet, car la règle de sécurité pour le myAsgWebServers n’autorise pas les données entrantes venant d’Internet sur le port 3389.

Utilisez la commande suivante pour installer Microsoft IIS sur la machine virtuelle myVmWeb à partir de PowerShell :

Install-WindowsFeature -name Web-Server -IncludeManagementTools

Une fois l’installation d’IIS terminée, déconnectez-vous de la machine virtuelle myVmWeb, ce qui vous laisse dans la connexion Bureau à distance de la machine virtuelle myVmMgmt. Pour afficher l’écran d’accueil d’IIS, ouvrez un navigateur web et accédez à http://myVmWeb.

Déconnectez-vous de la machine virtuelle myVmMgmt.

Sur votre ordinateur, entrez la commande suivante à partir de PowerShell pour récupérer l’adresse IP publique du serveur myVmWeb :

Get-AzPublicIpAddress `
  -Name myVmWeb `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

Pour confirmer que vous pouvez accéder au serveur web myVmWeb sans être dans Azure, ouvrez un navigateur web sur votre ordinateur et accédez à http://<public-ip-address-from-previous-step>. La connexion réussit, car le port 80 autorise le trafic entrant depuis Internet vers le groupe de sécurité d’application myAsgWebServers dans lequel se situe l’interface réseau attachée à la machine virtuelle myVmWeb.

Nettoyer les ressources

Quand vous n’avez plus besoin d’un groupe de ressources, vous pouvez utiliser Remove-AzResourceGroup pour le supprimer ainsi que toutes les ressources qu’il contient :

Remove-AzResourceGroup -Name myResourceGroup -Force

Étapes suivantes

Dans cet article, vous avez créé un groupe de sécurité réseau et vous l’avez associé à un sous-réseau d’un réseau virtuel. Pour en savoir plus sur les groupes de sécurité réseau, consultez Vue d’ensemble d’un groupe de sécurité réseau et Gérer un groupe de sécurité réseau.

Azure achemine par défaut le trafic entre les sous-réseaux. À la place, vous pouvez choisir par exemple d’acheminer le trafic entre les sous-réseaux via une machine virtuelle, agissant comme un pare-feu. Pour savoir comment procéder, consultez Créer une table de routage.