Konfigurace skupin zabezpečení sítě v místním Azure pomocí PowerShellu
Platí pro: Azure Local, verze 23H2 a 22H2; Windows Server 2022, Windows Server 2019, Windows Server 2016
Tento článek obsahuje pokyny ke konfiguraci skupin zabezpečení sítě (NSG) pro správu toku datového provozu pomocí brány firewall datacentra pro softwarově definované sítě (SDN) v Azure Local pomocí Windows PowerShellu. Bránu firewall datacentra povolíte a nakonfigurujete tak, že vytvoříte skupiny zabezpečení sítě, které se použijí na podsíť nebo síťové rozhraní.
Ukázkové skripty v tomto článku používají příkazy prostředí Windows PowerShell exportované z modulu NetworkController . Ke konfiguraci a správě skupin zabezpečení sítě můžete také použít Centrum pro správu Systému Windows.
Konfigurace brány firewall datacentra pro povolení veškerého provozu
Po nasazení SDN byste měli otestovat základní síťové připojení v novém prostředí. K tomu vytvořte pravidlo pro bránu firewall datacentra, která umožňuje veškerý síťový provoz bez omezení.
Pomocí položek v následující tabulce vytvořte sadu pravidel, která povolují veškerý příchozí a odchozí síťový provoz.
Zdrojová IP adresa | Cílová IP adresa | Protokol | Zdrojový port | Cílový port | Směr | Akce | Priorita |
---|---|---|---|---|---|---|---|
* | * | Všechny | * | * | Příchozí | Povolit | 100 |
* | * | Všechny | * | * | Odchozí | Povolit | 110 |
V tomto příkladu vytvoříte skupinu zabezpečení sítě se dvěma pravidly:
- AllowAll_Inbound – umožňuje průchod veškerého síťového provozu do síťového rozhraní, kde je tato skupina zabezpečení sítě nakonfigurovaná.
- AllowAllOutbound – umožňuje průchod veškerého provozu ze síťového rozhraní. Tato skupina zabezpečení sítě identifikovaná ID prostředku AllowAll-1 je teď připravená k použití ve virtuálních podsítích a síťových rozhraních.
Tento příkaz můžete spustit z libovolného počítače, který má přístup ke koncovému bodu REST síťového adaptéru. Nejprve otevřete relaci PowerShellu. V tomto příkladu použijte rutinu Enter-PSSession a nahraďte <computer-name>
názvem počítače, který má koncový bod REST síťového adaptéru.
Enter-PSSession <computer-name>
Potom spuštěním následujícího skriptu vytvořte skupinu zabezpečení sítě:
$ruleproperties = new-object Microsoft.Windows.NetworkController.AclRuleProperties
$ruleproperties.Protocol = "All"
$ruleproperties.SourcePortRange = "0-65535"
$ruleproperties.DestinationPortRange = "0-65535"
$ruleproperties.Action = "Allow"
$ruleproperties.SourceAddressPrefix = "*"
$ruleproperties.DestinationAddressPrefix = "*"
$ruleproperties.Priority = "100"
$ruleproperties.Type = "Inbound"
$ruleproperties.Logging = "Enabled"
$aclrule1 = new-object Microsoft.Windows.NetworkController.AclRule
$aclrule1.Properties = $ruleproperties
$aclrule1.ResourceId = "AllowAll_Inbound"
$ruleproperties = new-object Microsoft.Windows.NetworkController.AclRuleProperties
$ruleproperties.Protocol = "All"
$ruleproperties.SourcePortRange = "0-65535"
$ruleproperties.DestinationPortRange = "0-65535"
$ruleproperties.Action = "Allow"
$ruleproperties.SourceAddressPrefix = "*"
$ruleproperties.DestinationAddressPrefix = "*"
$ruleproperties.Priority = "110"
$ruleproperties.Type = "Outbound"
$ruleproperties.Logging = "Enabled"
$aclrule2 = new-object Microsoft.Windows.NetworkController.AclRule
$aclrule2.Properties = $ruleproperties
$aclrule2.ResourceId = "AllowAll_Outbound"
$acllistproperties = new-object Microsoft.Windows.NetworkController.AccessControlListProperties
$acllistproperties.AclRules = @($aclrule1, $aclrule2)
New-NetworkControllerAccessControlList -ResourceId "AllowAll" -Properties $acllistproperties -ConnectionUri <NC REST FQDN>
Poznámka:
Referenční informace k příkazům windows PowerShellu pro síťový adaptér jsou v rutinách síťového adaptéru.
Omezení provozu v podsíti pomocí skupin zabezpečení sítě
V tomto příkladu vytvoříte skupinu zabezpečení sítě, která brání vzájemné komunikaci virtuálních počítačů v podsíti 192.168.0.0/24. Tento typ skupiny zabezpečení sítě je užitečný pro omezení schopnosti útočníka šířit se laterálně v rámci podsítě, zatímco virtuální počítače stále umožňují přijímat požadavky zvenčí podsítě a komunikovat s ostatními službami v jiných podsítích.
Zdrojová IP adresa | Cílová IP adresa | Protokol | Zdrojový port | Cílový port | Směr | Akce | Priorita |
---|---|---|---|---|---|---|---|
192.168.0.1 | * | Všechny | * | * | Příchozí | Povolit | 100 |
* | 192.168.0.1 | Všechny | * | * | Odchozí | Povolit | 101 |
192.168.0.0/24 | * | Všechny | * | * | Příchozí | Blok | 102 |
* | 192.168.0.0/24 | Všechny | * | * | Odchozí | Blok | 103 |
* | * | Všechny | * | * | Příchozí | Povolit | 104 |
* | * | Všechny | * | * | Odchozí | Povolit | 105 |
Skupinu zabezpečení sítě vytvořenou ukázkovým skriptem níže, která je označená podsítím ID prostředku Subnet-192-168-0-0, se teď dá použít u podsítě virtuální sítě, která používá adresu podsítě 192.168.0.0/24. Každé síťové rozhraní připojené k této podsíti virtuální sítě automaticky získá výše uvedená pravidla skupiny zabezpečení sítě.
Následuje ukázkový skript pro vytvoření této skupiny zabezpečení sítě pomocí rozhraní REST API síťového adaptéru:
import-module networkcontroller
$ncURI = "https://mync.contoso.local"
$aclrules = @()
$ruleproperties = new-object Microsoft.Windows.NetworkController.AclRuleProperties
$ruleproperties.Protocol = "All"
$ruleproperties.SourcePortRange = "0-65535"
$ruleproperties.DestinationPortRange = "0-65535"
$ruleproperties.Action = "Allow"
$ruleproperties.SourceAddressPrefix = "192.168.0.1"
$ruleproperties.DestinationAddressPrefix = "*"
$ruleproperties.Priority = "100"
$ruleproperties.Type = "Inbound"
$ruleproperties.Logging = "Enabled"
$aclrule = new-object Microsoft.Windows.NetworkController.AclRule
$aclrule.Properties = $ruleproperties
$aclrule.ResourceId = "AllowRouter_Inbound"
$aclrules += $aclrule
$ruleproperties = new-object Microsoft.Windows.NetworkController.AclRuleProperties
$ruleproperties.Protocol = "All"
$ruleproperties.SourcePortRange = "0-65535"
$ruleproperties.DestinationPortRange = "0-65535"
$ruleproperties.Action = "Allow"
$ruleproperties.SourceAddressPrefix = "*"
$ruleproperties.DestinationAddressPrefix = "192.168.0.1"
$ruleproperties.Priority = "101"
$ruleproperties.Type = "Outbound"
$ruleproperties.Logging = "Enabled"
$aclrule = new-object Microsoft.Windows.NetworkController.AclRule
$aclrule.Properties = $ruleproperties
$aclrule.ResourceId = "AllowRouter_Outbound"
$aclrules += $aclrule
$ruleproperties = new-object Microsoft.Windows.NetworkController.AclRuleProperties
$ruleproperties.Protocol = "All"
$ruleproperties.SourcePortRange = "0-65535"
$ruleproperties.DestinationPortRange = "0-65535"
$ruleproperties.Action = "Deny"
$ruleproperties.SourceAddressPrefix = "192.168.0.0/24"
$ruleproperties.DestinationAddressPrefix = "*"
$ruleproperties.Priority = "102"
$ruleproperties.Type = "Inbound"
$ruleproperties.Logging = "Enabled"
$aclrule = new-object Microsoft.Windows.NetworkController.AclRule
$aclrule.Properties = $ruleproperties
$aclrule.ResourceId = "DenySubnet_Inbound"
$aclrules += $aclrule
$ruleproperties = new-object Microsoft.Windows.NetworkController.AclRuleProperties
$ruleproperties.Protocol = "All"
$ruleproperties.SourcePortRange = "0-65535"
$ruleproperties.DestinationPortRange = "0-65535"
$ruleproperties.Action = "Deny"
$ruleproperties.SourceAddressPrefix = "*"
$ruleproperties.DestinationAddressPrefix = "192.168.0.0/24"
$ruleproperties.Priority = "103"
$ruleproperties.Type = "Outbound"
$ruleproperties.Logging = "Enabled"
$aclrule = new-object Microsoft.Windows.NetworkController.AclRule
$aclrule.Properties = $ruleproperties
$aclrule.ResourceId = "DenySubnet_Outbound"
$ruleproperties = new-object Microsoft.Windows.NetworkController.AclRuleProperties
$ruleproperties.Protocol = "All"
$ruleproperties.SourcePortRange = "0-65535"
$ruleproperties.DestinationPortRange = "0-65535"
$ruleproperties.Action = "Allow"
$ruleproperties.SourceAddressPrefix = "*"
$ruleproperties.DestinationAddressPrefix = "*"
$ruleproperties.Priority = "104"
$ruleproperties.Type = "Inbound"
$ruleproperties.Logging = "Enabled"
$aclrule = new-object Microsoft.Windows.NetworkController.AclRule
$aclrule.Properties = $ruleproperties
$aclrule.ResourceId = "AllowAll_Inbound"
$aclrules += $aclrule
$ruleproperties = new-object Microsoft.Windows.NetworkController.AclRuleProperties
$ruleproperties.Protocol = "All"
$ruleproperties.SourcePortRange = "0-65535"
$ruleproperties.DestinationPortRange = "0-65535"
$ruleproperties.Action = "Allow"
$ruleproperties.SourceAddressPrefix = "*"
$ruleproperties.DestinationAddressPrefix = "*"
$ruleproperties.Priority = "105"
$ruleproperties.Type = "Outbound"
$ruleproperties.Logging = "Enabled"
$aclrule = new-object Microsoft.Windows.NetworkController.AclRule
$aclrule.Properties = $ruleproperties
$aclrule.ResourceId = "AllowAll_Outbound"
$aclrules += $aclrule
$acllistproperties = new-object Microsoft.Windows.NetworkController.AccessControlListProperties
$acllistproperties.AclRules = $aclrules
New-NetworkControllerAccessControlList -ResourceId "Subnet-192-168-0-0" -Properties $acllistproperties -ConnectionUri $ncURI
Přidání skupiny zabezpečení sítě do síťového rozhraní
Po vytvoření skupiny zabezpečení sítě a jeho přiřazení k virtuální podsíti můžete chtít tuto výchozí skupinu zabezpečení sítě ve virtuální podsíti přepsat konkrétní skupinou zabezpečení sítě pro jednotlivá síťová rozhraní. Počínaje Windows Serverem 2019 Datacenter můžete kromě virtuálních sítí SDN použít konkrétní skupiny zabezpečení sítě přímo na síťová rozhraní připojená k logickým sítím SDN. Pokud máte skupiny zabezpečení sítě nastavené ve virtuální podsíti připojené k síťovému rozhraní, použijí se obě skupiny zabezpečení sítě a skupiny zabezpečení sítě síťového rozhraní jsou upřednostňovány nad skupinami zabezpečení sítě virtuální podsítě.
V tomto příkladu si ukážeme, jak do virtuální sítě přidat skupinu zabezpečení sítě.
Tip
Zároveň můžete přidat skupinu zabezpečení sítě, kterou vytvoříte v síťovém rozhraní.
Získejte nebo vytvořte síťové rozhraní, do kterého přidáte skupinu zabezpečení sítě.
$nic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
Získejte nebo vytvořte skupinu zabezpečení sítě, kterou přidáte do síťového rozhraní.
$acl = get-networkcontrolleraccesscontrollist -ConnectionUri $uri -ResourceId "AllowAllACL"
Přiřaďte skupinu zabezpečení sítě k AccessControlList vlastnost síťového rozhraní.
$nic.properties.ipconfigurations[0].properties.AccessControlList = $acl
Přidejte síťové rozhraní v síťovém adaptéru.
new-networkcontrollernetworkinterface -ConnectionUri $uri -Properties $nic.properties -ResourceId $nic.resourceid
Odebrání skupiny zabezpečení sítě ze síťového rozhraní
V tomto příkladu vám ukážeme, jak odebrat skupinu zabezpečení sítě ze síťového rozhraní. Odebrání skupiny zabezpečení sítě použije výchozí sadu pravidel pro síťové rozhraní. Výchozí sada pravidel umožňuje veškerý odchozí provoz, ale blokuje veškerý příchozí provoz. Pokud chcete povolit veškerý příchozí provoz, musíte postupovat podle předchozího příkladu a přidat skupinu zabezpečení sítě, která umožňuje veškerý příchozí a veškerý odchozí provoz.
Získejte síťové rozhraní, ze kterého odeberete skupinu zabezpečení sítě.
$nic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
Přiřaďte $null accessControlList vlastnost ipConfiguration.
$nic.properties.ipconfigurations[0].properties.AccessControlList = $null
Přidejte objekt síťového rozhraní v síťovém adaptéru.
new-networkcontrollernetworkinterface -ConnectionUri $uri -Properties $nic.properties -ResourceId $nic.resourceid
Auditování brány firewall
Funkce auditování brány firewall pro bránu firewall datacentra zaznamenává všechny toky zpracovávané pravidly brány firewall SDN. Zaznamenávají se všechny skupiny zabezpečení sítě, které mají povolené protokolování. Soubory protokolů musí být v syntaxi, která je konzistentní s protokoly toku služby Azure Network Watcher. Tyto protokoly je možné použít pro diagnostiku nebo archivovat pro pozdější analýzu.
Tady je ukázkový skript pro povolení auditování brány firewall na hostitelských počítačích. Aktualizujte proměnné na začátku a spusťte je v místní instanci Azure s nasazeným síťovým adaptérem:
$logpath = "C:\test\log1"
$servers = @("sa18n22-2", "sa18n22-3", "sa18n22-4")
$uri = "https://sa18n22sdn.sa18.nttest.microsoft.com"
# Create log directories on the hosts
invoke-command -Computername $servers {
param(
$Path
)
mkdir $path -force
} -argumentlist $LogPath
# Set firewall auditing settings on Network Controller
$AuditProperties = new-object Microsoft.Windows.NetworkController.AuditingSettingsProperties
$AuditProperties.OutputDirectory = $logpath
set-networkcontrollerauditingsettingsconfiguration -connectionuri $uri -properties $AuditProperties -force | out-null
# Enable logging on each server
$servers = get-networkcontrollerserver -connectionuri $uri
foreach ($s in $servers) {
$s.properties.AuditingEnabled = @("Firewall")
new-networkcontrollerserver -connectionuri $uri -resourceid $s.resourceid -properties $s.properties -force | out-null
}
Po povolení se nový soubor zobrazí v zadaném adresáři na každém hostiteli přibližně jednou za hodinu. Tyto soubory byste měli pravidelně zpracovávat a odebírat je z hostitelů. Aktuální soubor má nulovou délku a je uzamčen, dokud se nevyprázdní na znaménku následující hodiny:
PS C:\test\log1> dir
Directory: C:\test\log1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 7/19/2018 6:28 AM 17055 SdnFirewallAuditing.d8b3b697-5355-40e2-84d2-1bf2f0e0dc4a.20180719TL122803093.json
-a---- 7/19/2018 7:28 AM 7880 SdnFirewallAuditing.d8b3b697-5355-40e2-84d2-1bf2f0e0dc4a.20180719TL132803173.json
-a---- 7/19/2018 8:28 AM 7867 SdnFirewallAuditing.d8b3b697-5355-40e2-84d2-1bf2f0e0dc4a.20180719TL142803264.json
-a---- 7/19/2018 9:28 AM 10949 SdnFirewallAuditing.d8b3b697-5355-40e2-84d2-1bf2f0e0dc4a.20180719TL152803360.json
-a---- 7/19/2018 9:28 AM 0 SdnFirewallAuditing.d8b3b697-5355-40e2-84d2-1bf2f0e0dc4a.20180719TL162803464.json
Tyto soubory obsahují posloupnost událostí toku, například:
{
"records": [
{
"properties":{
"Version":"1.0",
"flows":[
{
"flows":[
{
"flowTuples":["1531963580,192.122.0.22,192.122.255.255,138,138,U,I,A"],
"portId":"9",
"portName":"7290436D-0422-498A-8EB8-C6CF5115DACE"
}
],
"rule":"Allow_Inbound"
}
]
},
"operationName":"NetworkSecurityGroupFlowEvents",
"resourceId":"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
"time":"20180719:L012620622",
"category":"NetworkSecurityGroupFlowEvent",
"systemId":"d8b3b697-5355-40e2-84d2-1bf2f0e0dc4a"
},
Všimněte si, že protokolování probíhá pouze pro pravidla, která mají protokolování nastavené na Povoleno, například:
{
"Tags": null,
"ResourceRef": "/accessControlLists/AllowAll",
"InstanceId": "4a63e1a5-3264-4986-9a59-4e77a8b107fa",
"Etag": "W/\"1535a780-0fc8-4bba-a15a-093ecac9b88b\"",
"ResourceMetadata": null,
"ResourceId": "AllowAll",
"Properties": {
"ConfigurationState": null,
"ProvisioningState": "Succeeded",
"AclRules": [
{
"ResourceMetadata": null,
"ResourceRef": "/accessControlLists/AllowAll/aclRules/AllowAll_Inbound",
"InstanceId": "ba8710a8-0f01-422b-9038-d1f2390645d7",
"Etag": "W/\"1535a780-0fc8-4bba-a15a-093ecac9b88b\"",
"ResourceId": "AllowAll_Inbound",
"Properties": {
"Protocol": "All",
"SourcePortRange": "0-65535",
"DestinationPortRange": "0-65535",
"Action": "Allow",
"SourceAddressPrefix": "*",
"DestinationAddressPrefix": "*",
"Priority": "101",
"Description": null,
"Type": "Inbound",
"Logging": "Enabled",
"ProvisioningState": "Succeeded"
}
},
{
"ResourceMetadata": null,
"ResourceRef": "/accessControlLists/AllowAll/aclRules/AllowAll_Outbound",
"InstanceId": "068264c6-2186-4dbc-bbe7-f504c6f47fa8",
"Etag": "W/\"1535a780-0fc8-4bba-a15a-093ecac9b88b\"",
"ResourceId": "AllowAll_Outbound",
"Properties": {
"Protocol": "All",
"SourcePortRange": "0-65535",
"DestinationPortRange": "0-65535",
"Action": "Allow",
"SourceAddressPrefix": "*",
"DestinationAddressPrefix": "*",
"Priority": "110",
"Description": null,
"Type": "Outbound",
"Logging": "Enabled",
"ProvisioningState": "Succeeded"
}
}
],
"IpConfigurations": [
],
"Subnets": [
{
"ResourceMetadata": null,
"ResourceRef": "/virtualNetworks/10_0_1_0/subnets/Subnet1",
"InstanceId": "00000000-0000-0000-0000-000000000000",
"Etag": null,
"ResourceId": null,
"Properties": null
}
]
}
}
Další kroky
Související informace najdete tady:
- Přehled brány firewall datacentra
- Přehled síťového adaptéru
- SDN v Azure Local a Windows Serveru.