Filtrera nätverkstrafik med en nätverkssäkerhetsgrupp med Hjälp av PowerShell

Du kan filtrera inkommande och utgående nätverkstrafik till och från ett undernät i ett virtuellt nätverk med en nätverkssäkerhetsgrupp. Nätverkssäkerhetsgrupper innehåller säkerhetsregler som filtrerar nätverkstrafik efter IP-adress, port och protokoll. Säkerhetsregler tillämpas på resurser som har distribuerats i ett undernät. I den här artikeln kan du se hur du:

  • Skapa en nätverkssäkerhetsgrupp och säkerhetsregler
  • Skapa ett virtuellt nätverk och associera en nätverkssäkerhetsgrupp med ett undernät
  • Distribuera virtuella datorer (VM) i ett undernät
  • Testa trafikfilter

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

Azure Cloud Shell

Azure är värd för Azure Cloud Shell, en interaktiv gränssnittsmiljö som du kan använda via webbläsaren. Du kan använda antingen Bash eller PowerShell med Cloud Shell för att arbeta med Azure-tjänster. Du kan använda förinstallerade Cloud Shell-kommandon för att köra koden i den här artikeln, utan att behöva installera något i din lokala miljö.

Så här startar du Azure Cloud Shell:

Alternativ Exempel/länk
Välj Prova i det övre högra hörnet i en kod eller ett kommandoblock. Om du väljer Prova kopieras inte koden eller kommandot automatiskt till Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. Button to launch Azure Cloud Shell.
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. Screenshot that shows the Cloud Shell button in the Azure portal

Så här använder du Azure Cloud Shell:

  1. Starta Cloud Shell.

  2. Välj knappen Kopiera i ett kodblock (eller kommandoblock) för att kopiera koden eller kommandot.

  3. Klistra in koden eller kommandot i Cloud Shell-sessionen genom att välja Ctrl+Skift+V i Windows och Linux, eller genom att välja Cmd+Shift+V på macOS.

  4. Välj Retur för att köra koden eller kommandot.

Om du väljer att installera och använda PowerShell lokalt kräver den här artikeln Azure PowerShell-modulen version 1.0.0 eller senare. Kör Get-Module -ListAvailable Az för att hitta den installerade versionen. Om du behöver uppgradera kan du läsa Install Azure PowerShell module (Installera Azure PowerShell-modul). Om du kör PowerShell lokalt måste du också köra Connect-AzAccount för att skapa en anslutning till Azure.

Skapa en nätverkssäkerhetsgrupp

En nätverkssäkerhetsgrupp innehåller säkerhetsregler. Säkerhetsregler anger en källa och ett mål. Källor och mål kan vara programsäkerhetsgrupper.

Skapa programsäkerhetsgrupper

Skapa först en resursgrupp för alla resurser som skapats i den här artikeln med New-AzResourceGroup. I följande exempel skapas en resursgrupp på platsen eastus:

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Skapa en programsäkerhetsgrupp med New-AzApplicationSecurityGroup. En programsäkerhetsgrupp gör att du kan gruppera servrar med liknande portfiltreringskrav. I följande exempel skapas två programsäkerhetsgrupper.

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

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

Skapa säkerhetsregler

Skapa en säkerhetsregel med New-AzNetworkSecurityRuleConfig. I följande exempel skapas en regel som tillåter inkommande trafik från Internet till programsäkerhetsgruppen myWebServers via port 80 och 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

I den här artikeln exponeras RDP (port 3389) på Internet för den virtuella datorn myAsgMgmtServers . För produktionsmiljöer rekommenderas, i stället för att exponera port 3389 mot Internet, att du ansluter till Azure-resurser som du vill hantera med hjälp av en VPN-anslutning eller privat nätverksanslutning.

Skapa en nätverkssäkerhetsgrupp

Skapa en nätverkssäkerhetsgrupp med New-AzNetworkSecurityGroup. I följande exempel skapas en nätverkssäkerhetsgrupp med namnet myNsg:

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

Skapa ett virtuellt nätverk

Skapa ett virtuellt nätverk med hjälp av New-AzVirtualNetwork. I följande exempel skapas ett virtuellt nätverk med namnet myVirtualNetwork:

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

Skapa en undernätskonfiguration med New-AzVirtualNetworkSubnetConfig och skriv sedan undernätskonfigurationen till det virtuella nätverket med Set-AzVirtualNetwork. I följande exempel läggs ett undernät med namnet mySubnet till i det virtuella nätverket och nätverkssäkerhetsgruppen myNsg associeras med det:

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

Skapa virtuella datorer

Innan du skapar de virtuella datorerna hämtar du det virtuella nätverksobjektet med undernätet med Get-AzVirtualNetwork:

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

Skapa en offentlig IP-adress för varje virtuell dator med New-AzPublicIpAddress:

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

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

Skapa två nätverksgränssnitt med New-AzNetworkInterface och tilldela nätverksgränssnittet en offentlig IP-adress. I följande exempel skapas ett nätverksgränssnitt, den offentliga IP-adressen för myVmWeb associeras med det och det görs till medlem i programsäkerhetsgruppen myAsgWebServers:

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

I följande exempel skapas ett nätverksgränssnitt, den offentliga IP-adressen för myVmMgmt associeras med det och det görs till medlem i programsäkerhetsgruppen myAsgMgmtServers:

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

Skapa två virtuella datorer i det virtuella nätverket så att du kan verifiera trafikfiltrering i ett senare steg.

Skapa en VM-konfiguration med New-AzVMConfig och skapa sedan den virtuella datorn med New-AzVM. I följande exempel skapas en virtuell dator som fungerar som en webbserver. Alternativet -AsJob skapar den virtuella datorn i bakgrunden, så att du kan fortsätta till nästa steg:

# 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

Skapa en virtuell dator som fungerar som en hanteringsserver:

# 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

Det tar några minuter att skapa den virtuella datorn. Fortsätt inte med nästa steg förrän Azure har skapat den virtuella datorn.

Testa trafikfilter

Använd Get-AzPublicIpAddress för att returnera den offentliga IP-adressen för en virtuell dator. I följande exempel returneras den offentliga IP-adressen för den virtuella datorn myVmMgmt:

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

Använd följande kommando för att skapa en fjärrskrivbordssession med den virtuella datorn myVmMgmt från den lokala datorn. Ersätt <publicIpAddress> med IP-adressen som returnerades från föregående kommando.

mstsc /v:<publicIpAddress>

Öppna den nedladdade RDP-filen. Välj Anslut om du uppmanas att göra det.

Ange användarnamnet och lösenordet du angav när du skapade den virtuella datorn (du kanske måste välja Fler alternativ och sedan Använd ett annat konto för att ange autentiseringsuppgifterna du angav när du skapade den virtuella datorn) och välj OK. Du kan få en certifikatvarning under inloggningen. Välj Ja för att fortsätta med anslutningen.

Anslutningen lyckas, eftersom port 3389 tillåts inkommande från Internet till programsäkerhetsgruppen myAsgMgmtServers där nätverksgränssnittet som är kopplat till den virtuella datorn myVmMgmt ingår.

Använd följande kommando för att skapa en fjärrskrivbordsanslutning till den virtuella datorn myVmWeb, från den virtuella datorn myVmMgmt, med följande kommando, från PowerShell:

mstsc /v:myvmWeb

Anslutningen lyckas eftersom en standardsäkerhetsregel i varje nätverkssäkerhetsgrupp tillåter trafik via alla portar mellan alla IP-adresser i ett virtuellt nätverk. Det går inte att skapa en fjärrskrivbordsanslutning till den virtuella datorn myVmWeb från Internet eftersom säkerhetsregeln för myAsgWebServers inte tillåter port 3389 inkommande från Internet.

Använd följande kommando för att installera Microsoft IIS på den virtuella datorn myVmWeb från PowerShell:

Install-WindowsFeature -name Web-Server -IncludeManagementTools

När IIS-installationen är klar kopplar du från den virtuella datorn myVmWeb, vilket lämnar dig i fjärrskrivbordsanslutningen med den virtuella datorn myVmMgmt. Om du vill visa välkomstskärmen för IIS öppnar du en webbläsare och bläddrar till http://myVmWeb.

Koppla från den virtuella datorn myVmMgmt.

På datorn anger du följande kommando från PowerShell för att hämta den offentliga IP-adressen för servern myVmWeb:

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

Bekräfta att du har åtkomst till webbservern myVmWeb utanför Azure genom att öppna en webbläsare på datorn och gå till http://<public-ip-address-from-previous-step>. Anslutningen lyckas, eftersom port 80 tillåts inkommande från Internet till programsäkerhetsgruppen myAsgWebServers där nätverksgränssnittet som är kopplat till den virtuella datorn myVmWeb ingår.

Rensa resurser

När den inte längre behövs kan du använda Remove-AzResourceGroup för att ta bort resursgruppen och alla resurser som den innehåller:

Remove-AzResourceGroup -Name myResourceGroup -Force

Nästa steg

I den här artikeln har du skapat en nätverkssäkerhetsgrupp och associerat den med ett virtuellt nätverksundernät. Mer information om nätverkssäkerhetsgrupper finns i Översikt över nätverkssäkerhetsgrupper och Hantera en nätverkssäkerhetsgrupp.

Azure dirigerar som standard trafik mellan undernät. Du kan i stället välja att exempelvis dirigera trafik mellan undernät via en virtuell dator, som fungerar som en brandvägg. Mer information finns i Skapa en routningstabell.