Microsoft Azure

Azure PowerShell ile Azure Firewall Kurulumu ve Yapılandırılması

Azure Firewall makale serimde birazda PS komutlarına yer vermek istiyorum. Serinin dördüncü bölümünde amacım bir önceki bölümde size uygulamalı olarak gösterdiğim senaryoyu tamamen powershell ile yapmak. Yani aynı senaryoyu kullanacağım ancak bu sefer küçük birkaç fark olacak.

Öncelikle senaryomuz aşağıdaki gibi olacaktır;

Resim1

Gördüğünüz gibi bir tane Vnet(Test-FW-VN) içersinde 3 adet subnet olacak, bunlardan bir tanesi Azure Firewall için diğer ikisi ise sanal makinelerim için. Srv-Work temel olarak internete kapalı ve işlerimi yaptığım bir sunucu gibi düşünebilirsiniz. Srv-Jump ise internete açık ve ilk RDP yaptığım ve daha sonra Srv-Work’ e ulaştığım makine olarak düşünebilirsiniz.

Öncelikle benimle bu lab ortamını kurmak istiyorsanız bir azure hesabınızın olması gerekli. Bu uygulamayı portal üzerinden yapmak isterseniz aşağıdaki makalemi inceleyebilirsiniz.

Azure Powershell kullanacağımız için öncelikle makinemizin hazır olması gereklidir.

Resim2

İlk komutumuz $PSVersionTable.PSVersion

Bunun amacı AzurePowerShell için Windows Powershell sürümü önemlidir. 5.1 ve sonrası için desteği vardır. Windows 10 1607 ve sonrasında hali hazırda PowerShell 5.1 yüklüdür. Eğer sizde sürüm daha düşük ise yükseltmeniz gereklidir. Öncelikle .net 4.7.2 ve daha güncel bir .net sürümünü yükleyin.

Not: Eğer makinenizde hali hazırda AzureRM yüklü ise aynı anda AZ modülünü yükleyemezsiniz.

Resim3

Burada eğer AzureRM kullanmaya devam etmek istiyorsanız Azure Cloud Shell kullanabilirsiniz. Browser temelli bir komut setidir.

AzureRM PowerShell 5.1 ile çalışırken siz Az module for PowerShell 6.2.4 kurabilirsiniz. Bu iki sürüm farklı modülleri kullandığı için çakışma olmaz.

Ben aktif kullanmadığım için AzureRM’ i kaldırıyorum.

https://docs.microsoft.com/en-us/powershell/azure/azurerm/uninstall-azurerm-ps?view=azurermps-6.13.0

Daha sonra gerekli olan modülleri yüklemek için aşağıdaki komut setini powershell ekranına yapıştırıyorum.

Install-Module -Name PowerShellGet -Force

Daha sonra Azure PowerShell modülünü yükleyelim

if ($PSVersionTable.PSEdition -eq ‘Desktop’ -and (Get-Module -Name AzureRM -ListAvailable)) {

    Write-Warning -Message (‘Az module not installed. Having both the AzureRM and ‘ +

      ‘Az modules installed at the same time is not supported.’)

} else {

    Install-Module -Name Az -AllowClobber -Scope CurrentUser

}

Resim4

Ben kendi kullanıcım için yükleme yapmış oldum, bilgisayardaki tüm kullanıcılar için yükleme yapmak için docs.microsoft.com adresini kontrol ediniz.

Şimdi PS ile hızlıca komutlara geçelim. Önce hesabımıza bağlanalım.

Connect-AzAccount komutunu çalıştırdıktan sonra karşımıza aşağıdaki gibi bir logon ekranı gelir ve yetkili bir hesap ile giriş yapmalıyız

Resim5

Resim6

Sonrasında sırasıyla komutlar aşağıdaki gibidir;

New-AzResourceGroup -Name Test-FW-RG -Location “East US”

Yeni bir kaynak grubu oluşturuyoruz. Unutmayın buradaki komut setleri örnek olup isimleri, ip aralıklarını, makine boyutlarını, kullanacağınız veri merkezlerini değiştirebilirsiniz.

New-AzResourceGroup -Name Test-FW-RG -Location “East US”

Resim7

Değişken tanımlıyoruz.

$FWsub = New-AzVirtualNetworkSubnetConfig -Name AzureFirewallSubnet -AddressPrefix 10.0.1.0/26

$Worksub = New-AzVirtualNetworkSubnetConfig -Name Workload-SN -AddressPrefix 10.0.2.0/24

$Jumpsub = New-AzVirtualNetworkSubnetConfig -Name Jump-SN -AddressPrefix 10.0.3.0/24

Resim8

Vnet oluşturma komutu

$testVnet = New-AzVirtualNetwork -Name Test-FW-VN -ResourceGroupName Test-FW-RG `

-Location “East US” -AddressPrefix 10.0.0.0/16 -Subnet $FWsub, $Worksub, $Jumpsub

Resim9

Sanal makine oluşturuyoruz

Srv-Jump için;

New-AzVm `

    -ResourceGroupName Test-FW-RG `

    -Name “Srv-Jump” `

    -Location “East US” `

    -VirtualNetworkName Test-FW-VN `

    -SubnetName Jump-SN `

    -OpenPorts 3389 `

    -Size “Standard_DS2”

Srv-Work, public ip adresi yok, komut setini çalıştırınca kullanıcı adı ve şifre tanımı yapın lütfen.

#Create the NIC

$NIC = New-AzNetworkInterface -Name Srv-work -ResourceGroupName Test-FW-RG `

 -Location “East US” -Subnetid $testVnet.Subnets[1].Id

#Define the virtual machine

$VirtualMachine = New-AzVMConfig -VMName Srv-Work -VMSize “Standard_DS2”

$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName Srv-Work -ProvisionVMAgent -EnableAutoUpdate

$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id

$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName ‘MicrosoftWindowsServer’ -Offer ‘WindowsServer’ -Skus ‘2016-Datacenter’ -Version latest

#Create the virtual machine

New-AzVM -ResourceGroupName Test-FW-RG -Location “East US” -VM $VirtualMachine -Verbose

Resim10

Resim11

Not: Girdiğiniz kullanıcı adı ve şifreyi not edin lütfen.

Bu adım biraz sürebilir malum sanal makine oluşturuyor.

Azure Firewall’ u kuruyoruz.

# 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” -VirtualNetworkName Test-FW-VN -PublicIpName fw-pip

#Save the firewall private IP address for future use

$AzfwPrivateIP = $Azfw.IpConfigurations.privateipaddress

$AzfwPrivateIP

Resim12

Default route oluşturuyoruz.

$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

Resim13

ÇözümPark web sitesine izin vermek için application rule oluşturuyoruz.

$AppRule1 = New-AzFirewallApplicationRule -Name Allow-CozumPark -SourceAddress 10.0.2.0/24 `

  -Protocol http, https -TargetFqdn www.cozumpark.com

$AppRuleCollection = New-AzFirewallApplicationRuleCollection -Name App-Coll01 `

  -Priority 200 -ActionType Allow -Rule $AppRule1

$Azfw.ApplicationRuleCollections.Add($AppRuleCollection)

Set-AzFirewall -AzureFirewall $Azfw

Resim14

DNS trafiğine izin vermek için network rule oluşturuyoruz.

$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

Resim15

Şimdi ise Srv-Work makinesinin network interface’ i üzerindeki DNS leri network kuralında izin verdiğimiz DNS ip adresleri ile güncelliyoruz.

$NIC.DnsSettings.DnsServers.Add(“209.244.0.3”)

$NIC.DnsSettings.DnsServers.Add(“209.244.0.4”)

$NIC | Set-AzNetworkInterface

Evet tüm ayarları yaptık, şimdi sıra test etmeye geldi.

Hatırlarsanız Srv-Jump isminde bir makine açmıştık, komut gereği zaten makine aşağıdaki gibi dış dünyaya açıktır;

Resim16

Makineyi kurarken tanımladığımız kullanıcı ve public ip adresi üzerinden RDP yapalım. Daha sonra bu makineden Srv-Work makinesine RDP yapacağız. Yine hatırlarsanız bu makinenin bir public ip adresi yoktu, bu nedenle private ip adresi üzerinden bağlanıyoruz.

Resim17

Daha sonra ise önce cozumpark sonra google web sitelerine erişimi deniyoruz.

Resim18

Gördüğünüz gibi public ip adresi üzerinden bağlandığım Jump sunucusu ve onun üzerinden bağlandığım prod sunucusu üzerinde ÇözümPark açıldı.

Resim19

Ancak google açılmadı, çünkü böyle bir kural yazmadım.

İsterseniz yazdığınız tüm bu powershell komutlarının takibini azure portal üzerinden de yapabilirsiniz.

Umarım faydalı bir makale olmuştur.

Bir sonraki makalemde görüşmek üzere.

Hakan Uzuner

2002 yılından beri aktif olarak bilişim sektöründe çalışmaktayım. Bu süreç içerisinde özellikle profesyonel olarak Microsoft teknolojileri üzerinde çalıştım. Profesyonel kariyerim içerisinde eğitmenlik, danışmanlık ve yöneticilik yaptım. Özellikle danışmanlık ve eğitmenlik tecrübelerimden kaynaklı pek çok farklı firmanın alt yapısının kurulum, yönetimi ve bakımında bulundum. Aynı zamanda ÇözümPark Bilişim Portalı nın Kurucusu olarak portal üzerinde aktif olarak rol almaktayım. Profesyonel kariyerime ITSTACK Bilgi Sistemlerinde Profesyonel Hizmetler Direktörü olarak devam etmekteyim.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu