Azure Network Security Group

Standard

Wer kennt das nicht? Die Azure Umgebung wächst. Es sind bereits eine Menge Server in Azure platziert. Die Anzahl an Subnetzen und Hosts wächst. Und irgendwann kommt jemand auf die Idee Netzwerk-Sicherheit auch im Azure Rechenzentrum umzusetzen. Soll ja vorkommen, dass sich auch die Fraktion IT-Security irgendwann mal mit Azure auseinandersetzt. 😉 Da bieten sich Azure Network Security Group an.

Wer nun einen Haufen Subnetzen erstellt hat und nachträglich alles mit Network Security Groups absichern möchte, kann hier weiterlesen.

Einleitung Network Security Group

Network Security Group (NSG) ist ein Firewall-Regelwerk im Azure Software Defined Network (SDN). Es ist sozusagen die übergeordnete Firewall, die jede Ressource in Azure absichern kann. Was kann abgesichert werden? Zugriffe auf IP-Ebene, die die folgenden Attribute haben.

  • Source-Port-Range, Destination-Port-Range
  • Protocol
  • Source Adress-Prefix, Destination Adress-Prefix
  • Direction
  • Priority
  • Access (allow, deny)

Das Besondere an den Standard-Regel in Azure ist, dass innerhalb der Azure VNETs zunächst alles zugelassen ist. Das ist suboptimal.

PowerShell Ablauf

Nun nutze ich das folgende PowerShell Script, um allen Subnetzen eine Network Security Group (Verbiete alles) anzuhängen.

  1. Login ins Azure Management API
  2. Ggf. prüfen, ob die richtige Subscription ausgewählt ist
  3. Aufbau eines Arrays, welche die Subnetzte enthält
  4. Dann in einer Schleife
    1. Neue Regel anlegen, welche alles verbietet
    2. Neue NSG anlegen
    3. Regel an NSG anhängen
    4. VNET-Objekt anpassen
    5. VNET Objekt an Azure übergeben

PowerShell Code-Snipsel

Login-AzureRmAccount
$rg = "Deine Ressource Group"
$location = "Deine Location"
$vnet = "Der Name des VNETs"
$subnetze = @("ArrayInhalt-Subnetz1","ArrayInhalt-Subnetz2")
foreach ($subnetz in $subnetze) {
    $nsgname = "NSG-SNET-" + $subnetz
    $rule1 = New-AzureRmNetworkSecurityRuleConfig -Name "deny-all" -Description "Deny All" -Access Deny -Protocol * -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange *
    $nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rg -Location $location -Name $nsgname -SecurityRules $rule1
    $vnet = Get-AzureRmVirtualNetwork -ResourceGroupName $rg -Name $vnetname
    $subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name $subnetz -VirtualNetwork $vnet
    Set-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name $subnetz -NetworkSecurityGroup $nsg -AddressPrefix $subnet.AddressPrefix
    Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
}

Viel Spaß beim Nachbauen.