PowerShell kullanarak bir ağ güvenlik grubu ile ağ trafiğini filtrelemeFilter network traffic with a network security group using PowerShell

Not

Bu makale yeni Azure PowerShell az modülünü kullanacak şekilde güncelleştirilmiştir.This article has been updated to use the new Azure PowerShell Az module. AzureRM modülünü kullanmaya devam edebilirsiniz, bu da en az Aralık 2020 ' e kadar hata düzeltmeleri almaya devam edecektir.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Yeni az Module ve Azurerd uyumluluğu hakkında daha fazla bilgi edinmek için, bkz. new Azure PowerShell konusuna giriş az Module.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az Module yükleme yönergeleri için bkz. yükleme Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Bir sanal ağ alt ağına gelen ve sanal ağ alt ağından giden ağ trafiğini, bir ağ güvenlik grubu ile filtreleyebilirsiniz.You can filter network traffic inbound to and outbound from a virtual network subnet with a network security group. Ağ güvenlik grupları, ağ trafiğini IP adresi, bağlantı noktası ve protokole göre filtreleyen güvenlik kuralları içerir.Network security groups contain security rules that filter network traffic by IP address, port, and protocol. Güvenlik kuralları bir alt ağda dağıtılmış kaynaklara uygulanır.Security rules are applied to resources deployed in a subnet. Bu makalede şunları öğreneceksiniz:In this article, you learn how to:

  • Ağ güvenlik grubu ve güvenlik kuralları oluşturmaCreate a network security group and security rules
  • Bir sanal ağ oluşturma ve ağ güvenlik grubunu alt ağ ile ilişkilendirmeCreate a virtual network and associate a network security group to a subnet
  • Sanal makineleri (VM) bir alt ağa dağıtmaDeploy virtual machines (VM) into a subnet
  • Trafik filtrelerini test etmeTest traffic filters

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don't have an Azure subscription, create a free account before you begin.

Azure Cloud Shell kullanmaUse Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı Azure Cloud Shell.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell, ya da bash PowerShell Azure hizmetleriyle çalışmak için kullanmanıza olanak sağlar.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Bu makaledeki kodu, yerel ortamınıza herhangi bir şey yüklemeye gerek kalmadan çalıştırmak için Cloud Shell önceden yüklenmiş komutları kullanabilirsiniz.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell başlatmak için:To launch Azure Cloud Shell:

SeçenekOption Örnek/bağlantıExample/Link
Kod bloğunun sağ üst köşesindeki Deneyin’i seçin.Select Try It in the upper-right corner of a code block. Dene ' nin seçilmesi, kodu Cloud Shell otomatik olarak kopyalamaz.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell için deneme örneği
Tarayıcınızda Cloud Shell açmak için Başlat Cloud Shell düğmesine gidin veyaseçin. https://shell.azure.comGo to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Cloud Shell yeni bir pencerede BaşlatLaunch Cloud Shell in a new window
Azure Portalsağ üstteki menü çubuğunda Cloud Shell düğmesini seçin.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure portaldaki Cloud Shell düğmesi

Bu makaledeki kodu Azure Cloud Shell çalıştırmak için:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell'i açın.Open Cloud Shell.
  2. Kodu kopyalamak için bir kod bloğunda Kopyala düğmesini seçin.Select the Copy button on a code block to copy the code.
  3. Kodu Windows ve Linux 'ta CTRL+SHIFT+v veya MacOS 'ta cmd+Shift+v ile Cloud Shell oturumuna yapıştırın.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Kodu çalıştırmak için ENTER tuşuna basın.Press Enter to run the code.

PowerShell'i yerel olarak yükleyip kullanmayı tercih ederseniz bu makale Azure PowerShell modülü sürüm 1.0.0 gerekir veya üzeri.If you choose to install and use PowerShell locally, this article requires the Azure PowerShell module version 1.0.0 or later. Yüklü sürümü bulmak için Get-Module -ListAvailable Az komutunu çalıştırın.Run Get-Module -ListAvailable Az to find the installed version. Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme.If you need to upgrade, see Install Azure PowerShell module. 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.If you are running PowerShell locally, you also need to run Connect-AzAccount to create a connection with Azure.

Ağ güvenlik grubu oluşturmaCreate a network security group

Bir ağ güvenlik grubu, güvenlik kuralları içerir.A network security group contains security rules. Güvenlik kuralları, bir kaynak ve hedefi belirtir.Security rules specify a source and destination. Kaynaklar ve hedefler, uygulama güvenlik grupları olabilir.Sources and destinations can be application security groups.

Uygulama güvenlik grupları oluşturmaCreate application security groups

Önce bu makalede oluşturulan tüm kaynakları için bir kaynak grubu oluşturma yeni AzResourceGroup.First create a resource group for all the resources created in this article with New-AzResourceGroup. Aşağıdaki örnekte eastus konumunda bir kaynak grubu oluşturulmaktadır:The following example creates a resource group in the eastus location:

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Bir uygulama güvenlik grubu oluşturun yeni AzApplicationSecurityGroup.Create an application security group with New-AzApplicationSecurityGroup. Uygulama güvenlik grubu, benzer bağlantı noktası filtreleme gereksinimlerine sahip sunucuları gruplandırmanızı sağlar.An application security group enables you to group servers with similar port filtering requirements. Aşağıdaki örnek iki uygulama güvenlik grubu oluşturur.The following example creates two application security groups.

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

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

Güvenlik kuralları oluşturmaCreate security rules

Bir güvenlik kuralı oluşturun yeni AzNetworkSecurityRuleConfig.Create a security rule with New-AzNetworkSecurityRuleConfig. 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:The following example creates a rule that allows traffic inbound from the internet to the myWebServers application security group over ports 80 and 443:

$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) için İnternet'e kullanıma sunulan myAsgMgmtServers VM.In this article, RDP (port 3389) is exposed to the internet for the myAsgMgmtServers VM. Ü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.For production environments, instead of exposing port 3389 to the internet, it's recommended that you connect to Azure resources that you want to manage using a VPN or private network connection.

Ağ güvenlik grubu oluşturmaCreate a network security group

Bir ağ güvenlik grubu oluşturun yeni AzNetworkSecurityGroup.Create a network security group with New-AzNetworkSecurityGroup. Aşağıdaki örnek myNsg adlı bir ağ güvenlik grubu oluşturur:The following example creates a network security group named myNsg:

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

Sanal ağ oluşturmaCreate a virtual network

İle sanal ağ oluşturma yeni AzVirtualNetwork.Create a virtual network with New-AzVirtualNetwork. Aşağıdaki örnek myVirtualNetwork adlı bir sanal ağ oluşturur:The following example creates a virtual named myVirtualNetwork:

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

Bir alt ağ yapılandırması ile yeni AzVirtualNetworkSubnetConfigve ardından sanal ağ alt ağ yapılandırmasını yazma kümesi AzVirtualNetwork.Create a subnet configuration with New-AzVirtualNetworkSubnetConfig, and then write the subnet configuration to the virtual network with Set-AzVirtualNetwork. Aşağıdaki örnek, sanal ağa mySubnet adlı bir alt ağ ekler ve myNsg ağ güvenlik grubunu onunla ilişkilendirir:The following example adds a subnet named mySubnet to the virtual network and associates the myNsg network security group to it:

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

Sanal makineler oluşturmaCreate virtual machines

Vm'leri oluşturmadan önce alt ağ ile sanal ağ nesnesini almak Get-AzVirtualNetwork:Before creating the VMs, retrieve the virtual network object with the subnet with Get-AzVirtualNetwork:

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

Her VM için genel bir IP adresi oluşturma yeni AzPublicIpAddress:Create a public IP address for each VM with New-AzPublicIpAddress:

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

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

İle iki ağ arabirimi yeni AzNetworkInterfaceve ağ arabiriminde genel IP adresi atayın.Create two network interfaces with New-AzNetworkInterface, and assign a public IP address to the network interface. 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:The following example creates a network interface, associates the myVmWeb public IP address to it, and makes it a member of the myAsgWebServers application security group:

$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:The following example creates a network interface, associates the myVmMgmt public IP address to it, and makes it a member of the myAsgMgmtServers application security group:

$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.Create two VMs in the virtual network so you can validate traffic filtering in a later step.

İle bir VM yapılandırması oluşturun yeni AzVMConfig, VM ile oluşturup New-AzVM.Create a VM configuration with New-AzVMConfig, then create the VM with New-AzVM. Aşağıdaki örnek, web sunucusu olarak görev yapacak bir VM oluşturur.The following example creates a VM that will serve as a web server. -AsJob seçeneği, sonraki adıma devam edebilmeniz için arka planda sanal makineyi oluşturur:The -AsJob option creates the VM in the background, so you can continue to the next step:

# 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 a VM to serve as a management server:

# 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.The virtual machine takes a few minutes to create. Azure VM oluşturma işlemini tamamlayana kadar sonraki adıma geçmeyin.Don't continue with the next step until Azure finishes creating the VM.

Trafik filtrelerini test etmeTest traffic filters

Kullanım Get-AzPublicIpAddress bir VM'nin genel IP adresini döndürmek için.Use Get-AzPublicIpAddress to return the public IP address of a VM. Aşağıdaki örnek,myVmMgmt sanal makinesinin genel IP adresini döndürür:The following example returns the public IP address of the myVmMgmt VM:

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.Use the following command to create a remote desktop session with the myVmMgmt VM from your local computer. <publicIpAddress> değerini önceki komutta döndürülen IP adresi ile değiştirin.Replace <publicIpAddress> with the IP address returned from the previous command.

mstsc /v:<publicIpAddress>

İndirilen RDP dosyasını açın.Open the downloaded RDP file. İstendiğinde Bağlan’ı seçin.If prompted, select Connect.

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.Enter the user name and password you specified when creating the VM (you may need to select More choices, then Use a different account, to specify the credentials you entered when you created the VM), then select OK. Oturum açma işlemi sırasında bir sertifika uyarısı alabilirsiniz.You may receive a certificate warning during the sign-in process. Bağlantıya devam etmek için Evet’i seçin.Select Yes to proceed with the connection.

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.The connection succeeds, because port 3389 is allowed inbound from the internet to the myAsgMgmtServers application security group that the network interface attached to the myVmMgmt VM is in.

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:Use the following command to create a remote desktop connection to the myVmWeb VM, from the myVmMgmt VM, with the following command, from PowerShell:

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.The connection succeeds because a default security rule within each network security group allows traffic over all ports between all IP addresses within a virtual network. 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.You can't create a remote desktop connection to the myVmWeb VM from the internet because the security rule for the myAsgWebServers doesn't allow port 3389 inbound from the internet.

PowerShell’den myVmWeb sanal makinesine Microsoft IIS yüklemek için aşağıdaki komutu kullanın:Use the following command to install Microsoft IIS on the myVmWeb VM from PowerShell:

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.After the IIS installation is complete, disconnect from the myVmWeb VM, which leaves you in the myVmMgmt VM remote desktop connection. IIS giriş ekranını görüntülemek için bir internet tarayıcısı açın ve http için göz atın://myVmWeb.To view the IIS welcome screen, open an internet browser and browse to http://myVmWeb.

myVmMgmt sanal makinesiyle bağlantıyı kesin.Disconnect from the myVmMgmt VM.

Bilgisayarınızda myVmWeb sunucusundan genel IP adresini almak için Powershell'den aşağıdaki komutu girin:On your computer, enter the following command from PowerShell to retrieve the public IP address of the myVmWeb server:

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.To confirm that you can access the myVmWeb web server from outside of Azure, open an internet browser on your computer and browse to http://<public-ip-address-from-previous-step>. 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.The connection succeeds, because port 80 is allowed inbound from the internet to the myAsgWebServers application security group that the network interface attached to the myVmWeb VM is in.

Kaynakları temizlemeClean up resources

Artık gerekli değilse Remove-AzResourceGroup kaynak grubunu ve içerdiği tüm kaynakları kaldırmak için:When no longer needed, you can use Remove-AzResourceGroup to remove the resource group and all of the resources it contains:

Remove-AzResourceGroup -Name myResourceGroup -Force

Sonraki adımlarNext steps

Bu makalede, bir ağ güvenlik grubu oluşturdunuz ve bir sanal ağ alt ağ ile ilişkilendirilmiş.In this article, you created a network security group and associated it to a virtual network subnet. Ağ güvenlik grupları hakkında daha fazla bilgi edinmek bkz. Ağ güvenlik grubuna genel bakış ve Ağ güvenlik grubunu yönetme.To learn more about network security groups, see Network security group overview and Manage a network security group.

Azure, varsayılan olarak trafiği alt ağlar arasında yönlendirir.Azure routes traffic between subnets by default. 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.You may instead, choose to route traffic between subnets through a VM, serving as a firewall, for example. Bilgi edinmek için bkz. nasıl yönlendirme tablosu oluşturma.To learn how, see Create a route table.