Wdrażanie i konfigurowanie usługi Azure Firewall przy użyciu interfejsu wiersza polecenia platformy Azure

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 dostępu do sieciowego ruchu wychodzącego z podsieci platformy Azure jest użycie usługi Azure Firewall. 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. Nazwa FQDN może również obejmować wystąpienia SQL.
  • 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. 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ę.
  • Jump-SN — w tej podsieci znajduje się serwer przesiadkowy. Serwer przesiadkowy ma publiczny adres IP, z którym możesz nawiązać połączenie przy użyciu pulpitu zdalnego. Stamtąd możesz połączyć się (przy użyciu innego pulpitu zdalnego) z serwerem obciążeń.

Diagram infrastruktury sieciowej.

W tym artykule omówiono sposób wykonywania następujących zadań:

  • Konfigurowanie testowego środowiska sieciowego
  • Wdrażanie zapory
  • Tworzenie trasy domyślnej
  • 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 lub programu Azure PowerShell.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Wymagania wstępne

  • Ten artykuł wymaga wersji 2.55.0 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.

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.

az group create --name Test-FW-RG --location eastus

Tworzenie sieci wirtualnej

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.

az network vnet create \
  --name Test-FW-VN \
  --resource-group Test-FW-RG \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name AzureFirewallSubnet \
  --subnet-prefix 10.0.1.0/26
az network vnet subnet create \
  --name Workload-SN \
  --resource-group Test-FW-RG \
  --vnet-name Test-FW-VN   \
  --address-prefix 10.0.2.0/24
az network vnet subnet create \
  --name Jump-SN \
  --resource-group Test-FW-RG \
  --vnet-name Test-FW-VN   \
  --address-prefix 10.0.3.0/24

Tworzenie maszyn wirtualnych

Teraz utwórz maszyny wirtualne przesiadkową i obciążeń, a następnie umieść je w odpowiednich podsieciach. Po wyświetleniu monitu wpisz hasło dla maszyny wirtualnej.

Utwórz maszynę wirtualną Srv-Jump.

az vm create \
    --resource-group Test-FW-RG \
    --name Srv-Jump \
    --location eastus \
    --image win2016datacenter \
    --vnet-name Test-FW-VN \
    --subnet Jump-SN \
    --admin-username azureadmin
az vm open-port --port 3389 --resource-group Test-FW-RG --name Srv-Jump

Utwórz kartę sieciową dla serwera Srv-Work z określonymi adresami IP serwera DNS i bez publicznego adresu IP do przetestowania.

az network nic create \
    -g Test-FW-RG \
    -n Srv-Work-NIC \
   --vnet-name Test-FW-VN \
   --subnet Workload-SN \
   --public-ip-address "" \
   --dns-servers 209.244.0.3 209.244.0.4

Teraz utwórz maszynę wirtualną obciążenia. Po wyświetleniu monitu wpisz hasło dla maszyny wirtualnej.

az vm create \
    --resource-group Test-FW-RG \
    --name Srv-Work \
    --location eastus \
    --image win2016datacenter \
    --nics Srv-Work-NIC \
    --admin-username azureadmin

Uwaga

Platforma Azure udostępnia domyślny adres IP dostępu wychodzącego dla maszyn wirtualnych, które nie są przypisane do publicznego adresu IP lub znajdują się w puli zaplecza wewnętrznego podstawowego modułu równoważenia obciążenia platformy Azure. Domyślny mechanizm adresów IP dostępu wychodzącego zapewnia wychodzący adres IP, który nie jest konfigurowalny.

Domyślny adres IP dostępu wychodzącego jest wyłączony, gdy wystąpi jedno z następujących zdarzeń:

  • Publiczny adres IP jest przypisywany do maszyny wirtualnej.
  • Maszyna wirtualna jest umieszczana w puli zaplecza standardowego modułu równoważenia obciążenia z regułami ruchu wychodzącego lub bez tych reguł.
  • Zasób usługi Azure NAT Gateway jest przypisywany do podsieci maszyny wirtualnej.

Maszyny wirtualne tworzone przy użyciu zestawów skalowania maszyn wirtualnych w trybie elastycznej aranżacji nie mają domyślnego dostępu wychodzącego.

Aby uzyskać więcej informacji na temat połączeń wychodzących na platformie Azure, zobacz Domyślny dostęp wychodzący na platformie Azure i Używanie źródłowego tłumaczenia adresów sieciowych (SNAT) dla połączeń wychodzących.

Wdrażanie zapory

Teraz wdróż zaporę w sieci wirtualnej.

az network firewall create \
    --name Test-FW01 \
    --resource-group Test-FW-RG \
    --location eastus
az network public-ip create \
    --name fw-pip \
    --resource-group Test-FW-RG \
    --location eastus \
    --allocation-method static \
    --sku standard
az network firewall ip-config create \
    --firewall-name Test-FW01 \
    --name FW-config \
    --public-ip-address fw-pip \
    --resource-group Test-FW-RG \
    --vnet-name Test-FW-VN
az network firewall update \
    --name Test-FW01 \
    --resource-group Test-FW-RG 
az network public-ip show \
    --name fw-pip \
    --resource-group Test-FW-RG
fwprivaddr="$(az network firewall ip-config list -g Test-FW-RG -f Test-FW01 --query "[?name=='FW-config'].privateIpAddress" --output tsv)"

Zanotuj prywatny adres IP. Użyjesz go później podczas tworzenia trasy domyślnej.

Tworzenie trasy domyślnej

Tworzenie tabeli tras z wyłączoną propagacją trasy protokołu BGP

az network route-table create \
    --name Firewall-rt-table \
    --resource-group Test-FW-RG \
    --location eastus \
    --disable-bgp-route-propagation true

Utwórz trasę.

az network route-table route create \
  --resource-group Test-FW-RG \
  --name DG-Route \
  --route-table-name Firewall-rt-table \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address $fwprivaddr

Kojarzenie tabeli tras z podsiecią

az network vnet subnet update \
    -n Workload-SN \
    -g Test-FW-RG \
    --vnet-name Test-FW-VN \
    --address-prefixes 10.0.2.0/24 \
    --route-table Firewall-rt-table

Konfigurowanie reguły aplikacji

Reguła aplikacji zezwala na dostęp wychodzący do www.google.com.

az network firewall application-rule create \
   --collection-name App-Coll01 \
   --firewall-name Test-FW01 \
   --name Allow-Google \
   --protocols Http=80 Https=443 \
   --resource-group Test-FW-RG \
   --target-fqdns www.google.com \
   --source-addresses 10.0.2.0/24 \
   --priority 200 \
   --action Allow

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 sieci

Reguła sieci zezwala na dostęp wychodzący do dwóch adresów IP na porcie 53 (DNS).

az network firewall network-rule create \
   --collection-name Net-Coll01 \
   --destination-addresses 209.244.0.3 209.244.0.4 \
   --destination-ports 53 \
   --firewall-name Test-FW01 \
   --name Allow-DNS \
   --protocols UDP \
   --resource-group Test-FW-RG \
   --priority 200 \
   --source-addresses 10.0.2.0/24 \
   --action Allow

Testowanie zapory

Teraz przetestuj zaporę, aby potwierdzić, że działa zgodnie z oczekiwaniami.

  1. Zanotuj prywatny adres IP maszyny wirtualnej Srv-Work :

    az vm list-ip-addresses \
    -g Test-FW-RG \
    -n Srv-Work
    
  2. Połączenie pulpitu zdalnego do Maszyna wirtualna Srv-Jump i zaloguj się. W tym miejscu otwórz połączenie pulpitu zdalnego z prywatnym adresem IP Srv-Work i zaloguj się.

  3. 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ę.

  4. 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ę niepowodzeniem www.microsoft.com . Pokazuje to, że reguły zapory działają zgodnie z oczekiwaniami.

Teraz sprawdziliśmy, czy reguły 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 następnego samouczka lub jeśli nie są już potrzebne, usuń grupę zasobów Test-FW-RG , aby usunąć wszystkie zasoby związane z zaporą:

az group delete \
  -n Test-FW-RG

Następne kroki