Azure Güvenlik Duvarını PowerShell ile yapılandırma – Azure Firewall


Azure Firewall ile sanal ağlarda (VNets) ve alt ağlarda uygulamalar ve ağlar için bağlantı ilkelerini yönetebiliriz. Bu şekilde, birden çok VNets ve alt ağ güvenlik duvarı kurallarında belirtilen uygulamalara ve ağlara erişmek için güvenlik duvarı VNet ile iletişim kurabilir. Bu senaryoda, biri Central VNet olan üç tane VNet vardır. Diğer VNets’lerin tüm trafiği Central VNet’ten geçer. Böylece Azure Firewall trafiği kendi kurallarına göre yönetebilir.

Azure Firewall, VNets ve internet arasındaki trafiği kontrol etmek için statik bir Public IP ve Private IP adresi kullanır. Giden trafiği, wildcard destekleyen belirli bir domain name listesiyle sınırlamamızı sağlar. Built-in scaling ve high availability özellikleriyle, yönetilmesi daha kolaydır.

Azure Güvenlik Duvarı’nı yapılandırırken, trafiği kontrol edebilmesi için çalıştığı VNet’e atamanız gerekir. Bunu yapmak için, user-defined routes (UDR’ler) kullanarak Azure Firewall’a giden trafiği kontrol etmek istediğimiz tüm VNets veya alt ağları (subnets) iletmeliyiz. Tüm dahili trafiği Azure Firewall’un Private IP adresine yönlendirmek için bir UDR kuralı oluşturabiliriz. Yapılandırılan kurallara göre iletişime izin verecek ya da reddedecektir. Bu şekilde, tüm trafik Azure Firewall VNet’ten geçer.

Senaryo

Senaryomuzda, iki subnet ile tek bir VNet kullanıyor olacağız.

Subnet 0: Internal subnet ve internet arasındaki trafiği kontrol eden Azure Firewall subnet

Subnet 1: Sanal makineler (VM’ler) gibi tüm şirket kaynaklarının olduğu internal subnet

Ortamı hazırlamak

Şimdi gerekli kaynaklarla Azure Firewall’umuzu oluşturmak ve yönetmek için PowerShell ortamını yapılandırmaya başlayalım.

Azure Firewall özelliği hala önizlemede olduğundan, etkinleştirmek için öncelikle aşağıdaki komutları çalıştırarak gerekli özellikleri kaydetmeliyiz.

 

Şimdi Azure Firewall’ı yönetmek için kullanacağımız PowerShell cmdlet’lerini almak için AzureRM.Network modülünün son sürümünü yüklemeliyiz.

Install-Module -Name AzureRM.Network -RequiredVersion 6.4.0-preview -AllowPrerelease

Azure Firewall oluşturma ve yapılandırma

Yeni bir Azure Firewall oluşturmak için aşağıdaki PowerShell komutlarını kullanabiliriz.

 

Azure Firewall oluşturduktan sonra, UDR’yi kullanarak Azure Firewall ile ilişkilendireceğimiz internal ağ trafiğine izin vermek veya reddetmek için gerekli güvenlik duvarı kurallarını oluşturmak üzere devam edebiliriz.

Azure Firewall, bir dizi bireysel kuraldan oluşan kural koleksiyonlarına sahiptir. Yani bir Azure Firewall kuralı oluşturmak için öncelikle bir kural yapılandırması ve ardından bir kural koleksiyonu yapılandırması oluşturmanız gerekir. Bir kural yapılandırması içeren bir kural koleksiyonu oluşturduktan sonra, bu kural koleksiyonu yapılandırmasını Azure Firewall’a atayabiliriz.

Bir kural yapılandırması ve kural koleksiyonu yapılandırması oluşturmak için aşağıdaki örneği kullanabiliriz.

Bu örnekte, R1 ve R2 adında iki kural oluşturduk ve bunları RC1 adında bir kural koleksiyonuna atadık.

$AzureFirewall = Get-AzureRmFirewall -ResourceGroupName $ResourceGroup
$Rule1 = New-AzureRmFirewallApplicationRule -Name R1 -Protocol “http:80″,”https:443” -TargetFqdn “*microsoft.com”
$Rule2 = New-AzureRmFirewallApplicationRule -Name R2 -Protocol “http:80″,”https:443” -TargetFqdn “*microsoft.com”
$RuleCollection = New-AzureRmFirewallApplicationRuleCollection -Name RC1 -Priority 100 -Rule $Rule1,$rule2 -ActionType “Allow”

Ve şimdi bu kural koleksiyonunu güvenlik duvarına ilişkilendirebiliriz.

$AzureFirewall.ApplicationRuleCollections = $RuleCollection
Set-AzureRmFirewall -AzureFirewall $AzureFirewall

Internal subnet’leri Azure Firewall ile entegre etme

Artık iç internal subnet’ten gelen tüm trafiği Private IP adresini kullanarak Azure Firewall’a yönlendirmemiz gerekiyor. Bunu yapmak için aşağıdaki örneği kullanabilirsiniz.

Aşağıda yeni bir route config ve bir route tablosu oluşturuyoruz. Daha sonra bu route tablosunu internal subnet’in route tablosu olarak ayarlıyoruz. Bu nedenle, internal subnet’ten gelen tüm trafiği değerlendirmek için Azure Firewall’a yönlendirmeliyiz.

$AzureFirewall = Get-AzureRmFirewall -ResourceGroupName $ResourceGroup
$AzureFirewallRouteName = “AzureFirewallRoute01”
$AzureFirewallRouteTableName = “AzureFirewallRouteTable01”
$AzureFirewallPrivateIP = $AzureFirewall.IpConfigurations[0].PrivateIPAddress
$AzureFirewallRoute = New-AzureRmRouteConfig -Name $AzureFirewallRouteName AddressPrefix 0.0.0.0/0 -NextHopType VirtualAppliance -NextHopIpAddress $AzureFirewallPrivateIP
$AzureFirewallRouteTable = New-AzureRmRouteTable -Name $AzureFirewallRouteTableName -ResourceGroupName $ResourceGroup -location $Location -Route $AzureFirewallRoute
$vnet.Subnets[2].RouteTable = $AzureFirewallRouteTable
Set-AzureRmVirtualNetwork -VirtualNetwork $vnet

Yapılandırmayı test etme

Artık internal subnet’teki bir VM’den kaynaklanan bağlantıyı test edebiliriz.

Zaten *microsoft.com ve *google.com web sitelerine izin verdiğimiz için, bu sitelere kısıtlama olmaksızın gidebiliriz. Ancak, “blocked.com” web sitesini veya güvenlik duvarı kurallarında açıkça izin verilmeyen başka bir web sitesini açmaya çalıştığımızda, Azure Firewall mesajı mesajı ile karşılaşırsınız.

Güvenlik duvarı kuralları ve kural koleksiyonları dahil olmak üzere tam Azure Firewall yapılandırmasını aşağıdaki komutu kullanarak inceleyebilirsiniz.

Get-AzureRmFirewall -ResourceGroupName $ResourceGroup

Azure Firewall, yönetimi kolay bir güvenlik duvarı hizmetidir. Ayrıca Azure Monitor’ü tam olarak destekler.

KAYNAKCLOUD