W tym artykule dowiesz się, jak używać diagnostyki NSG w usłudze Azure Network Watcher do sprawdzania i rozwiązywania problemów związanych z regułami zabezpieczeń, które są stosowane do ruchu w Azure za pośrednictwem grup zabezpieczeń sieciowych i usługi Azure Virtual Network Manager. Diagnostyka NSG sprawdza, czy ruch jest dozwolony lub odrzucony przez zastosowane reguły zabezpieczeń.
W przykładzie w tym artykule pokazano, jak nieprawidłowo skonfigurowana sieciowa grupa zabezpieczeń może uniemożliwić nawiązywanie połączenia z maszyną wirtualną przy użyciu usługi Azure Bastion.
Wymagania wstępne
Konto platformy Azure z aktywną subskrypcją.
Utwórz konto bezpłatnie.
Azure Cloud Shell lub Azure PowerShell.
Kroki opisane w tym artykule uruchamiają interaktywne polecenia cmdlet programu Azure PowerShell w usłudze Azure Cloud Shell. Aby uruchomić polecenia w usłudze Cloud Shell, wybierz pozycję Otwórz usługę Cloud Shell w prawym górnym rogu bloku kodu. Wybierz pozycję Kopiuj , aby skopiować kod, a następnie wklej go w usłudze Cloud Shell, aby go uruchomić. Możesz również uruchomić usługę Cloud Shell z poziomu witryny Azure Portal.
Możesz również zainstalować program Azure PowerShell lokalnie, aby uruchomić polecenia cmdlet. Ten artykuł wymaga modułu Az programu PowerShell. Aby uzyskać więcej informacji, zobacz How to install Azure PowerShell (Jak zainstalować program Azure PowerShell). Aby dowiedzieć się, jaka wersja została zainstalowana, uruchom polecenie Get-InstalledModule -Name Az. Jeśli uruchomisz program PowerShell lokalnie, zaloguj się do platformy Azure przy użyciu polecenia cmdlet Connect-AzAccount .
Konto platformy Azure z aktywną subskrypcją.
Utwórz konto bezpłatnie.
Azure Cloud Shell lub interfejs wiersza polecenia platformy Azure.
Kroki opisane w tym artykule umożliwiają interaktywne uruchamianie poleceń interfejsu wiersza polecenia platformy Azure w usłudze Azure Cloud Shell. Aby uruchomić polecenia w usłudze Cloud Shell, wybierz pozycję Otwórz usługę Cloud Shell w prawym górnym rogu bloku kodu. Wybierz pozycję Kopiuj , aby skopiować kod i wklej go w usłudze Cloud Shell, aby go uruchomić. Możesz również uruchomić usługę Cloud Shell z poziomu witryny Azure Portal.
Możesz również zainstalować interfejs wiersza polecenia platformy Azure lokalnie , aby uruchomić polecenia. Jeśli uruchomisz Azure CLI lokalnie, zaloguj się do Azure przy użyciu polecenia az login.
Utwórz sieć wirtualną i hosta usługi Bastion
W tej sekcji utworzysz sieć wirtualną z dwiema podsieciami i hostem usługi Azure Bastion. Pierwsza podsieć jest używana dla maszyny wirtualnej, a druga podsieć jest używana dla hosta usługi Bastion. Utworzysz również sieciową grupę zabezpieczeń i zastosujesz ją do pierwszej podsieci.
W polu wyszukiwania w górnej części portalu wprowadź sieci wirtualne. Wybierz pozycję Sieci wirtualne z wyników wyszukiwania.
Wybierz + Utwórz. W obszarze Tworzenie sieci wirtualnej wprowadź lub wybierz następujące wartości na karcie Podstawy :
| Ustawienie |
Wartość |
|
Szczegóły projektu |
|
| Subskrypcja |
Wybierz subskrypcję platformy Azure. |
| Grupa zasobów |
Wybierz pozycjęUtwórz nowy.
Wprowadź wartość myResourceGroup w polu Nazwa.
Wybierz przycisk OK. |
|
Szczegóły wystąpienia |
|
| Nazwa sieci wirtualnej |
Wprowadź myVNet. |
| Rejon |
Wybierz (USA) Wschodnie USA. |
Wybierz kartę Zabezpieczenia lub wybierz przycisk Dalej w dolnej części strony.
W obszarze Azure Bastion wybierz pozycję Włącz usługę Azure Bastion i zaakceptuj wartości domyślne:
| Ustawienie |
Wartość |
| Nazwa hosta usługi Azure Bastion |
myVNet-Bastion. |
| Publiczny adres IP usługi Azure Bastion |
(Nowy) myVNet-bastion-publicIpAddress. |
Wybierz kartę Adresy IP lub wybierz przycisk Dalej w dolnej części strony.
Zaakceptuj domyślną przestrzeń adresową IP 10.0.0.0/16 i edytuj domyślną podsieć, wybierając ikonę ołówka. Na stronie Edytowanie podsieci wprowadź następujące wartości:
| Ustawienie |
Wartość |
|
Szczegóły podsieci |
|
| Nazwisko |
Wprowadź mySubnet. |
|
Bezpieczeństwo |
|
| Sieciowa grupa zabezpieczeń |
Wybierz pozycjęUtwórz nowy.
Wprowadź mySubnet-nsg w polu Nazwa.
Wybierz przycisk OK. |
Wybierz Przejrzyj i utwórz.
Przejrzyj ustawienia, a następnie wybierz pozycję Utwórz.
Utwórz grupę zasobów przy użyciu polecenia New-AzResourceGroup. Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.
# Create a resource group.
New-AzResourceGroup -Name 'myResourceGroup' -Location 'eastus'
Utwórz domyślną sieciową grupę zabezpieczeń przy użyciu polecenia New-AzNetworkSecurityGroup.
# Create a network security group.
$networkSecurityGroup = New-AzNetworkSecurityGroup -Name 'mySubnet-nsg' -ResourceGroupName 'myResourceGroup' -Location 'eastus'
Utwórz konfigurację dla podsieci maszyny wirtualnej i podsieci hosta bastionu, używając polecenia New-AzVirtualNetworkSubnetConfig.
# Create subnets configuration.
$firstSubnet = New-AzVirtualNetworkSubnetConfig -Name 'mySubnet' -AddressPrefix '10.0.0.0/24' -NetworkSecurityGroup $networkSecurityGroup
$secondSubnet = New-AzVirtualNetworkSubnetConfig -Name 'AzureBastionSubnet' -AddressPrefix '10.0.1.0/26'
Utwórz sieć wirtualną przy użyciu polecenia New-AzVirtualNetwork.
# Create a virtual network.
$vnet = New-AzVirtualNetwork -Name 'myVNet' -ResourceGroupName 'myResourceGroup' -Location 'eastus' -AddressPrefix '10.0.0.0/16' -Subnet $firstSubnet, $secondSubnet
Utwórz zasób publicznego adresu IP wymagany dla hosta usługi Bastion przy użyciu polecenia New-AzPublicIpAddress.
# Create a public IP address for Azure Bastion.
New-AzPublicIpAddress -ResourceGroupName 'myResourceGroup' -Name 'myBastionIp' -Location 'eastus' -AllocationMethod 'Static' -Sku 'Standard'
Utwórz hosta usługi Bastion przy użyciu polecenia New-AzBastion.
# Create an Azure Bastion host.
New-AzBastion -ResourceGroupName 'myResourceGroup' -Name 'myVNet-Bastion' -PublicIpAddressRgName 'myResourceGroup' -PublicIpAddressName 'myBastionIp' -VirtualNetwork $vnet
Utwórz grupę zasobów za pomocą polecenia az group create. Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.
# Create a resource group.
az group create --name 'myResourceGroup' --location 'eastus'
Utwórz domyślną sieciową grupę zabezpieczeń przy użyciu polecenia az network nsg create.
# Create a network security group.
az network nsg create --name 'mySubnet-nsg' --resource-group 'myResourceGroup' --location 'eastus'
Utwórz sieć wirtualną przy użyciu polecenia az network vnet create.
az network vnet create --resource-group 'myResourceGroup' --name 'myVNet' --subnet-name 'mySubnet' --subnet-prefixes 10.0.0.0/24 --network-security-group 'mySubnet-nsg'
Utwórz podsieć dla usługi Azure Bastion przy użyciu polecenia az network vnet subnet create.
# Create AzureBastionSubnet.
az network vnet subnet create --name 'AzureBastionSubnet' --resource-group 'myResourceGroup' --vnet-name 'myVNet' --address-prefixes '10.0.1.0/26'
Utwórz publiczny adres IP hosta usługi Bastion przy użyciu polecenia az network public-ip create.
# Create a public IP address resource.
az network public-ip create --resource-group 'myResourceGroup' --name 'myBastionIp' --sku Standard
Utwórz hosta usługi Bastion przy użyciu polecenia az network bastion create.
az network bastion create --name 'myVNet-Bastion' --public-ip-address 'myBastionIp' --resource-group 'myResourceGroup' --vnet-name 'myVNet'
Ważne
Naliczanie opłat godzinowych rozpoczyna się od momentu wdrożenia hosta usługi Bastion, niezależnie od użycia danych wychodzących. Aby uzyskać więcej informacji, zobacz Cennik. Zalecamy usunięcie tego zasobu po zakończeniu korzystania z niego.
Tworzenie maszyny wirtualnej
W tej sekcji utworzysz maszynę wirtualną i sieciową grupę zabezpieczeń zastosowaną do interfejsu sieciowego.
W polu wyszukiwania w górnej części portalu wprowadź ciąg maszyny wirtualne. Wybierz pozycję Maszyny wirtualne z wyników wyszukiwania.
Wybierz pozycję + Utwórz, a następnie wybierz pozycję Maszyna wirtualna Azure.
W obszarze Tworzenie maszyny wirtualnej wprowadź lub wybierz następujące wartości na karcie Podstawy :
| Ustawienie |
Wartość |
|
Szczegóły projektu |
|
| Subskrypcja |
Wybierz subskrypcję platformy Azure. |
| Grupa zasobów |
Wybierz pozycję myResourceGroup. |
|
Szczegóły wystąpienia |
|
| Nazwa maszyny wirtualnej |
Wprowadź myVM. |
| Rejon |
Wybierz (USA) Wschodnie USA. |
| Opcje dostępności |
Wybierz pozycję Brak wymaganej nadmiarowości infrastruktury. |
| Typ zabezpieczeń |
Wybierz opcję Standardowa. |
| obraz |
Wybierz pozycję Windows Server 2022 Datacenter: Azure Edition — x64 Gen2. |
| Rozmiar |
Wybierz rozmiar lub pozostaw ustawienie domyślne. |
|
Konto administratora |
|
| Nazwa użytkownika |
Wprowadź nazwę użytkownika. |
| Hasło |
Wprowadź hasło. |
| Potwierdź hasło |
Ponownie wprowadź hasło. |
Wybierz kartę Sieć lub wybierz pozycję Dalej: Dyski, a następnie pozycję Dalej: Sieć.
Na karcie Sieć wybierz następujące wartości:
| Ustawienie |
Wartość |
|
Interfejs sieciowy |
|
| Sieć wirtualna |
Wybierz pozycję myVNet. |
| Podsieć |
Wybierz pozycję domyślną. |
| Publiczny adres IP |
Wybierz pozycję Brak. |
| Grupa zabezpieczeń karty sieciowej |
Wybierz pozycję Podstawowa. |
| Publiczne porty ruchu przychodzącego |
Wybierz pozycję Brak. |
Wybierz pozycję Przejrzyj i utwórz.
Przejrzyj ustawienia, a następnie wybierz pozycję Utwórz.
Utwórz domyślną sieciową grupę zabezpieczeń przy użyciu polecenia New-AzNetworkSecurityGroup.
# Create a default network security group.
New-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup' -Location eastus
Utwórz maszynę wirtualną przy użyciu polecenia New-AzVM. Po wyświetleniu monitu wprowadź nazwę użytkownika i hasło.
# Create a virtual machine using the latest Windows Server 2022 image.
New-AzVm -ResourceGroupName 'myResourceGroup' -Name 'myVM' -Location 'eastus' -VirtualNetworkName 'myVNet' -SubnetName 'mySubnet' -SecurityGroupName 'myVM-nsg' -ImageName 'MicrosoftWindowsServer:WindowsServer:2022-Datacenter-azure-edition:latest'
Utwórz domyślną sieciową grupę zabezpieczeń przy użyciu polecenia az network nsg create.
# Create a default network security group.
az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
Utwórz maszynę wirtualną przy użyciu polecenia az vm create. Po wyświetleniu monitu wprowadź nazwę użytkownika i hasło.
# 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'
Dodaj regułę zabezpieczeń do grupy zabezpieczeń sieci
W tej sekcji dodasz regułę zabezpieczeń do grupy zabezpieczeń sieciowych skojarzonej z interfejsem sieciowym myVM maszyny wirtualnej. Reguła odmawia dowolnego ruchu przychodzącego z sieci wirtualnej.
W polu wyszukiwania w górnej części portalu wprowadź grupy zabezpieczeń sieci. Wybierz pozycję Sieciowe grupy zabezpieczeń z wyników wyszukiwania.
Z listy sieciowych grup zabezpieczeń wybierz grupę myVM-nsg.
W obszarze Ustawienia, wybierz pozycję Reguły zabezpieczeń dla ruchu przychodzącego.
Wybierz + Dodaj. Na karcie Sieć wprowadź lub wybierz następujące wartości:
| Ustawienie |
Wartość |
| Źródło |
Wybierz Tag usługi. |
| Tag usługi źródłowej |
Wybierz pozycję VirtualNetwork. |
| Zakresy portów źródłowych |
Wprowadź *. |
| Cel podróży |
Wybierz Dowolnie. |
| Usługa |
Wybierz Niestandardowy. |
| Zakresy portów docelowych |
Wprowadź *. |
| Protokół |
Wybierz Dowolnie. |
| Akcja |
Wybierz pozycję Odmów. |
| Priorytet |
Wprowadź wartość 1000. |
| Nazwisko |
Wprowadź DenyVnetInBound. |
Wybierz Dodaj.
Użyj polecenia Add-AzNetworkSecurityRuleConfig , aby utworzyć regułę zabezpieczeń, która blokuje ruch z sieci wirtualnej. Następnie użyj polecenia Set-AzNetworkSecurityGroup , aby zaktualizować sieciową grupę zabezpieczeń przy użyciu nowej reguły zabezpieczeń.
# 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
Użyj polecenia az network nsg rule create , aby dodać do sieciowej grupy zabezpieczeń regułę zabezpieczeń, która blokuje ruch z sieci wirtualnej.
# 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 '*'
Uwaga
Tag usługi VirtualNetwork reprezentuje przestrzeń adresową sieci wirtualnej, wszystkie połączone lokalne przestrzenie adresowe, równorzędne sieci wirtualne, sieci wirtualne połączone z bramą sieci wirtualnej, wirtualny adres IP hosta i prefiksy adresów używane na trasach zdefiniowanych przez użytkownika. Aby uzyskać więcej informacji, zobacz Tagi usługi.
Sprawdzanie reguł zabezpieczeń stosowanych do ruchu maszyny wirtualnej
Użyj diagnostyki NSG, aby sprawdzić reguły zabezpieczeń zastosowane do ruchu pochodzącego z podsieci Bastion do maszyny wirtualnej.
W polu wyszukiwania w górnej części portalu wyszukaj i wybierz pozycję Network Watcher.
W obszarze Narzędzia diagnostyczne sieci wybierz pozycję NSG diagnostyka.
Na stronie diagnostyki NSG wprowadź lub wybierz następujące wartości:
| Ustawienie |
Wartość |
|
Zasób docelowy |
|
| Typ zasobu docelowego |
Wybierz pozycję Maszyna wirtualna. |
| Maszyna wirtualna |
Wybierz maszynę wirtualną myVM . |
|
Szczegóły ruchu |
|
| Protokół |
Wybierz pozycję TCP. Inne dostępne opcje to: Dowolne, UDP i ICMP. |
| Kierunek |
Wybierz opcję Przychodzące. Inną dostępną opcją jest: Wychodzący. |
| Typ źródła |
Wybierz Adres IPv4/CIDR. Inną dostępną opcją jest: Tag serwisowy. |
| Adres IPv4/CIDR |
Wprowadź 10.0.1.0/26, czyli zakres adresów IP podsieci Bastion. Dopuszczalne wartości to: pojedynczy adres IP, wiele adresów IP, pojedynczy prefiks IP, wiele prefiksów ip. |
| Docelowy adres IP |
Pozostaw wartość domyślną 10.0.0.4, czyli adres IP maszyny wirtualnej myVM. |
| Port docelowy |
Wprowadź * w celu uwzględnienia wszystkich portów. |
pl-PL:
Wybierz Uruchom diagnostykę NSG, aby uruchomić test. Po zakończeniu sprawdzania wszystkich reguł zabezpieczeń, diagnostyka grupy zabezpieczeń sieci wyświetla wynik.
Wynik pokazuje, że istnieją trzy reguły zabezpieczeń oceniane dla połączenia przychodzącego z podsieci bastionu:
-
Reguły globalne: ta reguła administratora zabezpieczeń jest stosowana na poziomie sieci wirtualnej przy użyciu zarządzania siecią wirtualną platformy Azure. Reguła zezwala na ruch przychodzący TCP z podsieci bastionu do maszyny wirtualnej.
-
mySubnet-nsg: ta sieciowa grupa zabezpieczeń jest stosowana na poziomie podsieci (podsieci maszyny wirtualnej). Reguła zezwala na ruch przychodzący TCP z podsieci bastionu do maszyny wirtualnej.
-
myVM-nsg: ta sieciowa grupa zabezpieczeń jest stosowana na poziomie interfejsu sieciowego. Reguła blokuje przychodzący ruch TCP z podsieci Bastion do maszyny wirtualnej.
Wybierz Wyświetl szczegóły dla myVM-nsg, aby zobaczyć szczegółowe informacje o regułach zabezpieczeń, które ma ta grupa zabezpieczeń sieciowych i która reguła blokuje ruch.
W sieciowej grupie zabezpieczeń myVM-nsg reguła zabezpieczeń DenyVnetInBound odmawia dowolnego ruchu pochodzącego z przestrzeni adresowej tagu usługi VirtualNetwork do maszyny wirtualnej. Host Bastiona używa adresów IP z zakresu: 10.0.1.0/26, które są zawarte w tagu usługi VirtualNetwork do nawiązywania połączeń z maszyną wirtualną. W związku z tym połączenie z Bastionu jest odrzucane przez regułę zabezpieczeń DenyVnetInBound.
Użyj polecenia Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic, aby uruchomić sesję diagnostyki NSG.
# 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
Zwracane są dane wyjściowe podobne do następujących przykładowych danych wyjściowych:
Results : {Microsoft.Azure.Commands.Network.Models.PSNetworkConfigurationDiagnosticResult}
ResultsText : [
{
"Profile": {
"Direction": "Inbound",
"Protocol": "Tcp",
"Source": "10.0.1.0/26",
"Destination": "10.0.0.4",
"DestinationPort": "*"
},
"NetworkSecurityGroupResult": {
"SecurityRuleAccessResult": "Deny",
"EvaluatedNetworkSecurityGroups": [
{
"NetworkSecurityGroupId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"MatchedRule": {
"RuleName": "VirtualNetwork",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "VirtualNetwork",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"MatchedRule": {
"RuleName": "DefaultRule_AllowVnetInBound",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "DefaultRule_AllowVnetInBound",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"MatchedRule": {
"RuleName": "UserRule_DenyVnetInBound",
"Action": "Deny"
},
"RulesEvaluationResult": [
{
"Name": "UserRule_DenyVnetInBound",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
}
]
}
}
]
Wynik pokazuje, że istnieją trzy reguły zabezpieczeń oceniane dla połączenia przychodzącego z podsieci bastionu:
-
Reguły globalne: ta reguła administratora zabezpieczeń jest stosowana na poziomie sieci wirtualnej przy użyciu zarządzania siecią wirtualną platformy Azure. Reguła zezwala na ruch przychodzący TCP z podsieci bastionu do maszyny wirtualnej.
-
mySubnet-nsg: ta sieciowa grupa zabezpieczeń jest stosowana na poziomie podsieci (podsieci maszyny wirtualnej). Reguła zezwala na ruch przychodzący TCP z podsieci bastionu do maszyny wirtualnej.
-
myVM-nsg: ta sieciowa grupa zabezpieczeń jest stosowana na poziomie interfejsu sieciowego. Reguła blokuje przychodzący ruch TCP z podsieci Bastion do maszyny wirtualnej.
W sieciowej grupie zabezpieczeń myVM-nsg reguła zabezpieczeń DenyVnetInBound odmawia dowolnego ruchu pochodzącego z przestrzeni adresowej tagu usługi VirtualNetwork do maszyny wirtualnej. Host usługi Bastion używa adresów IP z zakresu 10.0.1.0/26, które są częścią tagu usługi VirtualNetwork, aby nawiązać połączenie z maszyną wirtualną. W związku z tym połączenie z Bastionu jest odrzucane przez regułę zabezpieczeń DenyVnetInBound.
Użyj az network watcher run-configuration-diagnostic, aby uruchomić sesję diagnostyczną NSG.
# 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 '*'
Zwracane są dane wyjściowe podobne do następujących przykładowych danych wyjściowych:
{
"results": [
{
"networkSecurityGroupResult": {
"evaluatedNetworkSecurityGroups": [
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet",
"matchedRule": {
"action": "Allow",
"ruleName": "VirtualNetwork"
},
"networkSecurityGroupId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "VirtualNetwork",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet",
"matchedRule": {
"action": "Allow",
"ruleName": "DefaultRule_AllowVnetInBound"
},
"networkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "DefaultRule_AllowVnetInBound",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myvm36",
"matchedRule": {
"action": "Deny",
"ruleName": "UserRule_DenyVnetInBound"
},
"networkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "UserRule_DenyVnetInBound",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
}
],
"securityRuleAccessResult": "Deny"
},
"profile": {
"destination": "10.0.0.4",
"destinationPort": "*",
"direction": "Inbound",
"protocol": "TCP",
"source": "10.0.1.0/26"
}
}
]
}
Wynik pokazuje, że istnieją trzy reguły zabezpieczeń oceniane dla połączenia przychodzącego z podsieci bastionu:
-
Reguły globalne: ta reguła administratora zabezpieczeń jest stosowana na poziomie sieci wirtualnej przy użyciu zarządzania siecią wirtualną platformy Azure. Reguła zezwala na ruch przychodzący TCP z podsieci bastionu do maszyny wirtualnej.
-
mySubnet-nsg: ta sieciowa grupa zabezpieczeń jest stosowana na poziomie podsieci (podsieci maszyny wirtualnej). Reguła zezwala na ruch przychodzący TCP z podsieci bastionu do maszyny wirtualnej.
-
myVM-nsg: ta sieciowa grupa zabezpieczeń jest stosowana na poziomie interfejsu sieciowego. Reguła blokuje przychodzący ruch TCP z podsieci Bastion do maszyny wirtualnej.
W sieciowej grupie zabezpieczeń myVM-nsg reguła zabezpieczeń DenyVnetInBound odmawia dowolnego ruchu pochodzącego z przestrzeni adresowej tagu usługi VirtualNetwork do maszyny wirtualnej. Host usługi Bastion używa adresów IP z zakresu 10.0.1.0/26, które są częścią tagu usługi VirtualNetwork, aby nawiązać połączenie z maszyną wirtualną. W związku z tym połączenie z Bastionu jest odrzucane przez regułę zabezpieczeń DenyVnetInBound.
Dodaj regułę zabezpieczeń, aby zezwolić na ruch z podsieci Bastion
Aby nawiązać połączenie z maszyną wirtualną myVM za pomocą Azure Bastion, ruch z podsieci Bastion musi być dozwolony przez sieciową grupę zabezpieczeń. Aby umożliwić ruch z 10.0.1.0/26, dodaj regułę zabezpieczeń o wyższym priorytecie (z niższym numerem priorytetu) niż reguła DenyVnetInBound lub edytuj regułę DenyVnetInBound, aby zezwolić na ruch z podsieci Bastionu.
Regułę zabezpieczeń można dodać do sieciowej grupy zabezpieczeń ze strony Network Watcher, która wyświetlała szczegółowe informacje o regule zabezpieczeń odmawiającej ruchu do maszyny wirtualnej.
Aby dodać regułę zabezpieczeń z poziomu usługi Network Watcher, wybierz pozycję + Dodaj regułę zabezpieczeń, a następnie wprowadź lub wybierz następujące wartości:
| Ustawienie |
Wartość |
| Źródło |
Wybierz Adresy IP. |
| Zakresy źródłowych adresów IP/CIDR |
Wprowadź 10.0.1.0/26, czyli zakres adresów IP podsieci Bastion. |
| Zakresy portów źródłowych |
Wprowadź *. |
| Cel podróży |
Wybierz Dowolnie. |
| Usługa |
Wybierz Niestandardowy. |
| Zakresy portów docelowych |
Wprowadź *. |
| Protokół |
Wybierz Dowolnie. |
| Akcja |
Zaznacz Zezwól. |
| Priorytet |
Wprowadź 900, które ma wyższy priorytet niż 1000 używanej dla reguły DenyVnetInBound. |
| Nazwisko |
Wprowadź AllowBastionConnections. |
Wybierz pozycję Sprawdź ponownie, aby ponownie uruchomić sesję diagnostyczną. Sesja diagnostyczna powinna teraz pokazać, że ruch z podsieci Bastionu jest dozwolony.
Zasada zabezpieczeń AllowBastionConnections umożliwia ruch z dowolnego adresu IP w zakresie 10.0.1.0/26 do maszyny wirtualnej. Ponieważ host usługi Bastion używa adresów IP z adresu 10.0.1.0/26, jego połączenie z maszyną wirtualną jest dozwolone przez regułę zabezpieczeń AllowBastionConnections .
Użyj polecenia Add-AzNetworkSecurityRuleConfig , aby utworzyć regułę zabezpieczeń zezwalającą na ruch z podsieci bastionu. Następnie użyj polecenia Set-AzNetworkSecurityGroup , aby zaktualizować sieciową grupę zabezpieczeń przy użyciu nowej reguły zabezpieczeń.
# 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
Aby ponownie sprawdzić, użyj polecenia Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic z nową sesją diagnostyki NSG.
# 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
Zwracane są dane wyjściowe podobne do następujących przykładowych danych wyjściowych:
Results : {Microsoft.Azure.Commands.Network.Models.PSNetworkConfigurationDiagnosticResult}
ResultsText : [
{
"Profile": {
"Direction": "Inbound",
"Protocol": "Tcp",
"Source": "10.0.1.0/26",
"Destination": "10.0.0.4",
"DestinationPort": "*"
},
"NetworkSecurityGroupResult": {
"SecurityRuleAccessResult": "Allow",
"EvaluatedNetworkSecurityGroups": [
{
"NetworkSecurityGroupId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"MatchedRule": {
"RuleName": "VirtualNetwork",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "VirtualNetwork",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"MatchedRule": {
"RuleName": "DefaultRule_AllowVnetInBound",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "DefaultRule_AllowVnetInBound",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"MatchedRule": {
"RuleName": "UserRule_AllowBastionConnections",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "UserRule_AllowBastionConnections",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
}
]
}
}
]
Zasada zabezpieczeń AllowBastionConnections umożliwia ruch z dowolnego adresu IP w zakresie 10.0.1.0/26 do maszyny wirtualnej. Ponieważ host usługi Bastion używa adresów IP z adresu 10.0.1.0/26, jego połączenie z maszyną wirtualną jest dozwolone przez regułę zabezpieczeń AllowBastionConnections .
Użyj polecenia az network nsg rule create, aby dodać do grupy zabezpieczeń sieci regułę zezwalającą na ruch z podsieci bastionu.
# 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 '*'
Użyj komendy az network watcher run-configuration-diagnostic, aby ponownie sprawdzić przy użyciu nowej sesji diagnostyki NSG.
# 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 '*'
Zwracane są dane wyjściowe podobne do następujących przykładowych danych wyjściowych:
{
"results": [
{
"networkSecurityGroupResult": {
"evaluatedNetworkSecurityGroups": [
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet",
"matchedRule": {
"action": "Allow",
"ruleName": "VirtualNetwork"
},
"networkSecurityGroupId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "VirtualNetwork",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet",
"matchedRule": {
"action": "Allow",
"ruleName": "DefaultRule_AllowVnetInBound"
},
"networkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "DefaultRule_AllowVnetInBound",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myvm36",
"matchedRule": {
"action": "Allow",
"ruleName": "UserRule_AllowBastionConnections"
},
"networkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "UserRule_AllowBastionConnections",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
}
],
"securityRuleAccessResult": "Allow"
},
"profile": {
"destination": "10.0.0.4",
"destinationPort": "*",
"direction": "Inbound",
"protocol": "TCP",
"source": "10.0.1.0/26"
}
}
]
}
Zasada zabezpieczeń AllowBastionConnections umożliwia ruch z dowolnego adresu IP w zakresie 10.0.1.0/26 do maszyny wirtualnej. Ponieważ host usługi Bastion używa adresów IP z adresu 10.0.1.0/26, jego połączenie z maszyną wirtualną jest dozwolone przez regułę zabezpieczeń AllowBastionConnections .
Czyszczenie zasobów
Gdy grupa zasobów i wszystkie znajdujące się w niej zasoby nie będą już potrzebne, usuń je:
W polu wyszukiwania w górnej części portalu prowadź ciąg myResourceGroup. Wybierz pozycję myResourceGroup z wyników wyszukiwania.
Wybierz pozycję Usuń grupę zasobów.
W Usuń grupę zasobów wprowadź myResourceGroup, a następnie wybierz Usuń.
Wybierz pozycję Usuń , aby potwierdzić usunięcie grupy zasobów i wszystkich jej zasobów.
Użyj polecenia Remove-AzResourceGroup , aby usunąć grupę zasobów i wszystkie zawarte w niej zasoby.
# Delete the resource group and all the resources it contains.
Remove-AzResourceGroup -Name 'myResourceGroup' -Force
Użyj polecenia az group delete , aby usunąć grupę zasobów i wszystkie zawarte w niej zasoby
# Delete the resource group and all the resources it contains.
az group delete --name 'myResourceGroup' --yes --no-wait
Powiązana zawartość