PowerShell kullanarak ağ güvenlik grubuyla ağ trafiğini filtreleme

Bir sanal ağ alt ağına gelen ve sanal ağ alt ağından giden ağ trafiğini, bir ağ güvenlik grubu ile filtreleyebilirsiniz. Ağ güvenlik grupları, ağ trafiğini IP adresi, bağlantı noktası ve protokole göre filtreleyen güvenlik kuralları içerir. Güvenlik kuralları bir alt ağda dağıtılmış kaynaklara uygulanır. Bu makalede şunları öğreneceksiniz:

  • Ağ güvenlik grubu ve güvenlik kuralları oluşturma
  • Bir sanal ağ oluşturma ve ağ güvenlik grubunu alt ağ ile ilişkilendirme
  • Sanal makineleri (VM) bir alt ağa dağıtma
  • Trafik filtrelerini test etme

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

Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Button to launch Azure Cloud Shell.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu veya komutu Cloud Shell oturumuna yapıştırın.

  4. Kodu veya komutu çalıştırmak için Enter'ı seçin.

PowerShell'i yerel olarak yükleyip kullanmayı seçerseniz, bu makale Için Azure PowerShell modülünün 1.0.0 veya sonraki bir sürümü gerekir. Yüklü 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'i yerel olarak çalıştırıyorsanız Azure bağlantısı oluşturmak için Connect-AzAccount komutunu da çalıştırmanız gerekir.

Ağ güvenlik grubu oluşturma

Bir ağ güvenlik grubu, güvenlik kuralları içerir. Güvenlik kuralları, bir kaynak ve hedefi belirtir. Kaynaklar ve hedefler, uygulama güvenlik grupları olabilir.

Uygulama güvenlik grupları oluşturma

İlk olarak New-AzResourceGroup ile bu makalede oluşturulan tüm kaynaklar için bir kaynak grubu oluşturun. Aşağıdaki örnekte eastus konumunda bir kaynak grubu oluşturulmaktadır:

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

New-AzApplicationSecurityGroup ile bir uygulama güvenlik grubu oluşturun. Uygulama güvenlik grubu, benzer bağlantı noktası filtreleme gereksinimlerine sahip sunucuları gruplandırmanızı sağlar. Aşağıdaki örnek iki uygulama güvenlik grubu oluşturur.

$webAsg = New-AzApplicationSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Name myAsgWebServers `
  -Location eastus

$mgmtAsg = New-AzApplicationSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Name myAsgMgmtServers `
  -Location eastus

Güvenlik kuralları oluşturma

New-AzNetworkSecurityRuleConfig ile bir güvenlik kuralı oluşturun. Aşağıdaki örnek, internetten gelen trafiğin 80 ve 443 numaralı bağlantı noktaları üzerinden myWebServers uygulama güvenlik grubuna gitmesine izin veren bir kural oluşturur:

$webRule = New-AzNetworkSecurityRuleConfig `
  -Name "Allow-Web-All" `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 100 `
  -SourceAddressPrefix Internet `
  -SourcePortRange * `
  -DestinationApplicationSecurityGroupId $webAsg.id `
  -DestinationPortRange 80,443

The following example creates a rule that allows traffic inbound from the internet to the *myMgmtServers* application security group over port 3389:

$mgmtRule = New-AzNetworkSecurityRuleConfig `
  -Name "Allow-RDP-All" `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 110 `
  -SourceAddressPrefix Internet `
  -SourcePortRange * `
  -DestinationApplicationSecurityGroupId $mgmtAsg.id `
  -DestinationPortRange 3389

Bu makalede RDP (bağlantı noktası 3389), myAsgMgmtServers VM için İnternet'te kullanıma sunulur. Üretim ortamlarında 3389 numaralı bağlantı noktasını internette kullanıma sunmak yerine VPN veya özel ağ bağlantısı kullanarak yönetmek istediğiniz Azure kaynaklarına bağlamanız önerilir.

Ağ güvenlik grubu oluşturma

New-AzNetworkSecurityGroup ile bir ağ güvenlik grubu oluşturun. Aşağıdaki örnek myNsg adlı bir ağ güvenlik grubu oluşturur:

$nsg = New-AzNetworkSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -Name myNsg `
  -SecurityRules $webRule,$mgmtRule

Sanal ağ oluşturma

New-AzVirtualNetwork ile bir sanal ağ oluşturun. Aşağıdaki örnek myVirtualNetwork adlı bir sanal ağ oluşturur:

$virtualNetwork = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork `
  -AddressPrefix 10.0.0.0/16

New-AzVirtualNetworkSubnetConfig ile bir alt ağ yapılandırması oluşturun ve ardından Alt ağ yapılandırmasını Set-AzVirtualNetwork ile sanal ağa yazın. Aşağıdaki örnek, sanal ağa mySubnet adlı bir alt ağ ekler ve myNsg ağ güvenlik grubunu onunla ilişkilendirir:

Add-AzVirtualNetworkSubnetConfig `
  -Name mySubnet `
  -VirtualNetwork $virtualNetwork `
  -AddressPrefix "10.0.2.0/24" `
  -NetworkSecurityGroup $nsg
$virtualNetwork | Set-AzVirtualNetwork

Sanal makineleri oluşturma

VM'leri oluşturmadan önce Get-AzVirtualNetwork alt ağıyla sanal ağ nesnesini alın:

$virtualNetwork = Get-AzVirtualNetwork `
 -Name myVirtualNetwork `
 -Resourcegroupname myResourceGroup

New-AzPublicIpAddress ile her VM için bir genel IP adresi oluşturun:

$publicIpWeb = New-AzPublicIpAddress `
  -AllocationMethod Dynamic `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -Name myVmWeb

$publicIpMgmt = New-AzPublicIpAddress `
  -AllocationMethod Dynamic `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -Name myVmMgmt

New-AzNetworkInterface ile iki ağ arabirimi oluşturun ve ağ arabirimine bir genel IP adresi atayın. Aşağıdaki örnek bir ağ arabirimi oluşturur, myVmWeb genel IP adresini onunla ilişkilendirir ve myAsgWebServers uygulama güvenlik grubunun bir üyesi yapar:

$webNic = New-AzNetworkInterface `
  -Location eastus `
  -Name myVmWeb `
  -ResourceGroupName myResourceGroup `
  -SubnetId $virtualNetwork.Subnets[0].Id `
  -ApplicationSecurityGroupId $webAsg.Id `
  -PublicIpAddressId $publicIpWeb.Id

Aşağıdaki örnek bir ağ arabirimi oluşturur, myVmMgmt genel IP adresini onunla ilişkilendirir ve myAsgMgmtServers uygulama güvenlik grubunun bir üyesi yapar:

$mgmtNic = New-AzNetworkInterface `
  -Location eastus `
  -Name myVmMgmt `
  -ResourceGroupName myResourceGroup `
  -SubnetId $virtualNetwork.Subnets[0].Id `
  -ApplicationSecurityGroupId $mgmtAsg.Id `
  -PublicIpAddressId $publicIpMgmt.Id

Daha sonraki bir adımda trafik filtrelemesini doğrulayabilmek için sanal ağda iki VM oluşturun.

New-AzVMConfig ile bir VM yapılandırması oluşturun ve ardından New-AzVM ile VM'yi oluşturun. Aşağıdaki örnek, web sunucusu olarak görev yapacak bir VM oluşturur. -AsJob seçeneği, sonraki adıma devam edebilmeniz için arka planda sanal makineyi oluşturur:

# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."

$webVmConfig = New-AzVMConfig `
  -VMName myVmWeb `
  -VMSize Standard_DS1_V2 | `
Set-AzVMOperatingSystem -Windows `
  -ComputerName myVmWeb `
  -Credential $cred | `
Set-AzVMSourceImage `
  -PublisherName MicrosoftWindowsServer `
  -Offer WindowsServer `
  -Skus 2016-Datacenter `
  -Version latest | `
Add-AzVMNetworkInterface `
  -Id $webNic.Id
New-AzVM `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -VM $webVmConfig `
  -AsJob

Yönetim sunucusu olarak görev yapacak bir VM oluşturun:

# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."

# Create the web server virtual machine configuration and virtual machine.
$mgmtVmConfig = New-AzVMConfig `
  -VMName myVmMgmt `
  -VMSize Standard_DS1_V2 | `
Set-AzVMOperatingSystem -Windows `
  -ComputerName myVmMgmt `
  -Credential $cred | `
Set-AzVMSourceImage `
  -PublisherName MicrosoftWindowsServer `
  -Offer WindowsServer `
  -Skus 2016-Datacenter `
  -Version latest | `
Add-AzVMNetworkInterface `
  -Id $mgmtNic.Id
New-AzVM `
  -ResourceGroupName myResourceGroup `
  -Location eastus `
  -VM $mgmtVmConfig

Sanal makinenin oluşturulması birkaç dakika sürer. Azure VM oluşturma işlemini tamamlayana kadar sonraki adıma geçmeyin.

Trafik filtrelerini test etme

Bir VM'nin genel IP adresini döndürmek için Get-AzPublicIpAddress komutunu kullanın. Aşağıdaki örnek,myVmMgmt sanal makinesinin genel IP adresini döndürür:

Get-AzPublicIpAddress `
  -Name myVmMgmt `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

Yerel bilgisayarınızdan myVmMgmt ile bir uzak masaüstü oturumu oluşturmak için aşağıdaki komutu kullanın. <publicIpAddress> değerini önceki komutta döndürülen IP adresi ile değiştirin.

mstsc /v:<publicIpAddress>

İndirilen RDP dosyasını açın. İstendiğinde Bağlan’ı seçin.

Sanal makineyi oluştururken belirttiğiniz kullanıcı adını ve parolayı girin (sanal makineyi oluştururken girdiğiniz kimlik bilgilerini belirtmek için Diğer seçenekler’i ve sonra Farklı bir hesap kullan’ı seçmeniz gerekebilir), ardından Tamam’ı seçin. Oturum açma işlemi sırasında bir sertifika uyarısı alabilirsiniz. Bağlantıya devam etmek için Evet’i seçin.

myVmMgmt sanal makinesine bağlı ağ arabiriminin içinde bulunduğu myAsgMgmtServers uygulama güvenlik grubuna 3389 numaralı bağlantı noktasının internetten gelmesine izin verildiği için bağlantı başarılı olur.

PowerShell üzerinden myVmWeb sanal makinesi ile myVmMgmt sanal makinesi arasında bir uzak masaüstü bağlantısı oluşturmak için aşağıdaki komutu kullanın:

mstsc /v:myvmWeb

Her bir ağ güvenlik grubu içindeki varsayılan güvenlik kuralı bir sanal ağ içindeki tüm IP adresleri arasında tüm bağlantı noktaları üzerinden trafiğe izin verdiği için bağlantı başarılı olur. myAsgWebServers güvenlik kuralı internetten 3389 numaralı gelen bağlantı noktasına izin vermediği için myVmWeb sanal makinesi ile bir uzak masaüstü bağlantısı oluşturamazsınız.

PowerShell’den myVmWeb sanal makinesine Microsoft IIS yüklemek için aşağıdaki komutu kullanın:

Install-WindowsFeature -name Web-Server -IncludeManagementTools

IIS yüklemesi tamamlandıktan sonra myVmWeb sanal makinesinin bağlantısını kesmeniz durumunda myVmMgmt VM uzak masaüstü bağlantısında kalırsınız. IIS karşılama ekranını görüntülemek için bir internet tarayıcısı açın ve http://myVmWeb.

myVmMgmt sanal makinesiyle bağlantıyı kesin.

Bilgisayarınızda myVmWeb sunucusundan genel IP adresini almak için Powershell'den aşağıdaki komutu girin:

Get-AzPublicIpAddress `
  -Name myVmWeb `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

myVmWeb web sunucusuna Azure dışından erişebildiğinizi onaylamak için bilgisayarınızda bir internet tarayıcısı açın ve http://<public-ip-address-from-previous-step> sayfasına göz atın. myVmWeb sanal makinesine bağlı ağ arabiriminin içinde bulunduğu myAsgWebServers uygulama güvenlik grubuna 80 numaralı bağlantı noktasının internetten gelmesine izin verildiği için bağlantı başarılı olur.

Kaynakları temizleme

Artık gerekli olmadığında Remove-AzResourceGroup kullanarak kaynak grubunu ve içerdiği tüm kaynakları kaldırabilirsiniz:

Remove-AzResourceGroup -Name myResourceGroup -Force

Sonraki adımlar

Bu makalede, bir ağ güvenlik grubu oluşturdunuz ve bunu bir sanal ağ alt ağıyla ilişkilendirdiyseniz. Ağ güvenlik grupları hakkında daha fazla bilgi edinmek bkz. Ağ güvenlik grubuna genel bakış ve Ağ güvenlik grubunu yönetme.

Azure, varsayılan olarak trafiği alt ağlar arasında yönlendirir. Bunun yerine, alt ağlar arasındaki trafiği, örneğin, güvenlik duvarı olarak görev yapan bir VM aracılığıyla yönlendirmeyi seçebilirsiniz. Nasıl yapılacağını öğrenmek için bkz . Yol tablosu oluşturma.