Azure PowerShell kullanarak Azure Güvenlik Duvarı dağıtma ve yapılandırma

Giden ağ erişimini denetleme, genel ağ güvenlik planının önemli bir parçasıdır. Örneğin, web sitelerine erişimi sınırlamak isteyebilirsiniz. Öte yandan, erişilebilen giden IP adreslerini ve bağlantı noktalarını sınırlamak da isteyebilirsiniz.

Azure Güvenlik Duvarı, Azure alt ağından giden ağ erişimini denetlemenin bir yoludur. Azure Güvenlik Duvarı ile şunları yapılandırabilirsiniz:

  • Bir alt ağdan erişilebilen tam etki alanı adlarını (FQDN) tanımlayan uygulama kuralları.
  • Kaynak adres, protokol, hedef bağlantı noktası ve hedef adresini tanımlayan ağ kuralları.

Ağ trafiğinizi güvenlik duvarından alt ağın varsayılan ağ geçidi olarak yönlendirdiğinizde ağ trafiği yapılandırılan güvenlik duvarı kurallarına tabi tutulur.

Bu makalede, kolay dağıtım için üç alt ağa sahip basitleştirilmiş tek bir sanal ağ oluşturursunuz. Üretim dağıtımları için güvenlik duvarının kendi sanal asında olduğu bir merkez-uç modeli önerilir. İş yükü sunucuları, bir veya daha fazla alt ağa sahip aynı bölgedeki eşlenmiş sanal ağlarda yer alır.

  • AzureFirewallSubnet - güvenlik duvarı bu alt ağdadır.
  • Workload-SN: İş yükü sunucusu bu alt ağda yer alır. Bu alt ağın ağ trafiği güvenlik duvarından geçer.
  • AzureBastionSubnet - İş yükü sunucusuna bağlanmak için kullanılan Azure Bastion için kullanılan alt ağdır.

Azure Bastion hakkında daha fazla bilgi için bkz. Azure Bastion nedir?

Önemli

Saatlik fiyatlandırma, giden veri kullanımına bakılmaksızın Bastion dağıtıldığından itibaren başlar. Daha fazla bilgi için bkz . Fiyatlandırma ve SKU'lar. Bastion'ı bir öğretici veya test kapsamında dağıtıyorsanız, kullanmayı bitirdikten sonra bu kaynağı silmenizi öneririz.

Öğretici ağı altyapısı

Bu makalede şunları öğreneceksiniz:

  • Test amaçlı ağ ortamı oluşturma
  • Güvenlik duvarı dağıtma
  • Varsayılan rota oluşturma
  • Uygulama kuralını www.google.com erişime izin verecek şekilde yapılandırma
  • Dış DNS sunucularına erişime izin vermek için ağ kuralı yapılandırma
  • Güvenlik duvarını test etme

İsterseniz Azure portalını kullanarak bu yordamı tamamlayabilirsiniz.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Önkoşullar

Bu yordam, PowerShell'i yerel olarak çalıştırmanızı gerektirir. Azure PowerShell modülünün yüklü olması gerekir. Sürümü bulmak için Get-Module -ListAvailable Az komutunu çalıştırın. Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme. PowerShell sürümünü doğruladıktan sonra, Azure ile bağlantı oluşturmak için Connect-AzAccount komutunu çalıştırın.

Ağı ayarlama

İlk olarak güvenlik duvarını dağıtmak için gerekli olan kaynakları içerecek bir kaynak grubu oluşturun. Ardından sanal ağı, alt ağları ve test sunucularını oluşturun.

Kaynak grubu oluşturma

Kaynak grubu, dağıtım için tüm kaynakları içerir.

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

Sanal ağ ve Azure Bastion konağı oluşturma

Bu sanal ağın üç alt ağı vardır:

Not

AzureFirewallSubnet alt ağı boyutu /26'dır. Alt ağ boyutu hakkında daha fazla bilgi için bkz. Azure Güvenlik Duvarı SSS.

$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

Şimdi sanal ağı oluşturun:

$testVnet = New-AzVirtualNetwork -Name Test-FW-VN -ResourceGroupName Test-FW-RG `
-Location "East US" -AddressPrefix 10.0.0.0/16 -Subnet $Bastionsub, $FWsub, $Worksub

Azure Bastion konağı için genel IP adresi oluşturma

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

Azure Bastion konağı oluşturma

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

Sanal makine oluşturun

Şimdi iş yükü sanal makinesini oluşturun ve uygun alt ağa yerleştirin. İstendiğinde, sanal makine için bir kullanıcı adı ve parola yazın.

İş yükü sanal makinesi oluşturma. İstendiğinde, sanal makine için bir kullanıcı adı ve parola yazın.

#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

Not

Azure, genel IP adresi atanmamış veya bir iç temel Azure yük dengeleyicinin arka uç havuzunda yer alan VM'ler için varsayılan bir giden erişim IP'si sağlar. Varsayılan giden erişim IP mekanizması, yapılandırılamayan bir giden IP adresi sağlar.

Aşağıdaki olaylardan biri gerçekleştiğinde varsayılan giden erişim IP'si devre dışı bırakılır:

Sanal makine ölçek kümelerini esnek düzenleme modunda kullanarak oluşturduğunuz VM'lerin varsayılan giden erişimi yoktur.

Azure'daki giden bağlantılar hakkında daha fazla bilgi için bkz . Azure'da varsayılan giden erişim ve giden bağlantılar için Kaynak Ağ Adresi Çevirisi'ni (SNAT) kullanma.

Güvenlik duvarını dağıtma

Şimdi güvenlik duvarını sanal ağa dağıtın.

# 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

Özel IP adresini not edin. Varsayılan rotayı oluştururken bu adresi kullanacaksınız.

Varsayılan rota oluşturma

BGP yol yayma devre dışı bırakılmış bir tablo oluşturma

$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

Uygulama kuralı yapılandırma

Uygulama kuralı, www.google.com giden erişime izin verir.

$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 Güvenlik Duvarı'nda varsayılan olarak izin verilen altyapı FQDN'leri için yerleşik bir kural koleksiyonu bulunur. Bu FQDN'ler platforma özgüdür ve başka amaçlarla kullanılamaz. Daha fazla bilgi için bkz. Altyapı FQDN'leri.

Ağ kuralını yapılandırma

Ağ kuralı, 53 numaralı bağlantı noktasında (DNS) iki IP adresine giden erişime izin verir.

$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

Srv-Work ağ arabiriminin birincil ve ikincil DNS adresini değiştirme

Bu yordamda test amacıyla sunucunun birincil ve ikincil DNS adreslerini yapılandırın. Bu genel bir Azure Güvenlik Duvarı gereksinimi değildir.

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

Güvenlik duvarını test etme

Şimdi güvenlik duvarını test edin ve beklendiği gibi çalıştığını onaylayın.

  1. BağlanBastion kullanarak Srv-Work sanal makinesi ve oturum açın.

    Bastion kullanarak Bağlan.

  2. Srv-Work'te bir PowerShell penceresi açın ve aşağıdaki komutları çalıştırın:

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

    Her iki komut da, DNS sorgularınızın güvenlik duvarından geçtiğini gösteren yanıtlar döndürmelidir.

  3. Aşağıdaki komutları çalıştırın:

    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
    

    İstekler www.google.com başarılı olmalı ve www.microsoft.com istekler başarısız olmalıdır. Bu, güvenlik duvarı kurallarınızın beklendiği gibi çalıştığını gösterir.

Şimdi güvenlik duvarı kurallarının çalıştığını doğruladınız:

  • Yapılandırılmış dış DNS sunucusunu kullanarak DNS adlarını çözümleyebilirsiniz.
  • İzin verilen bir FQDN'ye göz atabilir ancak diğerlerine göz atamazsınız.

Kaynakları temizleme

Sonraki öğreticide güvenlik duvarı kaynaklarınızı koruyabilir veya artık gerekli değilse Test-FW-RG kaynak grubunu silip güvenlik duvarıyla ilgili tüm kaynakları silebilirsiniz:

Remove-AzResourceGroup -Name Test-FW-RG

Sonraki adımlar