Azure kaynaklarınıza gelen ve giden ağ trafiğini filtrelemek ve denetlemek için ağ güvenlik gruplarını kullanabilirsiniz. Ağ trafiğini denetlemek için Azure kaynaklarınıza yönetici güvenlik kuralları uygulamak için Azure Sanal Ağ Yöneticisi'ni de kullanabilirsiniz.
Bu makalede, Azure trafiğinize uygulanan güvenlik kurallarını denetlemek ve sorunlarını gidermek için Azure Ağ İzleyicisi NSG tanılamasını kullanmayı öğreneceksiniz. NSG tanılaması, uygulanan güvenlik kuralları tarafından trafiğe izin verilip verilmediğini denetler.
Bu makaledeki örnekte, yanlış yapılandırılmış bir ağ güvenlik grubunun bir sanal makineye bağlanmak için Azure Bastion'ı kullanmanızı nasıl engelleyebileceği gösterilmektedir.
Etkin aboneliği olan bir Azure hesabı. ücretsiz bir hesap oluşturun.
Azure Cloud Shell veya Azure PowerShell.
Bu makaledeki adımlar Azure Cloud Shell'de Azure PowerShell cmdlet'lerini etkileşimli olarak çalıştırır. Komutları Cloud Shell'de çalıştırmak için kod bloğunun sağ üst köşesindeki Cloud Shell'i Aç'ı seçin. Kodu kopyalamak için Kopyala'yı seçin ve çalıştırmak için Cloud Shell'e yapıştırın. Cloud Shell'i Azure portalından da çalıştırabilirsiniz.
Cmdlet'leri çalıştırmak için Azure PowerShell'i yerel olarak da yükleyebilirsiniz. Bu makale, Az PowerShell modülünü gerektirir. Daha fazla bilgi için bkz . Azure PowerShell'i yükleme. Yüklü sürümü bulmak için Get-InstalledModule -Name Az komutunu çalıştırın. PowerShell'i yerel olarak çalıştırıyorsanız Bağlan-AzAccount cmdlet'ini kullanarak Azure'da oturum açın.
Etkin aboneliği olan bir Azure hesabı. ücretsiz bir hesap oluşturun.
Azure Cloud Shell veya Azure CLI.
Bu makaledeki adımlar, Azure Cloud Shell'de Azure CLI komutlarını etkileşimli olarak çalıştırır. Komutları Cloud Shell'de çalıştırmak için kod bloğunun sağ üst köşesindeki Cloud Shell'i Aç'ı seçin. Kodu kopyalamak için Kopyala'yı seçin ve çalıştırmak için Cloud Shell'e yapıştırın. Cloud Shell'i Azure portalından da çalıştırabilirsiniz.
Komutları çalıştırmak için Azure CLI'yi yerel olarak da yükleyebilirsiniz. Azure CLI'yı yerel olarak çalıştırıyorsanız az login komutunu kullanarak Azure'da oturum açın .
Sanal ağ ve Bastion konağı oluşturma
Bu bölümde, iki alt ağ ve bir Azure Bastion konağı ile bir sanal ağ oluşturacaksınız. İlk alt ağ sanal makine için, ikinci alt ağ ise Bastion konağı için kullanılır. Ayrıca bir ağ güvenlik grubu oluşturur ve bunu ilk alt ağa uygularsınız.
+Oluştur'u seçin. Sanal ağ oluştur bölümünde Temel Bilgiler sekmesinde aşağıdaki değerleri girin veya seçin:
Ayar
Value
Proje Ayrıntıları
Abonelik
Azure aboneliği seçin.
Kaynak Grubu
Yeni oluştur’u seçin. Ad alanına myResourceGroup girin. Tamam'ı seçin.
Örnek ayrıntıları
Sanal ağın adı
myVNet yazın.
Bölge
(ABD) Doğu ABD'yi seçin.
Güvenlik sekmesini seçin veya sayfanın en altındaki İleri düğmesini seçin.
Azure Bastion'ın altında Azure Bastion'ı etkinleştir'i seçin ve varsayılan değerleri kabul edin:
Ayar
Value
Azure Bastion ana bilgisayar adı
myVNet-Bastion.
Azure Bastion genel IP Adresi
(Yeni) myVNet-bastion-publicIpAddress.
IP Adresleri sekmesini seçin veya sayfanın en altındaki İleri düğmesini seçin.
10.0.0.0/16 varsayılan IP adresi alanını kabul edin ve kalem simgesini seçerek varsayılan alt ağı düzenleyin. Alt ağı düzenle sayfasında aşağıdaki değerleri girin:
Ayar
Value
Alt ağ ayrıntıları
Veri Akışı Adı
mySubnet girin.
Güvenlik
Ağ güvenlik grubu
Yeni oluştur’u seçin. Ad alanına mySubnet-nsg girin. Tamam'ı seçin.
Gözden Geçir ve oluştur'u seçin.
Ayarları gözden geçirin ve oluştur'u seçin.
New-AzResourceGroup kullanarak bir kaynak grubu oluşturun. Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.
# Create a resource group.
New-AzResourceGroup -Name 'myResourceGroup' -Location 'eastus'
New-AzNetworkSecurityGroup kullanarak varsayılan bir ağ güvenlik grubu oluşturun.
New-AzPublicIpAddress komutunu kullanarak Bastion konağı için gereken genel IP adresi kaynağını oluşturun.
# Create a public IP address for Azure Bastion.
New-AzPublicIpAddress -ResourceGroupName 'myResourceGroup' -Name 'myBastionIp' -Location 'eastus' -AllocationMethod 'Static' -Sku 'Standard'
New-AzBastion kullanarak Bastion konağı oluşturun.
Saatlik fiyatlandırma, giden veri kullanımına bakılmaksızın Bastion ana bilgisayarı dağıtıldığından başlar. Daha fazla bilgi için bkz. Fiyatlandırma. Bu kaynağı kullanmayı bitirdikten sonra silmenizi öneririz.
Sanal makine oluşturun
Bu bölümde, bir sanal makine ve ağ arabirimine uygulanan bir ağ güvenlik grubu oluşturacaksınız.
# Create a default network security group.
az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
az vm create komutunu kullanarak bir sanal makine oluşturun. İstendiğinde, bir kullanıcı adı ve parola girin.
# Create a virtual machine using the latest Windows Server 2022 image.
az vm create --resource-group 'myResourceGroup' --name 'myVM' --location 'eastus' --vnet-name 'myVNet' --subnet 'mySubnet' --public-ip-address '' --nsg 'myVM-nsg' --image 'Win2022AzureEditionCore'
Ağ güvenlik grubuna güvenlik kuralı ekleme
Bu bölümde, myVM'nin ağ arabirimiyle ilişkili ağ güvenlik grubuna bir güvenlik kuralı eklersiniz. Kural, sanal ağdan gelen trafiği reddeder.
Portalın üst kısmındaki arama kutusuna ağ güvenlik grupları girin. Arama sonuçlarında Ağ güvenlik grupları'nı seçin.
Ağ güvenlik grupları listesinden myVM-nsg öğesini seçin.
Ayarlar altında Gelen güvenlik kuralları’nı seçin.
+ Ekle'yi seçin. Ağ sekmesinde aşağıdaki değerleri girin veya seçin:
Ayar
Değer
Source
Hizmet Etiketi'ne tıklayın.
Kaynak hizmeti etiketi
VirtualNetwork'i seçin.
Kaynak bağlantı noktası aralıkları
Girin*.
Hedef
Herhangi birini seçin.
Hizmet
Özel'i seçin.
Hedef bağlantı noktası aralıkları
Girin*.
Protokol
Herhangi birini seçin.
Eylem
Reddet'i seçin.
Öncelik
1000 girin.
Veri Akışı Adı
DenyVnetInBound girin.
Ekle'yi seçin.
Add-AzNetworkSecurityRuleConfig komutunu kullanarak sanal ağdan gelen trafiği reddeden bir güvenlik kuralı oluşturun. Ardından Set-AzNetworkSecurityGroup komutunu kullanarak ağ güvenlik grubunu yeni güvenlik kuralıyla güncelleştirin.
# Place the network security group configuration into a variable.
$networkSecurityGroup = Get-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup'
# Create a security rule that denies inbound traffic from the virtual network service tag.
Add-AzNetworkSecurityRuleConfig -Name 'DenyVnetInBound' -NetworkSecurityGroup $networkSecurityGroup `
-Access 'Deny' -Protocol '*' -Direction 'Inbound' -Priority '1000' `
-SourceAddressPrefix 'virtualNetwork' -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '*'
# Updates the network security group.
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $networkSecurityGroup
Ağ güvenlik grubuna sanal ağdan gelen trafiği engelleyen bir güvenlik kuralı eklemek için az network nsg rule create komutunu kullanın.
# Add to the network security group a security rule that denies inbound traffic from the virtual network service tag.
az network nsg rule create --name 'DenyVnetInBound' --resource-group 'myResourceGroup' --nsg-name 'myVM-nsg' --priority '1000' \
--access 'Deny' --protocol '*' --direction 'Inbound' --source-address-prefixes 'virtualNetwork' --source-port-ranges '*' \
--destination-address-prefixes '*' --destination-port-ranges '*'
Not
VirtualNetwork hizmet etiketi, sanal ağın adres alanını, tüm bağlı şirket içi adres alanlarını, eşlenmiş sanal ağları, sanal ağ geçidine bağlı sanal ağları, konağın sanal IP adresini ve kullanıcı tanımlı yollarda kullanılan adres ön eklerini temsil eder. Daha fazla bilgi için bkz . Hizmet etiketleri.
Sanal makine trafiğine uygulanan güvenlik kurallarını denetleme
Bastion alt ağından sanal makineye gelen trafiğe uygulanan güvenlik kurallarını denetlemek için NSG tanılamasını kullanın.
Portalın üst kısmındaki arama kutusunda Ağ İzleyicisi arayın ve seçin.
Ağ tanılama araçları'nın altında NSG tanılaması'nı seçin.
NSG tanılama sayfasında aşağıdaki değerleri girin veya seçin:
Ayar
Value
Hedef kaynak
Hedef kaynak türü
Sanal makine'yi seçin.
Sanal makine
myVM sanal makinesi'ne tıklayın.
Trafik ayrıntıları
Protokol
TCP’yi seçin. Diğer kullanılabilir seçenekler şunlardır: Tümü, UDP ve ICMP.
Yön
Gelen'i seçin. Diğer kullanılabilir seçenek: Giden.
Source type
IPv4 adresi/CIDR'yi seçin. Diğer kullanılabilir seçenek: Hizmet Etiketi.
IPv4 adresi/CIDR
Bastion alt ağdaki IP adresi aralığı olan 10.0.1.0/26 girin. Kabul edilebilir değerler şunlardır: tek IP adresi, birden çok IP adresi, tek IP ön eki, birden çok IP ön eki.
Hedef IP adresi
myVM'nin IP adresi olan 10.0.0.4 varsayılanını değiştirmeyin.
Hedef bağlantı noktası
Tüm bağlantı noktalarını eklemek için * girin.
Testi çalıştırmak için NSG tanılamasını çalıştır'ı seçin. NSG tanılaması tüm güvenlik kurallarını denetlemeyi tamamladıktan sonra sonucu görüntüler.
Sonuç, Bastion alt ağından gelen bağlantı için değerlendirilen üç güvenlik kuralı olduğunu gösterir:
GlobalRules: Bu güvenlik yöneticisi kuralı Azure Sanal Ağ Yönet kullanılarak sanal ağ düzeyinde uygulanır. Kural, Bastion alt ağından sanal makineye gelen TCP trafiğine izin verir.
mySubnet-nsg: Bu ağ güvenlik grubu alt ağ düzeyinde (sanal makinenin alt ağı) uygulanır. Kural, Bastion alt ağından sanal makineye gelen TCP trafiğine izin verir.
myVM-nsg: Bu ağ güvenlik grubu, ağ arabirimi (NIC) düzeyinde uygulanır. Kural, Bastion alt ağından sanal makineye gelen TCP trafiğini reddeder.
Bu ağ güvenlik grubunun sahip olduğu güvenlik kuralları ve trafiği reddeden kural hakkındaki ayrıntıları görmek için myVM-nsg ayrıntılarını görüntüle'yi seçin.
myVM-nsg ağ güvenlik grubunda DenyVnetInBound güvenlik kuralı, VirtualNetwork hizmet etiketinin adres alanından sanal makineye gelen trafiği reddeder. Bastion konağı, sanal makineye bağlanmak için VirtualNetwork hizmet etiketine dahil edilen 10.0.1.0/26 adres aralığındaki IP adreslerini kullanır. Bu nedenle, Bastion konağından gelen bağlantı DenyVnetInBound güvenlik kuralı tarafından reddedilir.
NSG tanılama oturumunu başlatmak için Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic komutunu kullanın.
# Create a profile for the diagnostic session.
$profile = New-AzNetworkWatcherNetworkConfigurationDiagnosticProfile -Direction Inbound -Protocol Tcp -Source 10.0.1.0/26 -Destination 10.0.0.4 -DestinationPort *
# Place the virtual machine configuration into a variable.
$vm = Get-AzVM -Name 'myVM' -ResourceGroupName 'myResourceGroup'
# Start the the NSG diagnostics session.
Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic -Location 'eastus' -TargetResourceId $vm.Id -Profile $profile | Format-List
Aşağıdaki örnek çıktıya benzer bir çıkış döndürülür:
Sonuç, Bastion alt ağından gelen bağlantı için değerlendirilen üç güvenlik kuralı olduğunu gösterir:
GlobalRules: Bu güvenlik yöneticisi kuralı Azure Sanal Ağ Yönet kullanılarak sanal ağ düzeyinde uygulanır. Kural, Bastion alt ağından sanal makineye gelen TCP trafiğine izin verir.
mySubnet-nsg: Bu ağ güvenlik grubu alt ağ düzeyinde (sanal makinenin alt ağı) uygulanır. Kural, Bastion alt ağından sanal makineye gelen TCP trafiğine izin verir.
myVM-nsg: Bu ağ güvenlik grubu, ağ arabirimi (NIC) düzeyinde uygulanır. Kural, Bastion alt ağından sanal makineye gelen TCP trafiğini reddeder.
myVM-nsg ağ güvenlik grubunda DenyVnetInBound güvenlik kuralı, VirtualNetwork hizmet etiketinin adres alanından sanal makineye gelen trafiği reddeder. Bastion konağı, sanal makineye bağlanmak için VirtualNetwork hizmet etiketi dahil 10.0.1.0/26 ip adreslerini kullanır. Bu nedenle, Bastion konağından gelen bağlantı DenyVnetInBound güvenlik kuralı tarafından reddedilir.
NSG tanılama oturumunu başlatmak için az network watcher run-configuration-diagnostic komutunu kullanın.
# Start the the NSG diagnostics session.
az network watcher run-configuration-diagnostic --resource 'myVM' --resource-group 'myResourceGroup' --resource-type 'virtualMachines' --direction 'Inbound' --protocol 'TCP' --source '10.0.1.0/26' --destination '10.0.0.4' --port '*'
Aşağıdaki örnek çıktıya benzer bir çıkış döndürülür:
Sonuç, Bastion alt ağından gelen bağlantı için değerlendirilen üç güvenlik kuralı olduğunu gösterir:
GlobalRules: Bu güvenlik yöneticisi kuralı Azure Sanal Ağ Yönet kullanılarak sanal ağ düzeyinde uygulanır. Kural, Bastion alt ağından sanal makineye gelen TCP trafiğine izin verir.
mySubnet-nsg: Bu ağ güvenlik grubu alt ağ düzeyinde (sanal makinenin alt ağı) uygulanır. Kural, Bastion alt ağından sanal makineye gelen TCP trafiğine izin verir.
myVM-nsg: Bu ağ güvenlik grubu, ağ arabirimi (NIC) düzeyinde uygulanır. Kural, Bastion alt ağından sanal makineye gelen TCP trafiğini reddeder.
myVM-nsg ağ güvenlik grubunda DenyVnetInBound güvenlik kuralı, VirtualNetwork hizmet etiketinin adres alanından sanal makineye gelen trafiği reddeder. Bastion konağı, sanal makineye bağlanmak için VirtualNetwork hizmet etiketi dahil 10.0.1.0/26 ip adreslerini kullanır. Bu nedenle, Bastion konağından gelen bağlantı DenyVnetInBound güvenlik kuralı tarafından reddedilir.
Bastion alt ağından gelen trafiğe izin vermek için güvenlik kuralı ekleme
Azure Bastion kullanarak myVM'ye bağlanmak için, Bastion alt ağından gelen trafiğe ağ güvenlik grubu tarafından izin verilmelidir. 10.0.1.0/26'dan gelen trafiğe izin vermek için DenyVnetInBound kuralından daha yüksek öncelikli (düşük öncelikli) bir güvenlik kuralı ekleyin veya DenyVnetInBound kuralını Bastion alt ağından gelen trafiğe izin verecek şekilde düzenleyin.
Güvenlik kuralını, sanal makineye gelen trafiği reddeden güvenlik kuralıyla ilgili ayrıntıları gösteren Ağ İzleyicisi sayfasından ağ güvenlik grubuna ekleyebilirsiniz.
Güvenlik kuralını Ağ İzleyicisi içinden eklemek için + Güvenlik kuralı ekle'yi seçin ve ardından aşağıdaki değerleri girin veya seçin:
Ayar
Değer
Source
IP Adresleri'ne tıklayın.
Kaynak IP adresleri/CIDR aralıkları
Bastion alt ağdaki IP adresi aralığı olan 10.0.1.0/26 girin.
Kaynak bağlantı noktası aralıkları
Girin*.
Hedef
Herhangi birini seçin.
Hizmet
Özel'i seçin.
Hedef bağlantı noktası aralıkları
Girin*.
Protokol
Herhangi birini seçin.
Eylem
İzin ver'i seçin.
Öncelik
DenyVnetInBound kuralı için kullanılan 1000'den yüksek öncelikli 900 girin.
Veri Akışı Adı
AllowBastion Bağlan ions girin.
Tanılama oturumunu yeniden çalıştırmak için Yeniden Denetle'yi seçin. Tanılama oturumu artık Bastion alt ağından gelen trafiğe izin verildiğini göstermelidir.
AllowBastion Bağlan ions güvenlik kuralı, 10.0.1.0/26'daki herhangi bir IP adresinden sanal makineye giden trafiğe izin verir. Bastion konağı 10.0.1.0/26'dan IP adreslerini kullandığından, AllowBastion Bağlan ions güvenlik kuralı tarafından sanal makineyle bağlantısına izin verilir.
Bastion alt ağından gelen trafiğe izin veren bir güvenlik kuralı oluşturmak için Add-AzNetworkSecurityRuleConfig komutunu kullanın. Ardından Set-AzNetworkSecurityGroup komutunu kullanarak ağ güvenlik grubunu yeni güvenlik kuralıyla güncelleştirin.
# Place the network security group configuration into a variable.
$networkSecurityGroup = Get-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup'
# Create a security rule.
Add-AzNetworkSecurityRuleConfig -Name 'AllowBastionConnections' -NetworkSecurityGroup $networkSecurityGroup -Priority '900' -Access 'Allow' `
-Protocol '*' -Direction 'Inbound' -SourceAddressPrefix '10.0.1.0/26' -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '*'
# Updates the network security group.
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $networkSecurityGroup
Yeni bir NSG tanılama oturumu kullanarak yeniden denetlemek için Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic komutunu kullanın.
# Create a profile for the diagnostic session.
$profile = New-AzNetworkWatcherNetworkConfigurationDiagnosticProfile -Direction 'Inbound' -Protocol 'Tcp' -Source '10.0.1.0/26' -Destination '10.0.0.4' -DestinationPort '*'
# Place the virtual machine configuration into a variable.
$vm = Get-AzVM -Name 'myVM' -ResourceGroupName 'myResourceGroup'
# Start the diagnostic session.
Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic -Location 'eastus' -TargetResourceId $vm.Id -Profile $profile | Format-List
Aşağıdaki örnek çıktıya benzer bir çıkış döndürülür:
AllowBastion Bağlan ions güvenlik kuralı, 10.0.1.0/26'daki herhangi bir IP adresinden sanal makineye giden trafiğe izin verir. Bastion konağı 10.0.1.0/26'dan IP adreslerini kullandığından, AllowBastion Bağlan ions güvenlik kuralı tarafından sanal makineyle bağlantısına izin verilir.
Ağ güvenlik grubuna Bastion alt ağından gelen trafiğe izin veren bir güvenlik kuralı eklemek için az network nsg rule create komutunu kullanın.
# Add a security rule to the network security group.
az network nsg rule create --name 'AllowBastionConnections' --resource-group 'myResourceGroup' --nsg-name 'myVM-nsg' --priority '900' \
--access 'Allow' --protocol '*' --direction 'Inbound' --source-address-prefixes '10.0.1.0/26' --source-port-ranges '*' \
--destination-address-prefixes '*' --destination-port-ranges '*'
Yeni bir NSG tanılama oturumu kullanarak yeniden denetlemek için az network watcher run-configuration-diagnostic komutunu kullanın.
# Start the the NSG diagnostics session.
az network watcher run-configuration-diagnostic --resource 'myVM' --resource-group 'myResourceGroup' --resource-type 'virtualMachines' --direction 'Inbound' --protocol 'TCP' --source '10.0.1.0/26' --destination '10.0.0.4' --port '*'
Aşağıdaki örnek çıktıya benzer bir çıkış döndürülür:
AllowBastion Bağlan ions güvenlik kuralı, 10.0.1.0/26'daki herhangi bir IP adresinden sanal makineye giden trafiğe izin verir. Bastion konağı 10.0.1.0/26'dan IP adreslerini kullandığından, AllowBastion Bağlan ions güvenlik kuralı tarafından sanal makineyle bağlantısına izin verilir.
Kaynakları temizleme
Artık gerekli olmadığında kaynak grubunu ve içerdiği tüm kaynakları silin: