Menyebarkan dan mengonfigurasi Azure Firewall menggunakan Azure PowerShell
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.
- 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, disarankan hub dan model spoke, dengan firewall berada di VNetnya 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 - subnet yang digunakan untuk Azure Bastion, yang digunakan untuk menyambungkan ke server beban kerja.
Untuk informasi selengkapnya tentang Azure Bastion, lihat Apa itu Azure Bastion?
Penting
Harga per jam dimulai sejak Bastion disebarkan, terlepas dari penggunaan data keluar. Untuk informasi selengkapnya, lihat Harga dan SKU. Jika Anda menyebarkan Bastion sebagai bagian dari tutorial atau pengujian, kami sarankan Anda menghapus sumber daya ini setelah Selesai menggunakannya.
Dalam artikel ini, Anda akan mempelajari cara:
- Menyiapkan lingkungan jaringan uji
- Menyebarkan firewall
- Buat rute default
- Mengonfigurasi aturan aplikasi untuk mengizinkan akses ke www.google.com
- Mengonfigurasi aturan jaringan untuk membuka akses ke server DNS eksternal
- Menguji firewall
Jika mau, Anda dapat menyelesaikan prosedur ini menggunakan portal Microsoft Azure.
Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
Prasyarat
Prosedur ini mengharuskan Anda menjalankan PowerShell secara lokal. Anda harus menginstal modul Azure PowerShell. Jalankan Get-Module -ListAvailable Az
untuk menemukan versinya. Jika Anda perlu peningkatan, lihat Instal modul Azure PowerShell. Setelah versi PowerShell dipastikan, jalankan Connect-AzAccount
untuk membuat koneksi dengan Azure.
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.
New-AzResourceGroup -Name Test-FW-RG -Location "East US"
Buat jaringan virtual dan host Azure Bastion
Jaringan virtual ini memiliki tiga subnet:
Catatan
Ukuran subnet AzureFirewallSubnet adalah /26. Untuk informasi lebih tentang ukuran subnet, lihat Tanya Jawab Umum 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
Sekarang, buat jaringan virtual:
$testVnet = New-AzVirtualNetwork -Name Test-FW-VN -ResourceGroupName Test-FW-RG `
-Location "East US" -AddressPrefix 10.0.0.0/16 -Subnet $Bastionsub, $FWsub, $Worksub
Buat alamat IP publik untuk host Azure Bastion
$publicip = New-AzPublicIpAddress -ResourceGroupName Test-FW-RG -Location "East US" `
-Name Bastion-pip -AllocationMethod static -Sku standard
Buat host Azure Bastion
New-AzBastion -ResourceGroupName Test-FW-RG -Name Bastion-01 -PublicIpAddress $publicip -VirtualNetwork $testVnet
Membuat mesin virtual
Sekarang buat komputer virtual beban kerja, dan letakkan di subnet yang sesuai. Ketika diminta, ketik nama pengguna dan kata sandi untuk komputer virtual.
Buat komputer virtual beban kerja. Ketika diminta, ketik nama pengguna dan kata sandi untuk komputer virtual.
#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
$SecurePassword = ConvertTo-SecureString "<choose a password>" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ("<choose a user name>", $SecurePassword);
$VirtualMachine = New-AzVMConfig -VMName Srv-Work -VMSize "Standard_DS2"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName Srv-Work -ProvisionVMAgent -EnableAutoUpdate -Credential $Credential
$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
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.
# 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
#Save the firewall private IP address for future use
$AzfwPrivateIP = $Azfw.IpConfigurations.privateipaddress
$AzfwPrivateIP
Catat alamat IP privat. Anda akan menggunakannya nanti saat membuat rute default.
Buat rute default
Buat tabel, dengan propagasi rute BGP dinonaktifkan
$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
Mengonfigurasi aturan aplikasi
Aturan aplikasi memungkinkan akses keluar ke www.google.com.
$AppRule1 = New-AzFirewallApplicationRule -Name Allow-Google -SourceAddress 10.0.2.0/24 `
-Protocol http, https -TargetFqdn www.google.com
$AppRuleCollection = New-AzFirewallApplicationRuleCollection -Name App-Coll01 `
-Priority 200 -ActionType Allow -Rule $AppRule1
$Azfw.ApplicationRuleCollections.Add($AppRuleCollection)
Set-AzFirewall -AzureFirewall $Azfw
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 di port 53 (DNS).
$NetRule1 = New-AzFirewallNetworkRule -Name "Allow-DNS" -Protocol UDP -SourceAddress 10.0.2.0/24 `
-DestinationAddress 209.244.0.3,209.244.0.4 -DestinationPort 53
$NetRuleCollection = New-AzFirewallNetworkRuleCollection -Name RCNet01 -Priority 200 `
-Rule $NetRule1 -ActionType "Allow"
$Azfw.NetworkRuleCollections.Add($NetRuleCollection)
Set-AzFirewall -AzureFirewall $Azfw
Ubah alamat DNS utama dan sekunder untuk antarmuka jaringan Srv-Work
Untuk tujuan pengujian dalam prosedur ini, konfigurasikan alamat DNS utama dan sekunder server. Ini bukan persyaratan umum Azure Firewall.
$NIC01.DnsSettings.DnsServers.Add("209.244.0.3")
$NIC01.DnsSettings.DnsServers.Add("209.244.0.4")
$NIC01 | Set-AzNetworkInterface
Menguji firewall
Sekarang, uji firewall untuk mengonfirmasi bahwa firewall bekerja seperti yang diharapkan.
Sambungkan ke komputer virtual Srv-Work menggunakan Bastion, dan masuk.
Di Srv-Work, buka jendela PowerShell, dan jalankan perintah berikut:
nslookup www.google.com nslookup www.microsoft.com
Kedua perintah harus mengembalikan jawaban, yang menunjukkan bahwa kueri DNS Anda melewati firewall.
Jalankan perintah berikut:
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
Permintaan
www.google.com
harus berhasil, dan permintaanwww.microsoft.com
harus gagal. 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:
Remove-AzResourceGroup -Name Test-FW-RG