Azure Network Security Groups of Azure NSGs stellen je in staat om netwerkverkeer zowel inkomend als uitgaand te filteren voor één of meer Azure-resources. Als je ooit toegang tot een Azure-resource wilt voorkomen, moet je begrijpen hoe NSG’s werken.
In dit artikel leer je het doel van Azure NSG’s en hoe je ze kunt instellen met de PowerShell-scriptingtaal.
Vereisten
- Een Azure-resource om op te richten. In deze tutorial wordt een pay-as-you-go-abonnement en een Azure virtuele machine met Windows Server 2019 gebruikt.
- PowerShell 7+. Een eerdere versie van PowerShell kan werken, maar deze tutorial gebruikt PowerShell 7.0.1 voor de configuratie.
- De Azure Az-module PowerShell-module
Begrip van Azure NSG’s
Zie een Azure NSG als een firewall. Een firewall bestaat uit regels die acties definiëren voor inkomend en uitgaand verkeer, genaamd regelsets. Firewalls worden meestal geleverd met standaard regelsets die bepalen wat wel en niet door de firewall kan; Azure NSG’s hebben iets vergelijkbaars.
In tegenstelling tot traditionele firewalls hebben Azure NSG’s ook een cloudconcept genaamd servicetags. Servicetags zijn de manier van Azure om adresreeksen abstract te maken om ze gemakkelijker te beheren.
Laten we elk van deze belangrijke onderwerpen kort behandelen.
Het gebruik van servicetags om de configuratie van regels te vereenvoudigen
In cloudservices kunnen IP-adressen en reeksen vaak veranderen. Hierdoor kan het onderhouden van handmatig gedefinieerde Azure IP-reeksregels lastig zijn. Gelukkig definieert Azure veel verschillende servicetags die uw NSG-regel kan targeten.
Servicetags zijn een concept dat altijd de meest actuele adreslijst zal gebruiken. Servicetags zijn een manier om aanduidingen toe te wijzen aan sets adresreeksen voor eenvoudiger beheer.

Wees op de hoogte van de standaardregelsets
Wanneer u een Azure NSG maakt en toepast, moet u eerst op de hoogte zijn van de regels die deze NSG’s automatisch toepassen. Deze standaardregelsets zijn onveranderlijk en worden gemaakt voor zowel inkomend als uitgaand verkeer.
Elke regel in een Azure NSG-regelset heeft een prioriteit. De prioriteit bepaalt de volgorde van bewerking of welke regels andere regels overschrijven. Als bijvoorbeeld een regel met een prioriteit van 65000 bestaat die al het inkomende verkeer blokkeert en u een regel maakt met een prioriteit van 64999 die poort 80 toestaat, zal de Azure NSG al het verkeer blokkeren behalve poort 80.

Standaardregelsets kunnen niet worden gewijzigd, maar u kunt ze overschrijven met behulp van een regel met een hogere prioriteit, zoals hierboven weergegeven. Elk van deze regels is van toepassing op alle protocollen zoals TCP, UDP en ICMP.
Zorg ervoor dat uw regels een nummer gebruiken dat lager is dan
65500
om de standaardregels te overschrijven!
Wanneer u een Azure NSG maakt, ziet u verschillende standaardregels:
Inkomende regels
AllowVNetInBound
– Deze inkomende regel bevat alle IP-adresreeksen die zijn gedefinieerd voor het virtuele netwerk en alle verbonden on-premises adresruimtes. Daarnaast bevat deze regel gekoppelde virtuele netwerken, virtuele netwerken die zijn verbonden met een virtuele netwerk gateway, virtueel IP-adres van de host en eventuele adresvoorvoegsels die worden gebruikt bij door gebruiker gedefinieerde routes. Deze regel is ingesteld met een prioriteit van65000
.AllowAzureLoadBalancerInBound
– De service tagAzureLoadBalancer
komt overeen met het virtuele IP-adres van de host,168.63.129.16
, waar de Azure health probe vandaan komt. Daadwerkelijk verkeer gaat hier niet doorheen en als u geen gebruik maakt van Azure Load Balancing, kan deze regel worden overschreven. Het virtuele IP-adres van de host bestaat in alle regio’s specifiek om essentiële infrastructuurdiensten zoals DHCP, DNS, IMDS en health monitoring te bieden. Deze regel is ingesteld met een prioriteit van65001
.DenyAllInbound
– Als allerlaatste regel ingesteld, met behulp van prioriteit65500
, wordt met deze regel al het niet expliciet toegestane inkomende verkeer geweigerd.
Uitgaande regels
AllowVNetOutBound
– Dit bevat alle IP-adresbereiken gedefinieerd voor het virtuele netwerk, alle verbonden on-premises adresruimtes, verbonden virtuele netwerken, virtuele netwerken verbonden met een virtuele netwerk gateway, virtueel IP-adres van de host, en eventuele adresvoorvoegsels gebruikt op door de gebruiker gedefinieerde routes. Deze regel is ingesteld met een prioriteit van65000
.AllowInternetOutBound
– IP-adresruimte die buiten het virtuele netwerk ligt en bereikbaar is via het openbare internet. Inclusief het adresbereik van door Azure beheerde openbare IP-adresruimte. Deze regel is ingesteld met een prioriteit van65001
.DenyAllOutBound
– Net als in de inkomende regelset, is deze regel ingesteld als de allerlaatste regel, met prioriteit65500
. Deze uitgaande regel zal al het niet expliciet toegestane verkeer weigeren.
Het bouwen van Azure NSG’s met PowerShell
Genoeg gepraat, laten we onze handen vuil maken en beginnen met het bouwen van enkele Azure NSG’s met PowerShell! Ga ervan uit dat je in je PowerShell-console bent en geauthenticeerd bent, blijf lezen.
Gerelateerd: Connect-AzAccount: Jouw Toegangspoort tot Azure met PowerShell
Om een Azure NSG te maken met PowerShell, heb je één commando nodig; New-AzNetworkSecurityGroup
. Om een NSG met dit commando te maken, geef je de naam, de naam van de resourcegroep om de NSG onder te maken, en de locatie.
De onderstaande codevoorbeeld gebruikt de New-AzNetworkSecurityGroup
cmdlet om een NSG genaamd NSG-MyVM
te maken in de Articles resource groep die zich bevindt in het eastus
Azure datacenter.
Het maken van Azure NSG-regels met PowerShell
Zodra je de NSG hebt, zijn de standaard set regels waarschijnlijk niet genoeg. Je zult je eigen regels moeten maken.
Het configureren van een inkomende regel voor Remote Desktop Protocol
A common administrative task is the need to create an inbound rule for the Remote Desktop Protocol (RDP). In the tutorial’s example, perhaps it’s going to be applied to a Windows Server Azure VM and you need to access the VM via RDP. In that case, you need to open up port 3389 inbound.
Om een nieuwe inkomende regel toe te voegen aan een bestaande NSG zijn drie stappen nodig:
- Voer het
Get-AzNetworkSecurityGroup
commando uit om de bestaande NSG op te halen. - Voer het
Add-AzNetworkSecurityRuleConfig
commando uit om de regel te maken. - Voer het
Set-AzNetworkSecurityGroup
commando uit om die regel toe te passen op de NSG.
De onderstaande codevoorbeeld gebruikt de Get-AzNetworkSecurityGroup
om een bestaande NSG op te halen. Vervolgens wordt een regel gedefinieerd met Add-AzNetworkSecurityRuleConfig
die vervolgens wordt toegepast op de bestaande NSG met behulp van de Set-AzNetworkSecurityGroup
cmdlet.
De Prioriteitsparameter bepaalt wanneer de regel wordt geëvalueerd, de waarde van
200
bevindt zich bijna bovenaan omdat4096
de laagste prioriteitsregel is.
Weigeren van Uitgaand SANS Aanbevolen Verkeer
Vaak wordt uitgaand verkeer niet geblokkeerd omdat het uitdagend kan zijn om alle mogelijke poorten te kennen die een toepassing nodig kan hebben. Gelukkig kunt u enkele aanbevelingen voor uitgaand verkeer van experts vinden van het SANS Institute, een breed vertrouwde organisatie voor normen op het gebied van informatiebeveiliging.
Om de aanbevelingen van SANS te implementeren, kunnen we dezelfde drie stappen hierboven gebruiken, maar deze keer een regel maken met meerdere poorten en met een Richting
van Uitgaand in plaats van Inkomend.
- MS RPC – TCP- en UDP-poort 135
- NetBIOS/IP – TCP- en UDP-poorten 137-139
- SMB/IP – TCP-poort 445
- Trivial File Transfer Protocol (TFTP) – UDP-poort 69
- Syslog – UDP-poort 514
- Simple Network Management Protocol (SNMP) – UDP-poorten 161-162
De onderstaande code haalt een bestaande NSG-regel op met behulp van de Get-AzNetworkSecurityGroup
-cmdlet. Een uitgaande regel wordt gedefinieerd met de Add-AzNetworkSecurityRuleConfig
-cmdlet en toegepast via de Set-AzNetworkSecurityGroup
-cmdlet.
Natuurlijk zijn sommige van deze poorten waardevol en noodzakelijk, afhankelijk van de services die je aanbiedt. Waarschijnlijk moet je deze lijst aanpassen op basis van wat jouw applicatie vereist, die meestal wordt verstrekt door de leverancier of door het gebruik van een tool om open poorten te vinden zoals netstat
.
Gerelateerd: Poorten vinden met Netstat en PowerShell
Het configureren van een Azure NSG voor een specifiek subnet
Misschien heb je jouw virtuele netwerkomgeving verdeeld via subnets. Om meer gedetailleerd te zijn, kun je NSG’s alleen toepassen op een specifiek subnet om het verkeer in dat subnet gedetailleerd te regelen.
De onderstaande code zoekt een volledig adresbereik en past een NSG toe op dat bereik.
Leer vervolgens hoe je netwerkinterfaces kunt gebruiken om NSG’s verder op te splitsen en te beperken tot alleen wat nodig is, zoals een netwerkinterface.
Het toepassen van een Azure NSG op een netwerkinterface
Vergelijkbaar met hoe subnets werken, kunt u NSG-regels direct toepassen op een netwerkinterface. Dit granulariteitsniveau is meestal niet nodig, maar wanneer u meerdere netwerkinterfaces per virtuele machine heeft, kan het zinvol zijn om verschillende regelsets toe te passen op de individuele NIC’s indien nodig.
Vergelijkbaar met de definitie van subnetbeperkingen, kunt u regels toepassen op een individuele NIC. In dit geval gebruikt u de “Get-AzNetworkInterface” cmdlet om een specifieke NIC op de opgegeven VM op te halen. Dit zal de eerder gemaakte NSG hebben ingesteld op de “NetworkSecurityGroup” eigenschap.
Hoe zit het met het diagnosticeren en analyseren van verkeer via een NSG? Lees verder om meer te weten te komen over NSG flow logs en hoe u ze kunt gebruiken!
Foutopsporing en probleemoplossing met NSG Flow Logs
Tijdens het maken en gebruiken van NSG’s kunt u merken dat u verder moet debuggen om een defecte regel op te sporen of verkeer te analyseren. Flow Logs is een functie van de Azure Network Watcher die informatie logt over IP-verkeer dat door een NSG gaat.
Zodra Azure Network Watcher netwerkverkeer vastlegt, slaat het die gegevens op in een Azure Storage-account. Met behulp van PowerShell kunt u Azure NSG flow logs configureren om door die Azure Storage-account te bladeren en te debuggen en beter problemen op te lossen.
Gerelateerd: Hoe de AzCopy Tool te downloaden en installeren
Het inschakelen van NSG flow logs bestaat uit drie ruwe stappen in PowerShell:
- Registreer de provider
Microsoft.Insights
. - Maak een Operational Insights Workspace aan om de gegevens op te slaan.
- Schakel de NSG-flowlog in met het
Set-AzNetworkWatcherConfigFlowLog
-commando.
Om de configuratie van Azure NSG Flow Logs eenvoudiger te maken, zal de onderstaande PowerShell-code de verschillende vereiste stappen vereenvoudigen. Deze code maakt met name een Operational Insights Workspace aan en koppelt een Flog Log-configuratie aan de juiste abonnement, workspace en NSG.
Flow logs bevatten veel verschillende eigenschappen, zoals gebruikelijk is in firewall-logs. Dit omvat eigenschappen zoals bron- en bestemmings-IP, poorten, protocollen en tijdstempels. Versie 1- en 2-logs verschillen op één belangrijk punt: versie 2 heeft het concept van flow state. Dit markeert de voortzetting en beëindiging van een stroom samen met verkeersbandbreedte-informatie.
Volgende stappen
Azure NSGs zijn krachtige tools om het verkeer naar een resource te beperken en te auditen. Bij effectief gebruik kunt u uw resources en infrastructuur op de juiste manier beveiligen. Met de mogelijkheid om NSG-flowlogs te controleren en NSG’s te beperken tot subnets of netwerkadapters, heeft u de flexibiliteit om regels te specificeren zoals nodig en te verifiëren dat al het verkeer zoals verwacht is.