Wdrażanie i konfigurowanie zasad usługi Azure Firewall przy użyciu programu Azure PowerShell
Kontrolowanie dostępu do sieciowego ruchu wychodzącego jest ważną częścią ogólnego planu zabezpieczeń sieci. Na przykład możesz ograniczyć dostęp do witryn internetowych. Możesz też ograniczyć wychodzące adresy IP i porty, do których można uzyskać dostęp.
Jednym ze sposobów kontrolowania wychodzącego dostępu do sieci z podsieci platformy Azure jest użycie usługi Azure Firewall i zasad zapory. Za pomocą usługi Azure Firewall można skonfigurować następujące reguły:
- Reguły aplikacji, które definiują w pełni kwalifikowane nazwy domen (FQDN), do których można uzyskać dostęp z podsieci.
- Reguły sieci, które definiują adres źródłowy, protokół, port docelowy i adres docelowy.
Ruch sieciowy podlega skonfigurowanym regułom zapory podczas kierowania ruchu sieciowego do zapory jako bramy domyślnej podsieci.
W tym artykule utworzysz uproszczoną pojedynczą sieć wirtualną z trzema podsieciami w celu łatwego wdrożenia. W przypadku wdrożeń produkcyjnych zalecany jest model piasty i szprych, w którym zapora znajduje się we własnej sieci wirtualnej. Serwery obciążeń znajdują się w równorzędnych sieciach wirtualnych w tym samym regionie z co najmniej jedną podsiecią.
- AzureFirewallSubnet — w tej podsieci znajduje się zapora.
- Workload-SN — w tej podsieci znajduje się serwer obciążeń. Ruch sieciowy tej podsieci przechodzi przez zaporę.
- AzureBastionSubnet — podsieć używana dla usługi Azure Bastion, która służy do nawiązywania połączenia z serwerem obciążenia.
Aby uzyskać więcej informacji na temat usługi Azure Bastion, zobacz Co to jest usługa Azure Bastion?
Ważne
Ceny godzinowe zaczynają się od momentu wdrożenia usługi Bastion, niezależnie od użycia danych wychodzących. Aby uzyskać więcej informacji, zobacz Cennik i jednostki SKU. Jeśli wdrażasz usługę Bastion w ramach samouczka lub testu, zalecamy usunięcie tego zasobu po zakończeniu korzystania z niego.
W tym artykule omówiono sposób wykonywania następujących zadań:
- Konfigurowanie testowego środowiska sieciowego
- Wdrażanie zapory
- Tworzenie trasy domyślnej
- Tworzenie zasad zapory
- Konfigurowanie reguły aplikacji w celu zezwolenia na dostęp do www.google.com
- Konfigurowanie reguły sieci w celu umożliwienia dostępu do zewnętrznych serwerów DNS
- Testowanie zapory
Jeśli wolisz, możesz wykonać tę procedurę przy użyciu witryny Azure Portal.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wymagania wstępne
Ta procedura wymaga lokalnego uruchomienia programu PowerShell. Musisz mieć zainstalowany moduł Azure PowerShell. Uruchom polecenie Get-Module -ListAvailable Az
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczne będzie uaktualnienie, zobacz Instalowanie modułu Azure PowerShell. Po zweryfikowaniu wersji programu PowerShell uruchom polecenie Connect-AzAccount
, aby utworzyć połączenie z platformą Azure.
Konfigurowanie sieci
Najpierw utwórz grupę zasobów zawierającą zasoby wymagane do wdrożenia zapory. Następnie utwórz sieć wirtualną, podsieci i serwery do obsługi testowania.
Tworzenie grupy zasobów
Grupa zasobów zawiera wszystkie zasoby dla wdrożenia.
New-AzResourceGroup -Name Test-FW-RG -Location "East US"
Tworzenie sieci wirtualnej i hosta usługi Azure Bastion
Ta sieć wirtualna ma trzy podsieci:
Uwaga
Rozmiar podsieci AzureFirewallSubnet to /26. Aby uzyskać więcej informacji na temat rozmiaru podsieci, zobacz Często zadawane pytania dotyczące usługi Azure Firewall.
$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
Teraz utwórz sieć wirtualną:
$testVnet = New-AzVirtualNetwork -Name Test-FW-VN -ResourceGroupName Test-FW-RG `
-Location "East US" -AddressPrefix 10.0.0.0/16 -Subnet $Bastionsub, $FWsub, $Worksub
Tworzenie publicznego adresu IP dla hosta usługi Azure Bastion
$publicip = New-AzPublicIpAddress -ResourceGroupName Test-FW-RG -Location "East US" `
-Name Bastion-pip -AllocationMethod static -Sku standard
Tworzenie hosta usługi Azure Bastion
New-AzBastion -ResourceGroupName Test-FW-RG -Name Bastion-01 -PublicIpAddress $publicip -VirtualNetwork $testVnet
Tworzenie maszyny wirtualnej
Teraz utwórz maszynę wirtualną obciążenia i umieść ją w odpowiedniej podsieci. Po wyświetleniu monitu wpisz nazwę użytkownika i hasło maszyny wirtualnej.
Utwórz maszynę wirtualną obciążenia. Po wyświetleniu monitu wpisz nazwę użytkownika i hasło maszyny wirtualnej.
#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
Tworzenie zasad zapory
$fwpol = New-AzFirewallPolicy -Name fw-pol -ResourceGroupName Test-FW-RG -Location eastus
Konfigurowanie reguły aplikacji zasad zapory
Reguła aplikacji zezwala na dostęp wychodzący do usługi 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
Usługa Azure Firewall zawiera wbudowaną kolekcję reguł dla nazw FQDN infrastruktury, które domyślnie są dozwolone. Te nazwy FQDN są specyficzne dla platformy i nie można ich używać do innych celów. Aby uzyskać więcej informacji, zobacz Infrastrukturalne nazwy FQDN.
Konfigurowanie reguły sieciowej zasad zapory
Reguła sieci zezwala na dostęp wychodzący do dwóch adresów IP na porcie 53 (DNS).
$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
Wdrażanie zapory
Teraz wdróż zaporę w sieci wirtualnej.
# 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
Zanotuj prywatny adres IP. Użyjesz go później podczas tworzenia trasy domyślnej.
Tworzenie trasy domyślnej
Tworzenie tabeli z wyłączoną propagacją tras protokołu BGP
$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
Zmienianie podstawowego i pomocniczego adresu DNS dla interfejsu sieciowego Srv-Work
Na potrzeby testowania w tej procedurze skonfiguruj podstawowe i pomocnicze adresy DNS serwera. Nie jest to ogólne wymaganie usługi Azure Firewall.
$NIC01.DnsSettings.DnsServers.Add("209.244.0.3")
$NIC01.DnsSettings.DnsServers.Add("209.244.0.4")
$NIC01 | Set-AzNetworkInterface
Testowanie zapory
Teraz przetestuj zaporę, aby potwierdzić, że działa zgodnie z oczekiwaniami.
Połącz się z maszyną wirtualną Srv-Work przy użyciu usługi Bastion i zaloguj się.
W programie Srv-Work otwórz okno programu PowerShell i uruchom następujące polecenia:
nslookup www.google.com nslookup www.microsoft.com
Oba polecenia powinny zwracać odpowiedzi, pokazując, że zapytania DNS przechodzą przez zaporę.
Uruchom następujące polecenia:
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
Żądania powinny zakończyć się powodzeniem
www.google.com
, a żądania powinny zakończyć się niepowodzeniemwww.microsoft.com
. Pokazuje to, że reguły zapory działają zgodnie z oczekiwaniami.
Teraz sprawdziliśmy, czy reguły zasad zapory działają:
- Możesz rozpoznać nazwy DNS przy użyciu skonfigurowanego zewnętrznego serwera DNS.
- Możesz przejść do jednej z dozwolonych nazw FQDN, ale nie do innych.
Czyszczenie zasobów
Możesz zachować zasoby zapory na potrzeby dalszego testowania lub, jeśli nie są już potrzebne, usuń grupę zasobów Test-FW-RG , aby usunąć wszystkie zasoby związane z zaporą:
Remove-AzResourceGroup -Name Test-FW-RG