Menyebarkan dan mengonfigurasi Azure Firewall menggunakan Azure CLI

Mengontrol akses jaringan keluar adalah bagian penting dari rencana keamanan jaringan secara keseluruhan. Misalnya, Anda mungkin ingin membatasi akses ke situs web. Atau, Anda mungkin ingin membatasi alamat IP keluar dan port yang dapat diakses.

Salah satu cara Anda dapat mengontrol akses jaringan keluar dari subnet Azure adalah dengan Azure Firewall. Dengan Azure Firewall, Anda dapat mengonfigurasi:

  • Aturan aplikasi yang mendefinisikan nama domain yang sepenuhnya memenuhi syarat (FQDN), yang dapat diakses dari subnet. FQDN juga dapat mencakup instans SQL.
  • Aturan jaringan yang menentukan alamat sumber, protokol, port tujuan, dan alamat tujuan.

Lalu lintas jaringan tunduk pada aturan firewall yang dikonfigurasi saat Anda merutekan lalu lintas jaringan Anda ke firewall sebagai gateway default subnet.

Untuk artikel ini, Anda membuat VNet tunggal yang disederhanakan dengan tiga subnet untuk penyebaran yang mudah. Untuk penyebaran produksi, model hub dan spoke disarankan. Firewall berada di VNet sendiri. Server beban kerja berada di VNet yang direkankan dengan satu atau beberapa subnet di wilayah yang sama.

  • AzureFirewallSubnet - firewall ada di subnet ini.
  • Workload-SN - server beban kerja ada di subnet ini. Lalu lintas jaringan subnet ini melewati firewall.
  • AzureBastionSubnet - Azure Bastion berada di subnet ini, menyediakan akses aman ke server beban kerja.

Diagram infrastruktur jaringan.

Dalam artikel ini, Anda akan mempelajari cara:

  • Menyiapkan lingkungan jaringan uji
  • Menyebarkan firewall
  • Buat rute default
  • Mengonfigurasi aturan aplikasi untuk mengizinkan akses ke www.microsoft.com
  • Mengonfigurasi aturan jaringan untuk membuka akses ke server DNS eksternal
  • Menguji firewall

Anda juga dapat menyelesaikan prosedur ini menggunakan portal Microsoft Azure atau Azure PowerShell.

Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.

Prasyarat

  • Artikel ini memerlukan Azure CLI versi 2.55.0 atau yang lebih baru. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terinstal.

Siapkan jaringan

Pertama, buat grup sumber daya untuk memuat sumber daya yang diperlukan untuk menyebarkan firewall. Kemudian buat VNet, subnet, dan server pengujian.

Buat grup sumber daya

Grup sumber daya berisi semua sumber daya untuk penyebaran.

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

Membuat VNet

Jaringan virtual ini memiliki tiga subnet.

Catatan

Ukuran subnet AzureFirewallSubnet adalah /26. Untuk informasi lebih tentang ukuran subnet, lihat Tanya Jawab Umum 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 AzureBastionSubnet \
  --resource-group Test-FW-RG \
  --vnet-name Test-FW-VN   \
  --address-prefix 10.0.3.0/26

Membuat mesin virtual

Buat NIC untuk Srv-Work dengan alamat IP server DNS tertentu dan tidak ada alamat IP publik untuk diuji.

az network nic create \
    --resource-group Test-FW-RG \
    --name Srv-Work-NIC \
   --vnet-name Test-FW-VN \
   --subnet Workload-SN \
   --dns-servers <replace with External DNS ip #1> <replace with External DNS ip #2>

Membuat komputer virtual beban kerja. Perintah berikut membuat VM Ubuntu Server 22.04 LTS dengan autentikasi kunci SSH dan menginstal Nginx. Saat diminta, simpan kunci privat yang dihasilkan ke dalam file .pem untuk digunakan ketika terhubung melalui Azure Bastion.

az vm create \
    --resource-group Test-FW-RG \
    --name Srv-Work \
    --location eastus \
    --image Ubuntu2204 \
    --nics Srv-Work-NIC \
    --admin-username azureuser \
    --generate-ssh-keys \
    --custom-data cloud-init.txt

Buat cloud-init.txt file dengan konten berikut untuk menginstal Nginx:

#cloud-config
package_upgrade: true
packages:
  - nginx
runcmd:
  - echo '<h1>'$(hostname)'</h1>' | sudo tee /var/www/html/index.html

Catatan

Azure menyediakan IP akses keluar default untuk VM yang tidak diberi alamat IP publik atau berada di kumpulan backend load balancer Azure dasar internal. Mekanisme IP akses keluar default menyediakan alamat IP keluar yang tidak dapat dikonfigurasi.

IP akses keluar default dinonaktifkan saat salah satu peristiwa berikut terjadi:

  • Alamat IP publik ditetapkan ke VM.
  • VM ditempatkan di kumpulan backend load balancer standar, dengan atau tanpa aturan keluar.
  • Sumber daya Azure NAT Gateway ditetapkan ke subnet VM.

VM yang Anda buat dengan menggunakan set skala komputer virtual dalam mode orkestrasi fleksibel tidak memiliki akses keluar default.

Untuk informasi selengkapnya tentang koneksi keluar di Azure, lihat Akses keluar default di Azure dan Menggunakan Terjemahan Alamat Jaringan Sumber (SNAT) untuk koneksi keluar.

Menyebarkan firewall

Sekarang, sebarkan firewall ke jaringan virtual.

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 --resource-group Test-FW-RG --firewall-name Test-FW01 --query "[?name=='FW-config'].privateIpAddress" --output tsv)"

Catat alamat IP privat. Anda akan menggunakannya nanti saat membuat rute default.

Sebarkan Azure Bastion

Sebarkan Azure Bastion untuk terhubung dengan aman ke komputer virtual Srv-Work tanpa memerlukan alamat IP publik atau server lompat.

az network public-ip create \
    --resource-group Test-FW-RG \
    --name bastion-pip \
    --sku Standard \
    --location eastus
az network bastion create \
    --name Test-Bastion \
    --public-ip-address bastion-pip \
    --resource-group Test-FW-RG \
    --vnet-name Test-FW-VN \
    --location eastus \
    --sku Basic

Catatan

Penyebaran Azure Bastion dapat memakan waktu sekitar 10 menit untuk diselesaikan.

Buat rute default

Membuat tabel rute, dengan penyebaran rute BGP dinonaktifkan

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

Buat rute.

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

Kaitkan tabel rute ke subnet

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

Mengonfigurasi aturan aplikasi

Aturan aplikasi memungkinkan akses keluar ke www.microsoft.com.

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

Azure Firewall menyertakan kumpulan aturan bawaan untuk FQDN infrastruktur yang diizinkan secara default. FQDN ini khusus untuk platform dan tidak dapat digunakan untuk tujuan lain. Untuk informasi selengkapnya, lihat FQDN Infrastruktur.

Konfigurasi aturan jaringan

Aturan jaringan memungkinkan akses keluar ke dua alamat IP DNS publik yang Anda pilih di port 53 (DNS).

az network firewall network-rule create \
   --collection-name Net-Coll01 \
   --destination-addresses <replace with DNS ip #1> <replace with DNS ip #2> \
   --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

Menguji firewall

Sekarang, uji firewall untuk mengonfirmasi bahwa firewall bekerja seperti yang diharapkan.

  1. Perhatikan alamat IP pribadi untuk komputer virtual Srv-Work:

    az vm list-ip-addresses \
    --resource-group Test-FW-RG \
    --name Srv-Work
    
  2. Di portal Microsoft Azure, navigasikan ke komputer virtual Srv-Work dan pilih Sambungkan>Sambungkan melalui Bastion.

  3. Berikan nama pengguna azureuser dan unggah file kunci .pem privat yang dihasilkan saat Anda membuat VM. Pilih Sambungkan untuk membuka sesi SSH.

  4. Dalam sesi SSH, jalankan perintah berikut untuk menguji resolusi DNS:

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

    Kedua perintah harus mengembalikan jawaban, yang menunjukkan bahwa kueri DNS Anda melewati firewall.

  5. Jalankan perintah berikut untuk menguji akses web:

    curl https://www.microsoft.com
    curl https://www.google.com
    

    Permintaan www.microsoft.com harus berhasil dan mengembalikan konten HTML, sementara www.google.com permintaan harus gagal atau waktu habis. Ini menunjukkan bahwa aturan firewall Anda beroperasi seperti yang diharapkan.

Jadi sekarang Anda telah memverifikasi bahwa aturan firewall berfungsi:

  • Anda bisa menyelesaikan nama DNS menggunakan server DNS eksternal yang dikonfigurasi.
  • Anda dapat menjelajah ke FQDN yang diizinkan, tetapi tidak ke yang lainnya.

Membersihkan sumber daya

Anda dapat menyimpan sumber daya firewall Anda untuk tutorial berikutnya, atau jika tidak lagi diperlukan, hapus sumber daya Test-FW-RG untuk menghapus semua sumber daya terkait firewall:

az group delete \
  --name Test-FW-RG

Langkah berikutnya