Azure Network Security Groups oder Azure NSGs ermöglichen es Ihnen, den Netzwerkverkehr von einer oder mehreren Azure-Ressourcen sowohl eingehend als auch ausgehend zu filtern. Wenn Sie jemals den Zugriff auf eine Azure-Ressource verhindern müssen, müssen Sie verstehen, wie NSGs funktionieren.
In diesem Artikel erfahren Sie den Zweck von Azure NSG und wie Sie sie mit der PowerShell-Skriptsprache einrichten können.
Voraussetzungen
- Eine Azure-Ressource als Ziel. In diesem Tutorial wird ein Pay-as-you-go-Abonnement und eine Azure-Windows Server 2019-Virtual Machine verwendet.
- PowerShell 7+. Frühere Versionen von PowerShell können funktionieren, aber dieses Tutorial verwendet PowerShell 7.0.1 für die Konfiguration.
- Das PowerShell-Modul Azure Az
Verständnis von Azure NSGs
Denken Sie an ein Azure NSG als eine Firewall. Eine Firewall besteht aus Regeln, die Aktionen für eingehenden und ausgehenden Verkehr festlegen, sogenannte Regelwerke. Firewalls kommen normalerweise mit Standardregelwerken, die festlegen, was durch die Firewall hindurchgehen kann und was nicht; Azure NSGs haben etwas Ähnliches.
Im Gegensatz zu herkömmlichen Firewalls haben Azure NSGs auch ein Cloud-Konzept namens Service-Tags. Service-Tags sind eine Möglichkeit von Azure, Adressbereiche abstrakt darzustellen, um ihre Verwaltung zu erleichtern.
Lassen Sie uns kurz auf jedes dieser wichtigen Themen eingehen.
Verwendung von Service-Tags zur Vereinfachung der Regelkonfiguration
In Cloud-Diensten können sich IP-Adressen und -Bereiche oft ändern. Dies kann es schwierig machen, manuell definierte Azure-IP-Bereichsregelsätze zu pflegen. Glücklicherweise definiert Azure viele verschiedene Service-Tags, auf die Ihre NSG-Regel abzielen kann.
Service-Tags sind ein Konzept, das immer die aktuellste Adressliste verwendet. Service-Tags sind eine Möglichkeit, Platzhalter für Gruppen von Adressbereichen zuzuweisen, um die Verwaltung zu erleichtern.

Beachten Sie die Standardregelsätze
Beim Erstellen und Anwenden einer Azure NSG müssen Sie zuerst die Regeln kennen, die diese NSGs automatisch anwenden. Diese Standardregelsätze sind unveränderlich und werden sowohl für eingehenden als auch für ausgehenden Datenverkehr erstellt.
Jede Regel in einem Azure NSG-Regelsatz hat eine Priorität. Die Priorität bestimmt die Reihenfolge der Ausführung oder welche Regeln andere überschreiben. Wenn zum Beispiel eine Regel mit einer Priorität von 65000 vorhanden ist, die den gesamten eingehenden Datenverkehr blockiert, und Sie eine Regel mit einer Priorität von 64999 erstellen, die Port 80 zulässt, blockiert die Azure NSG den gesamten Datenverkehr außer Port 80.

Die Standardregelsätze können nicht geändert werden, aber Sie können sie mit einer Regel höherer Priorität außer Kraft setzen, wie oben gezeigt. Jede dieser Regeln gilt für alle Protokolle wie TCP, UDP und ICMP.
Stellen Sie sicher, dass Ihre Regeln eine Nummer verwenden, die niedriger als
65500
ist, um die Standardregeln außer Kraft zu setzen!
Wenn Sie eine Azure NSG erstellen, sehen Sie verschiedene Standardregeln:
Eingehende Regeln
AllowVNetInBound
– Diese eingehende Regel enthält alle IP-Adressbereiche, die für das virtuelle Netzwerk und alle verbundenen lokalen Adressräume definiert sind. Darüber hinaus enthält diese Regel virtuelle Netzwerke, die mit einem virtuellen Netzwerkgateway verbunden sind, die virtuelle IP-Adresse des Hosts und alle Adresspräfixe, die für benutzerdefinierte Routen verwendet werden. Diese Regel ist mit einer Priorität von65000
festgelegt.AllowAzureLoadBalancerInBound
– Das Dienst-TagAzureLoadBalancer
wird in die virtuelle IP-Adresse des Hosts,168.63.129.16
, übersetzt, von der die Azure-Gesundheitsüberprüfung stammt. Tatsächlicher Datenverkehr läuft hier nicht durch, und wenn Sie Azure Load Balancing nicht verwenden, kann diese Regel außer Kraft gesetzt werden. Die virtuelle IP-Adresse des Hosts existiert in allen Regionen speziell, um essentielle Infrastrukturdienste wie DHCP, DNS, IMDS und die Überwachung der Gesundheit bereitzustellen. Diese Regel ist mit einer Priorität von65001
festgelegt.DenyAllInbound
– Als allerletzte Regel festgelegt, mit einer Priorität von65500
, verweigert diese Regel den gesamten nicht explizit zugelassenen eingehenden Datenverkehr.
Ausgehende Regeln
AllowVNetOutBound
– Dies enthält alle IP-Adressbereiche, die für das virtuelle Netzwerk definiert sind, alle verbundenen On-Premises-Adressbereiche, verbundene virtuelle Netzwerke, virtuelle Netzwerke, die mit einem virtuellen Netzwerkgateway verbunden sind, die virtuelle IP-Adresse des Hosts und alle Adresspräfixe, die für benutzerdefinierte Routen verwendet werden. Diese Regel ist mit einer Priorität von65000
festgelegt.AllowInternetOutBound
– IP-Adressbereich außerhalb des virtuellen Netzwerks und erreichbar über das öffentliche Internet. Enthält den Adressbereich des von Azure besessenen öffentlichen IP-Adressraums. Diese Regel ist mit einer Priorität von65001
festgelegt.DenyAllOutBound
– Wie in der Eingangsregelung ist diese Regel als letzte Regel festgelegt und hat die Priorität65500
. Diese ausgehende Regel verweigert den gesamten nicht explizit erlaubten Datenverkehr.
Azure-NSGs mit PowerShell erstellen
Genug geredet, lassen Sie uns die Hände schmutzig machen und einige Azure NSGs mit PowerShell erstellen! Vorausgesetzt, Sie befinden sich in Ihrer PowerShell-Konsole und sind authentifiziert, lesen Sie weiter.
Verwandt: Connect-AzAccount: Ihr Gateway zu Azure mit PowerShell
Um eine Azure NSG mit PowerShell zu erstellen, benötigen Sie einen Befehl; New-AzNetworkSecurityGroup
. Geben Sie diesem Befehl den Namen, den Namen der Ressourcengruppe, unter der die NSG erstellt werden soll, und den Standort an, um eine NSG mit diesem Befehl zu erstellen.
Das folgende Codebeispiel verwendet das cmdlet New-AzNetworkSecurityGroup
, um eine NSG mit dem Namen NSG-MyVM
in der Ressourcengruppe „Articles“ zu erstellen, die sich im Azure-Rechenzentrum „eastus“ befindet.
Erstellen von Azure NSG-Regeln mit PowerShell
Sobald Sie die NSG haben, reichen die Standardregeln wahrscheinlich nicht aus. Sie müssen Ihre eigenen Regeln erstellen.
Konfigurieren einer eingehenden Regel für das 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.
Um eine neue eingehende Regel zu einer vorhandenen NSG hinzuzufügen, sind drei Schritte erforderlich:
- Führen Sie den Befehl
Get-AzNetworkSecurityGroup
aus, um die vorhandene NSG abzurufen. - Führen Sie den Befehl
Add-AzNetworkSecurityRuleConfig
aus, um die Regel zu erstellen. - Führen Sie den Befehl
Set-AzNetworkSecurityGroup
aus, um diese Regel auf die NSG anzuwenden.
Das folgende Codebeispiel verwendet Get-AzNetworkSecurityGroup
, um eine vorhandene NSG abzurufen. Anschließend wird eine Regel mit Add-AzNetworkSecurityRuleConfig
definiert, die dann mit dem Befehl Set-AzNetworkSecurityGroup
auf die vorhandene NSG angewendet wird.
Der Parameter „Priority“ bestimmt, wann die Regel ausgewertet wird. Der Wert von
200
liegt in der Nähe des Anfangs, da4096
die niedrigste Prioritätsregel ist.
Ausgehenden SANS-Empfehlungsverkehr blockieren
Oft wird der ausgehende Verkehr nicht blockiert, da es herausfordernd sein kann, alle möglichen Ports zu kennen, die eine Anwendung möglicherweise verwenden muss. Glücklicherweise können Sie einige Expertenempfehlungen für den Egress-Filter vom SANS Institute finden, einer weit vertrauenswürdigen Organisation für Informationssicherheitsstandards.
Um die Empfehlungen von SANS umzusetzen, können wir dieselben drei oben genannten Schritte verwenden, aber diesmal eine Regel mit mehreren Ports und mit einer Richtung
von „Ausgehend“ anstelle von „Eingehend“ erstellen.
- MS RPC – TCP & UDP-Port 135
- NetBIOS/IP – TCP & UDP-Ports 137-139
- SMB/IP – TCP-Port 445
- Trivial File Transfer Protocol (TFTP) – UDP-Port 69
- Syslog – UDP-Port 514
- Einfaches Netzwerkverwaltungsprotokoll (SNMP) – UDP-Ports 161-162
Der folgende Code ruft eine vorhandene NSG-Regel mithilfe des Cmdlets Get-AzNetworkSecurityGroup
ab. Eine ausgehende Regel wird mithilfe von Add-AzNetworkSecurityRuleConfig
definiert und mithilfe des Cmdlets Set-AzNetworkSecurityGroup
angewendet.
Natürlich sind einige dieser Ports wertvoll und notwendig, abhängig von den Diensten, die Sie bereitstellen. Wahrscheinlich müssen Sie diese Liste anpassen, je nachdem, was Ihre Anwendung benötigt, die in der Regel vom Anbieter bereitgestellt werden oder mit einem Tool, wie zum Beispiel netstat
, um offene Ports zu finden.
Verwandt: Ports mit Netstat und PowerShell finden
Einrichten einer Azure NSG für ein bestimmtes Subnetz
Vielleicht haben Sie Ihren virtuellen Netzwerkbereich über Subnetze segmentiert. Um genauer zu sein, können Sie NSGs nur auf ein bestimmtes Subnetz anwenden und so den Datenverkehr in diesem Subnetz genau steuern.
Der folgende Codeausschnitt ermittelt einen gesamten Adresspräfix und wendet eine NSG darauf an.
Als nächstes erfahren Sie, wie Sie Netzwerkschnittstellen verwenden können, um NSGs weiter zu segmentieren und auf das Nötigste zu beschränken, z.B. eine Netzwerkschnittstelle.
Anwendung einer Azure NSG auf eine Netzwerkschnittstelle
Ähnlich wie bei Subnetzen können Sie NSG-Regeln direkt auf eine Netzwerkschnittstelle anwenden. Dieses Granularitätsniveau ist normalerweise unnötig, aber wenn Sie mehrere Netzwerkschnittstellen pro virtueller Maschine haben, kann es sinnvoll sein, verschiedene Regelsets auf die einzelnen NICs anzuwenden.
Ähnlich wie bei der Begrenzung des Subnetzes können Sie Regeln auf eine einzelne NIC anwenden. In diesem Fall verwenden Sie das Cmdlet Get-AzNetworkInterface
, um eine bestimmte NIC auf der angegebenen VM abzurufen. Diese wird die zuvor erstellte NSG auf die Eigenschaft NetworkSecurityGroup
gesetzt haben.
Wie sieht es mit der Diagnose und Analyse von Datenverkehr über eine NSG aus? Lesen Sie weiter, um mehr über NSG-Flussprotokolle zu erfahren und wie Sie sie verwenden können!
Debuggen und Fehlerbehebung mit NSG-Flussprotokollen
Im Verlauf der NSG-Erstellung und -Verwendung kann es vorkommen, dass Sie weitere Debugging-Methoden benötigen, um eine fehlerhafte Regel zu beheben oder den Datenverkehr zu analysieren. Flussprotokolle sind eine Funktion des Azure Network Watcher, die Informationen über den IP-Datenverkehr protokolliert, der durch eine NSG geleitet wird.
Wenn der Azure Network Watcher den Netzwerkdatenverkehr erfasst, werden diese Daten in einem Azure Storage Account gespeichert. Mit PowerShell können Sie Azure NSG-Flussprotokolle konfigurieren, um durch diesen Azure Storage Account zu filtern und zu debuggen sowie eine bessere Fehlerbehebung durchzuführen.
Verwandt: So laden Sie das AzCopy-Tool herunter und installieren es
Die Aktivierung von NSG-Flussprotokollen besteht aus drei groben Schritten in PowerShell:
- Registrieren Sie den
Microsoft.Insights
-Anbieter. - Erstellen Sie einen Operational Insights-Arbeitsbereich, um die Daten zu speichern.
- Aktivieren Sie das NSG-Flussprotokoll mit dem Befehl
Set-AzNetworkWatcherConfigFlowLog
.
Um die Konfiguration von Azure NSG Flow Logs zu vereinfachen, wird der folgende PowerShell-Code die verschiedenen erforderlichen Schritte erleichtern. Dieser Code erstellt insbesondere einen Operational Insights-Arbeitsbereich und verknüpft eine Flow-Log-Konfiguration mit der richtigen Abonnement-, Arbeitsbereichs- und NSG-Zuordnung.
Flow-Logs enthalten viele verschiedene Eigenschaften, wie sie in Firewall-Logs üblich sind. Dazu gehören Eigenschaften wie Quell- und Ziel-IP, Ports, Protokolle und Zeitstempel. Version 1 und 2 der Logs unterscheiden sich darin, dass Version 2 das Konzept des Flusszustands enthält. Dies kennzeichnet die Fortsetzung und Beendigung eines Flusses sowie Informationen zum Datenverkehrsdurchsatz.
Nächste Schritte
Azure NSGs sind leistungsstarke Tools zur Begrenzung und Überwachung des Datenverkehrs zu einer Ressource. Bei effektiver Nutzung können Sie Ihre Ressourcen und Infrastruktur ordnungsgemäß sichern. Mit Überwachungsfunktionen durch NSG Flow Logs und der Möglichkeit, NSGs auf Subnetze oder Netzwerkadapter zu beschränken, haben Sie die erforderliche Flexibilität, um Regeln nach Bedarf zu definieren und zu überprüfen, ob der gesamte Datenverkehr wie erwartet verläuft.