Netwerkverkeer filteren met een netwerkbeveiligingsgroep met behulp van de Azure CLI

U kunt het netwerkverkeer inkomend in en uitgaand naar een subnet van een virtueel netwerk filteren met een netwerkbeveiligingsgroep. Netwerkbeveiligingsgroepen bevatten beveiligingsregels die netwerkverkeer filteren op IP-adres, poort en protocol. Beveiligingsregels worden toegepast op resources die zijn geïmplementeerd in een subnet. In dit artikel leert u het volgende:

  • Een netwerkbeveiligingsgroep en beveiligingsregels maken
  • Een virtueel netwerk maken en een netwerkbeveiligingsgroep koppelen aan een subnet
  • Virtuele machines (VM) implementeren in een subnet
  • Verkeersfilters testen

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

  • Voor dit artikel is versie 2.0.28 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

Een netwerkbeveiligingsgroep maken

Een netwerkbeveiligingsgroep bevat beveiligingsregels. Beveiligingsregels geven een bron en doel op. Bronnen en doelen kunnen toepassingsbeveiligingsgroepen zijn.

Toepassingsbeveiligingsgroepen maken

Maak eerst een resourcegroep voor alle resources die in dit artikel zijn gemaakt met az group create. In het volgende voorbeeld wordt een resourcegroep met de naam gemaakt op de locatie eastus:

az group create \
  --name myResourceGroup \
  --location eastus

Maak een toepassingsbeveiligingsgroep met az network asg create. Met een toepassingsbeveiligingsgroep kunt u servers met vergelijkbare poortfiltervereisten groeperen. In het volgende voorbeeld worden twee toepassingsbeveiligingsgroepen gemaakt.

az network asg create \
  --resource-group myResourceGroup \
  --name myAsgWebServers \
  --location eastus

az network asg create \
  --resource-group myResourceGroup \
  --name myAsgMgmtServers \
  --location eastus

Een netwerkbeveiligingsgroep maken

Maak een netwerkbeveiligingsgroep met az network nsg create. In het volgende voorbeeld wordt een netwerkbeveiligingsgroep met de naam myNsg gemaakt:

# Create a network security group
az network nsg create \
  --resource-group myResourceGroup \
  --name myNsg

Beveiligingsregels maken

Maak een beveiligingsregel met az network nsg rule create. In het volgende voorbeeld wordt een regel gemaakt die inkomend verkeer van internet naar de toepassingsbeveiligingsgroep myWebServers toestaat via de poorten 80 en 443:

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsg \
  --name Allow-Web-All \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 100 \
  --source-address-prefix Internet \
  --source-port-range "*" \
  --destination-asgs "myAsgWebServers" \
  --destination-port-range 80 443

In het volgende voorbeeld wordt een regel gemaakt waarmee verkeer van internet naar de toepassingsbeveiligingsgroep myMgmtServers via poort 22 is toegestaan:

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsg \
  --name Allow-SSH-All \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 110 \
  --source-address-prefix Internet \
  --source-port-range "*" \
  --destination-asgs "myAsgMgmtServers" \
  --destination-port-range 22

In dit artikel wordt SSH (poort 22) blootgesteld aan internet voor de VM myAsgMgmtServers . Voor productieomgevingen, in plaats van poort 22 beschikbaar te maken voor internet, is het raadzaam verbinding te maken met Azure-resources die u wilt beheren met behulp van een VPN- of privénetwerkverbinding.

Een virtueel netwerk maken

Maak een virtueel netwerk met az network vnet create. In het volgende voorbeeld wordt een virtueel netwerk met de naam myVirtualNetwork gemaakt:

az network vnet create \
  --name myVirtualNetwork \
  --resource-group myResourceGroup \
  --address-prefixes 10.0.0.0/16

Voeg een subnet toe aan een virtueel netwerk met az network vnet subnet create. In het volgende voorbeeld wordt een subnet met de naam mySubnet toegevoegd aan het virtuele netwerk en wordt de netwerkbeveiligingsgroep myNsg hieraan gekoppeld:

az network vnet subnet create \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name mySubnet \
  --address-prefix 10.0.0.0/24 \
  --network-security-group myNsg

Virtuele machines maken

Maak twee virtuele machines in het virtuele netwerk, zodat u het filteren van verkeer in een latere stap kunt controleren.

Maak een VM met az vm create. In het volgende voorbeeld wordt een virtuele machine gemaakt die als een webserver fungeert. De --asgs myAsgWebServers optie zorgt ervoor dat Azure de netwerkinterface maakt voor de VIRTUELE machine een lid van de toepassingsbeveiligingsgroep myAsgWebServers .

De --nsg "" optie wordt opgegeven om te voorkomen dat Azure een standaardnetwerkbeveiligingsgroep maakt voor de netwerkinterface die Azure maakt wanneer de virtuele machine wordt gemaakt. Om dit artikel te stroomlijnen, wordt een wachtwoord gebruikt. Sleutels worden doorgaans gebruikt in productie-implementaties. Als u sleutels gebruikt, moet u ook het doorsturen van de SSH-agent configureren voor de resterende stappen. Zie de documentatie voor uw SSH-client voor meer informatie. Vervang <replace-with-your-password> in de volgende opdracht door een wachtwoord van uw keuze.

adminPassword="<replace-with-your-password>"

az vm create \
  --resource-group myResourceGroup \
  --name myVmWeb \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet mySubnet \
  --nsg "" \
  --asgs myAsgWebServers \
  --admin-username azureuser \
  --admin-password $adminPassword

Het maken van de virtuele machine duurt een paar minuten. Nadat de VIRTUELE machine is gemaakt, wordt uitvoer geretourneerd die vergelijkbaar is met het volgende voorbeeld:

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVmWeb",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "13.90.242.231",
  "resourceGroup": "myResourceGroup"
}

Let op het openbare IP-adres. Dit adres wordt in een latere stap gebruikt voor toegang tot de virtuele machine vanaf internet. Maak een VM die fungeert als een beheerserver:

az vm create \
  --resource-group myResourceGroup \
  --name myVmMgmt \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet mySubnet \
  --nsg "" \
  --asgs myAsgMgmtServers \
  --admin-username azureuser \
  --admin-password $adminPassword

Het maken van de virtuele machine duurt een paar minuten. Nadat de virtuele machine is gemaakt, noteert u het publicIpAddress in de geretourneerde uitvoer. Dit adres wordt gebruikt voor toegang tot de VIRTUELE machine in de volgende stap. Ga pas verder met de volgende stap als Azure klaar is met het maken van de virtuele machine.

Verkeersfilters testen

Gebruik de volgende opdracht om een SSH-sessie te maken met de vm myVmMgmt . Vervang <publicIpAddress> door het openbare IP-adres van uw VIRTUELE machine. In het bovenstaande voorbeeld is het IP-adres 13.90.242.231.

ssh azureuser@<publicIpAddress>

Wanneer u om een wachtwoord wordt gevraagd, voert u het wachtwoord in dat u hebt ingevoerd in Virtuele machines maken.

De verbinding slaagt, omdat poort 22 binnenkomend van internet is toegestaan naar de toepassingsbeveiligingsgroep myAsgMgmtServers waarin de netwerkinterface is gekoppeld aan de vm myVmMgmt .

Gebruik de volgende opdracht om SSH naar de myVmWeb-VM te gaan vanaf de vm myVmMgmt :

ssh azureuser@myVmWeb

De verbinding slaagt omdat een standaardbeveiligingsregel binnen elke netwerkbeveiligingsgroep verkeer via alle poorten tussen alle IP-adressen binnen een virtueel netwerk toestaat. U kunt geen SSH naar de myVmWeb-VM vanaf internet omdat de beveiligingsregel voor de myAsgWebServers poort 22 niet toestaat vanuit internet.

Gebruik de volgende opdrachten om de nginx-webserver te installeren op de vm myVmWeb :

# Update package source
sudo apt-get -y update

# Install NGINX
sudo apt-get -y install nginx

De vm myVmWeb is uitgaand naar internet toegestaan om nginx op te halen omdat met een standaardbeveiligingsregel al het uitgaande verkeer naar internet is toegestaan. Sluit de myVmWeb SSH-sessie af, waardoor u bij de username@myVmMgmt:~$ prompt van de vm myVmMgmt wordt weergegeven. Voer de volgende opdracht in om het welkomstscherm van nginx op te halen van de vm myVmWeb :

curl myVmWeb

Afmelding van de vm myVmMgmt . Als u wilt bevestigen dat u toegang hebt tot de myVmWeb-webserver van buiten Azure, voert u dit curl <publicIpAddress> in vanaf uw eigen computer. De verbinding slaagt, omdat poort 80 binnenkomend van internet is toegestaan naar de toepassingsbeveiligingsgroep myAsgWebServers waarin de netwerkinterface die is gekoppeld aan de myVmWeb-VM zich bevindt.

Resources opschonen

Wanneer u deze niet meer nodig hebt, gebruikt u az group delete om de resourcegroep en alle resources die deze bevat te verwijderen.

az group delete --name myResourceGroup --yes

Volgende stappen

In dit artikel hebt u een netwerkbeveiligingsgroep gemaakt en gekoppeld aan een subnet van een virtueel netwerk. Zie Overzicht van netwerkbeveiligingsgroepen en Een beveiligingsgroep beheren voor meer informatie over netwerkbeveiligingsgroepen.

Azure routeert standaard verkeer tussen subnetten. In plaats daarvan kunt u verkeer routeren tussen subnetten via een virtuele machine, die bijvoorbeeld als een firewall fungeert. Zie Een routetabel maken voor meer informatie.