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. | |
Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. | |
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. |
Så här använder du Azure Cloud Shell:
Starta Cloud Shell.
Välj knappen Kopiera i ett kodblock (eller kommandoblock) för att kopiera koden eller kommandot.
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.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för