Azure PowerShell kullanarak Azure Güvenlik Duvarı'nı 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. Alternatif olarak, erişilebilen giden IP adreslerini ve bağlantı noktalarını sınırlamak da isteyebilirsiniz.

Azure Güvenlik Duvarı'nı kullanarak bir Azure alt ağından giden ağ erişimini denetleyebilirsiniz. Azure Güvenlik Duvarı'nı kullanarak ş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ş bir tek sanal ağ oluşturacaksınız. Üretim dağıtımları için güvenlik duvarının kendi sanal ağında yer aldığı merkez-uç modelini kullanın. İş 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.

Güvenlik duvarı ağ altyapısını gösteren diyagram.

Bu makalede şunları öğreneceksiniz:

  • Test amaçlı ağ ortamı oluşturma
  • Güvenlik duvarı kurma
  • Varsayılan rota oluşturma
  • www.google.com erişimine izin vermek için uygulama kuralı yapılandırın.
  • 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 bir sanal ağ, alt ağlar ve test sunucuları oluşturun.

Kaynak grubu oluşturma

Dağıtım için bir kaynak grubu oluşturmak için New-AzResourceGroup kullanın:

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. Bunları tanımlamak için New-AzVirtualNetworkSubnetConfig kullanın:

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

New-AzVirtualNetwork kullanarak 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

Bastion konağı için statik bir genel IP adresi oluşturmak için New-AzPublicIpAddress kullanın:

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

Azure Bastion konağı oluşturma

Bastion konağı oluşturmak için New-AzBastion kullanın:

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

Sanal makine oluşturun

İş yükü sanal makinesini oluşturmak için New-AzVM kullanın. İstendiğinde, 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, kamuya açık IP adresi atanmamış veya dahili temel Azure yük dengeleyicisinin 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:

  • VM'ye bir genel IP adresi atanır.
  • VM, çıkış kuralları olan veya olmayan standart bir yük dengeleyicinin arka uç havuzuna yerleştirilir.
  • Bir Azure NAT Gateway kaynağı, VM'nin alt ağına atanı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ı yapılandır

Güvenlik duvarını sanal ağa dağıtmak için New-AzPublicIpAddress ve New-AzFirewall kullanı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. Bunu daha sonra varsayılan yolu oluştururken kullanırsınız.

Varsayılan rota oluşturma

New-AzRouteTable ve Add-AzRouteConfig kullanarak güvenlik duvarını işaret eden varsayılan bir yol tablosu oluşturun ve ardından bunu iş yükü alt ağıyla ilişkilendirin:

$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

New-AzFirewallApplicationRule ve New-AzFirewallApplicationRuleCollection kullanarak www.google.com öğesine giden çıkış erişimi sağlayan bir uygulama kuralı oluşturun.

$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ü olup başka amaçlarla kullanılamaz. Daha fazla bilgi için bkz. Altyapı FQDN'leri.

Ağ kuralını yapılandırma

53 numaralı portta (DNS) iki IP adresine dışa dönük erişim sağlamak için New-AzFirewallNetworkRule ve New-AzFirewallNetworkRuleCollection kullanın.

$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 yapılandırma 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. Bastion kullanarak Srv-Work sanal makinesine bağlanın ve oturum açın.

    Azure Bastion kullanarak Srv-Work sanal makineye bağlantıyı gösteren ekran görüntüsü.

  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ürür.

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

    Invoke-WebRequest -Uri https://www.google.com
    
    Invoke-WebRequest -Uri https://www.microsoft.com
    

    İstekler www.google.com başarılı olur ve www.microsoft.com istekler başarısız olur. Bu sonuç, 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.
  • Sadece izin verilen bir FQDN'ye göz atabilirsiniz, diğerlerine göz atamazsınız.

Kaynakları temizleme

Sonraki öğreticide güvenlik duvarı kaynaklarınızı koruyabilirsiniz. Artık bunlara ihtiyacınız yoksa, güvenlik duvarıyla ilgili tüm kaynakları silmek için Test-FW-RG kaynak grubunu silin:

Remove-AzResourceGroup -Name Test-FW-RG

Sonraki adımlar