Freigeben über


Bereitstellen und Konfigurieren der Azure Firewall-Richtlinie mithilfe von Azure PowerShell

Die Steuerung des ausgehenden Netzwerkzugriffs ist ein wichtiger Teil eines umfassenden Netzwerksicherheitsplans. Beispielsweise möchten Sie den Zugriff auf Websites einschränken. Mitunter kann es auch empfehlenswert sein, die verfügbaren Ports einzuschränken.

Sie können den ausgehenden Netzwerkzugriff über ein Azure-Subnetz mithilfe der Azure-Firewall- und Firewallrichtlinie steuern. Mithilfe der 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 ein vereinfachtes einzelnes virtuelles Netzwerk mit drei Subnetzen für die einfache Bereitstellung. Verwenden Sie für Produktionsbereitstellungen ein Hub- und Speichenmodell, in dem sich die Firewall in einem eigenen virtuellen Netzwerk befindet. Die Workloadserver befinden sich in per Peering verknüpften virtuellen Netzwerken in derselben Region mit einem oder mehreren Subnetzen.

  • AzureFirewallSubnet - die Firewall befindet sich in diesem Subnetz.
  • Workload-SN: Die Workload-Server befindet sich in diesem Subnetz. 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.

Diagramm, das eine Firewallnetzwerkinfrastruktur zeigt.

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 Sie die Firewall

Wenn Es Ihnen lieber ist, können Sie dieses Verfahren über das Azure-Portal ausführen.

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 virtuelles Netzwerk, Subnetze und Testserver.

Erstellen einer Ressourcengruppe

Verwenden Sie New-AzResourceGroup , um eine Ressourcengruppe für die Bereitstellung zu erstellen:

New-AzResourceGroup -Name Test-FW-RG -Location "East US"

Erstellen eines virtuellen Netzwerks und eines Azure Bastion-Hosts

Dieses virtuelle Netzwerk umfasst drei Subnetze. Verwenden Sie New-AzVirtualNetworkSubnetConfig , um sie zu definieren:

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

Verwenden Sie New-AzVirtualNetwork , um das virtuelle Netzwerk zu erstellen:

$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

Verwenden Sie New-AzPublicIpAddress , um eine statische öffentliche IP-Adresse für den Bastion-Host zu erstellen:

$publicip = New-AzPublicIpAddress `
    -ResourceGroupName Test-FW-RG `
    -Location "East US" `
    -Name Bastion-pip `
    -AllocationMethod Static `
    -Sku Standard

Erstellen des Azure Bastion-Hosts

Verwenden Sie New-AzBastion , um den Bastion-Host zu erstellen:

New-AzBastion `
    -ResourceGroupName Test-FW-RG `
    -Name Bastion-01 `
    -PublicIpAddress $publicip `
    -VirtualNetwork $testVnet

Erstellen eines virtuellen Computers

Verwenden Sie New-AzVM , um den virtuellen Workloadcomputer zu erstellen. Wenn Sie dazu aufgefordert werden, geben Sie einen Benutzernamen und ein Kennwort 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

Verwenden Sie New-AzFirewallPolicy , um die Firewallrichtlinie zu erstellen:

$fwpol = New-AzFirewallPolicy `
    -Name fw-pol `
    -ResourceGroupName Test-FW-RG `
    -Location "East US"

Konfigurieren einer Anwendungsregel für Firewallrichtlinien

Verwenden Sie New-AzFirewallPolicyApplicationRule und New-AzFirewallPolicyFilterRuleCollection, um eine Anwendungsregel zu erstellen, die ausgehenden Zugriff gewährt:www.google.com

$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 spezifisch für die Plattform und können nicht für andere Zwecke verwendet werden. Weitere Informationen finden Sie unter Infrastruktur-FQDNs.

Konfigurieren einer Firewall-Netzwerkregel

Verwenden Sie New-AzFirewallPolicyNetworkRule und New-AzFirewallPolicyFilterRuleCollection , um eine Netzwerkregel zu erstellen, die ausgehenden Zugriff auf zwei IP-Adressen an Port 53 (DNS) gewährt:

$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

Verwenden Sie New-AzPublicIpAddress und New-AzFirewall , um die Firewall im virtuellen Netzwerk bereitzustellen:

# 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

Verwenden Sie New-AzRouteTable und Add-AzRouteConfig , um eine Routentabelle mit einer Standardroute zu erstellen, die auf die Firewall verweist, und ordnen Sie sie dem Workload-Subnetz zu:

$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. Diese Konfiguration ist keine allgemeine Azure Firewall-Anforderung.

$NIC01.DnsSettings.DnsServers.Add("209.244.0.3")
$NIC01.DnsSettings.DnsServers.Add("209.244.0.4")
$NIC01 | Set-AzNetworkInterface

Testen Sie die Firewall

Testen Sie nun die Firewall, um sicherzustellen, dass sie wie erwartet funktioniert.

  1. Stellen Sie mithilfe von Bastion eine Verbindung mit dem virtuellen Computer "Srv-Work " her, und melden Sie sich an.

    Screenshot der Verbindung zu dem virtuellen Computer Srv-Work mit Azure Bastion.

  2. Öffnen Sie auf Srv-Work ein PowerShell-Fenster, und führen Sie die folgenden Befehle aus:

    nslookup www.google.com
    nslookup www.microsoft.com
    

    Beide Befehle geben Antworten zurück, die zeigen, dass Ihre DNS-Abfragen die Firewall durchlaufen.

  3. Führen Sie die folgenden Befehle aus:

    Invoke-WebRequest -Uri https://www.google.com
    
    Invoke-WebRequest -Uri https://www.microsoft.com
    

    Die www.google.com Anforderungen sind erfolgreich, und die www.microsoft.com Anforderungen schlagen fehl. Dieses Ergebnis zeigt, dass Ihre Firewallregeln erwartungsgemäß funktionieren.

Nun haben Sie überprüft, ob die Firewallrichtlinienregeln funktionieren:

  • Sie können DNS-Namen mithilfe des konfigurierten externen DNS-Servers auflösen.
  • Sie können zu dem einzigen zulässigen FQDN navigieren, aber nicht zu anderen FQDNs.

Bereinigen von Ressourcen

Sie können Ihre Firewallressourcen für weitere Tests beibehalten. Wenn Sie sie nicht mehr benötigen, löschen Sie die Ressourcengruppe "Test-FW-RG ", um alle firewallbezogenen Ressourcen zu löschen:

Remove-AzResourceGroup -Name Test-FW-RG

Nächste Schritte