Bereitstellen und Konfigurieren von Azure Firewall-Richtlinien mithilfe von Azure PowerShell
Die Steuerung des ausgehenden Netzwerkzugriffs ist ein wichtiger Teil eines umfassenden Netzwerksicherheitsplans. Vielleicht möchten Sie beispielsweise den Zugriff auf Websites einschränken. Mitunter kann es auch empfehlenswert sein, die verfügbaren Ports einzuschränken.
Eine Möglichkeit zur Steuerung des ausgehenden Netzwerkzugriffs aus einem Azure-Subnetz ist Azure Firewall und eine Firewallrichtlinie. Mit Azure Firewall können Sie Folgendes konfigurieren:
- Anwendungsregeln, die vollqualifizierte Domänennamen (Fully Qualified Domain Names, FQDNs) definieren, auf die von einem Subnetz aus zugegriffen werden kann.
- Netzwerkregeln, die die Quelladresse, das Protokoll, den Zielport und die Zieladresse definieren.
Die konfigurierten Firewallregeln werden auf den Netzwerkdatenverkehr angewendet, wenn Sie Ihren Netzwerkdatenverkehr an die Firewall als Subnetz-Standardgateway weiterleiten.
In diesem Artikel erstellen Sie der Einfachheit halber ein einzelnes vereinfachtes VNET mit drei Subnetzen. Für Produktionsbereitstellungen wird ein Hub-Spoke-Modell empfohlen, bei dem sich die Firewall in einem eigenen VNET befindet. Die Workloadserver befinden sich in per Peering verknüpften VNETs in derselben Region mit einem oder mehreren Subnetzen.
- AzureFirewallSubnet: Das Subnetz mit der Firewall.
- Workload-SN: Das Subnetz mit dem Workloadserver. Der Netzwerkdatenverkehr dieses Subnetzes durchläuft die Firewall.
- AzureBastionSubnet: Das für Azure Bastion verwendete Subnetz. Wird für die Verbindungsherstellung mit dem Workloadserver verwendet.
Weitere Informationen zu Azure Bastion finden Sie unter Was ist Azure Bastion?.
Wichtig
Die Stundenpreise gelten ab dem Zeitpunkt der Bereitstellung von Bastion, unabhängig von der Nutzung ausgehender Daten. Weitere Informationen dazu finden Sie unter Preise und SKUs. Wenn Sie Bastion im Rahmen eines Tutorials oder Tests bereitstellen, empfiehlt es sich, diese Ressource zu löschen, sobald Sie sie nicht mehr benötigen.
In diesem Artikel werden folgende Vorgehensweisen behandelt:
- Einrichten einer Netzwerkumgebung zu Testzwecken
- Bereitstellen einer Firewall
- Erstellen einer Standardroute
- Erstellen einer Firewallrichtlinie
- Konfigurieren einer Anwendungsregel zum Zulassen des Zugriffs auf www.google.com
- Konfigurieren einer Netzwerkregel, um den Zugriff auf externe DNS-Server zuzulassen
- Testen der Firewall
Sie können dieses Verfahren auch im Azure-Portal durchführen, wenn Sie das vorziehen.
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Voraussetzungen
Für dieses Verfahren müssen Sie PowerShell lokal ausführen. Das Azure PowerShell-Modul muss installiert sein. Führen Sie Get-Module -ListAvailable Az
aus, um die Version zu ermitteln. Wenn Sie ein Upgrade ausführen müssen, finden Sie unter Installieren des Azure PowerShell-Moduls Informationen dazu. Führen Sie nach dem Überprüfen der PowerShell-Version Connect-AzAccount
aus, um eine Verbindung mit Azure zu erstellen.
Einrichten des Netzwerks
Erstellen Sie zunächst eine Ressourcengruppe für die Ressourcen, die zum Bereitstellen der Firewall benötigt werden. Erstellen Sie dann ein VNet, Subnetze und Testserver.
Erstellen einer Ressourcengruppe
Die Ressourcengruppe enthält alle Ressourcen für die Bereitstellung.
New-AzResourceGroup -Name Test-FW-RG -Location "East US"
Erstellen eines virtuellen Netzwerks und eines Azure Bastion-Hosts
Dieses virtuelle Netzwerk umfasst drei Subnetze:
Hinweis
Die Größe des Subnetzes AzureFirewallSubnet beträgt /26. Weitere Informationen zur Subnetzgröße finden Sie unter Azure Firewall – Häufig gestellte Fragen.
$Bastionsub = New-AzVirtualNetworkSubnetConfig -Name AzureBastionSubnet -AddressPrefix 10.0.0.0/27
$FWsub = New-AzVirtualNetworkSubnetConfig -Name AzureFirewallSubnet -AddressPrefix 10.0.1.0/26
$Worksub = New-AzVirtualNetworkSubnetConfig -Name Workload-SN -AddressPrefix 10.0.2.0/24
Erstellen Sie jetzt das virtuelle Netzwerk:
$testVnet = New-AzVirtualNetwork -Name Test-FW-VN -ResourceGroupName Test-FW-RG `
-Location "East US" -AddressPrefix 10.0.0.0/16 -Subnet $Bastionsub, $FWsub, $Worksub
Erstellen einer öffentlichen IP-Adresse für Azure Bastion-Host
$publicip = New-AzPublicIpAddress -ResourceGroupName Test-FW-RG -Location "East US" `
-Name Bastion-pip -AllocationMethod static -Sku standard
Erstellen des Azure Bastion-Hosts
New-AzBastion -ResourceGroupName Test-FW-RG -Name Bastion-01 -PublicIpAddress $publicip -VirtualNetwork $testVnet
Erstellen eines virtuellen Computers
Erstellen Sie nun den virtuellen Workloadcomputer, und platzieren Sie ihn im passenden Subnetz. Geben Sie bei entsprechender Aufforderung einen Benutzernamen und das Kennwort für den virtuellen Computer ein.
Erstellen Sie einen virtuellen Workloadcomputer. Geben Sie bei entsprechender Aufforderung einen Benutzernamen und das Kennwort für den virtuellen Computer ein.
#Create the NIC
$wsn = Get-AzVirtualNetworkSubnetConfig -Name Workload-SN -VirtualNetwork $testvnet
$NIC01 = New-AzNetworkInterface -Name Srv-Work -ResourceGroupName Test-FW-RG -Location "East us" -Subnet $wsn
#Define the virtual machine
$VirtualMachine = New-AzVMConfig -VMName Srv-Work -VMSize "Standard_DS2"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName Srv-Work -ProvisionVMAgent -EnableAutoUpdate
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC01.Id
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName 'MicrosoftWindowsServer' -Offer 'WindowsServer' -Skus '2019-Datacenter' -Version latest
#Create the virtual machine
New-AzVM -ResourceGroupName Test-FW-RG -Location "East US" -VM $VirtualMachine -Verbose
Erstellen einer Firewallrichtlinie
$fwpol = New-AzFirewallPolicy -Name fw-pol -ResourceGroupName Test-FW-RG -Location eastus
Konfigurieren einer Anwendungsregel für Firewallrichtlinien
Die Anwendungsregel lässt ausgehenden Zugriff auf www.google.com
zu.
$RCGroup = New-AzFirewallPolicyRuleCollectionGroup -Name AppRCGroup -Priority 100 -FirewallPolicyObject $fwpol
$apprule1 = New-AzFirewallPolicyApplicationRule -Name Allow-google -SourceAddress "10.0.2.0/24" -Protocol "http:80","https:443" -TargetFqdn www.google.com
$appcoll1 = New-AzFirewallPolicyFilterRuleCollection -Name App-coll01 -Priority 100 -Rule $appRule1 -ActionType "Allow"
Set-AzFirewallPolicyRuleCollectionGroup -Name $RCGroup.Name -Priority 100 -RuleCollection $appcoll1 -FirewallPolicyObject $fwPol
Azure Firewall enthält eine integrierte Regelsammlung für Infrastruktur-FQDNs, die standardmäßig zulässig sind. Diese FQDNs sind plattformspezifisch und können nicht für andere Zwecke verwendet werden. Weitere Informationen finden Sie unter Infrastruktur-FQDNs.
Konfigurieren einer Netzwerkregel für eine Firewallrichtlinie
Die Netzwerkregel lässt ausgehenden Zugriff auf zwei IP-Adressen am Port 53 (DNS) zu.
$RCGroup = New-AzFirewallPolicyRuleCollectionGroup -Name NetRCGroup -Priority 200 -FirewallPolicyObject $fwpol
$netrule1 = New-AzFirewallPolicyNetworkRule -name Allow-DNS -protocol UDP -sourceaddress 10.0.2.0/24 -destinationaddress 209.244.0.3,209.244.0.4 -destinationport 53
$netcoll1 = New-AzFirewallPolicyFilterRuleCollection -Name Net-coll01 -Priority 200 -Rule $netrule1 -ActionType "Allow"
Set-AzFirewallPolicyRuleCollectionGroup -Name $RCGroup.Name -Priority 200 -RuleCollection $netcoll1 -FirewallPolicyObject $fwPol
Bereitstellen der Firewall
Stellen Sie nun die Firewall im virtuellen Netzwerk bereit.
# Get a Public IP for the firewall
$FWpip = New-AzPublicIpAddress -Name "fw-pip" -ResourceGroupName Test-FW-RG `
-Location "East US" -AllocationMethod Static -Sku Standard
# Create the firewall
$Azfw = New-AzFirewall -Name Test-FW01 -ResourceGroupName Test-FW-RG -Location "East US" -VirtualNetwork $testVnet -PublicIpAddress $FWpip -FirewallPolicyId $fwpol.Id
#Save the firewall private IP address for future use
$AzfwPrivateIP = $Azfw.IpConfigurations.privateipaddress
$AzfwPrivateIP
Notieren Sie sich die private IP-Adresse. Diese wird später für die Erstellung der Standardroute benötigt.
Erstellen einer Standardroute
Erstellen einer Tabelle mit deaktivierter BGP-Routenverteilung
$routeTableDG = New-AzRouteTable `
-Name Firewall-rt-table `
-ResourceGroupName Test-FW-RG `
-location "East US" `
-DisableBgpRoutePropagation
#Create a route
Add-AzRouteConfig `
-Name "DG-Route" `
-RouteTable $routeTableDG `
-AddressPrefix 0.0.0.0/0 `
-NextHopType "VirtualAppliance" `
-NextHopIpAddress $AzfwPrivateIP `
| Set-AzRouteTable
#Associate the route table to the subnet
Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $testVnet `
-Name Workload-SN `
-AddressPrefix 10.0.2.0/24 `
-RouteTable $routeTableDG | Set-AzVirtualNetwork
Ändern der primären und sekundären DNS-Adresse für die Netzwerkschnittstelle Srv-Work
In diesem Verfahren konfigurieren Sie zu Testzwecken die primäre und sekundäre DNS-Adresse des Servers. Hierbei handelt es sich nicht um eine generelle Azure Firewall-Anforderung.
$NIC01.DnsSettings.DnsServers.Add("209.244.0.3")
$NIC01.DnsSettings.DnsServers.Add("209.244.0.4")
$NIC01 | Set-AzNetworkInterface
Testen der Firewall
Testen Sie nun die Firewall, um sicherzustellen, dass sie wie erwartet funktioniert.
Stellen Sie unter Verwendung von Bastion eine Verbindung mit dem virtuellen Computer Srv-Work her, und melden Sie sich an.
Öffnen Sie auf Srv-Work ein PowerShell-Fenster, und führen Sie die folgenden Befehle aus:
nslookup www.google.com nslookup www.microsoft.com
Für beide Befehle sollten Antworten zurückgegeben werden, was zeigt, dass Ihre DNS-Abfragen die Firewall durchqueren.
Führen Sie die folgenden Befehle aus:
Invoke-WebRequest -Uri https://www.google.com Invoke-WebRequest -Uri https://www.google.com Invoke-WebRequest -Uri https://www.microsoft.com Invoke-WebRequest -Uri https://www.microsoft.com
Die
www.google.com
-Anforderungen sollten erfolgreich sein, und diewww.microsoft.com
-Anforderungen sollten fehlschlagen. Dies zeigt, dass Ihre Firewall-Regeln wie erwartet funktionieren.
Damit haben Sie sich vergewissert, dass die Regeln der Firewallrichtlinie funktionieren:
- Sie können DNS-Namen mithilfe des konfigurierten externen DNS-Servers auflösen.
- Sie können zum einzigen zulässigen FQDN navigieren, aber nicht zu anderen.
Bereinigen von Ressourcen
Sie können die Firewallressourcen für weitere Tests behalten oder die Ressourcengruppe Test-FW-RG löschen, wenn Sie sie nicht mehr benötigen. Dadurch werden alle firewallbezogenen Ressourcen gelöscht:
Remove-AzResourceGroup -Name Test-FW-RG