Använd Data Center brand vägg för Software-Defined nätverk i Azure Stack HCIUse Datacenter Firewall for Software-Defined Networking in Azure Stack HCI

Gäller för: Azure Stack HCI, version 20H2; Windows Server 2019Applies to: Azure Stack HCI, version 20H2; Windows Server 2019

Det här avsnittet innehåller instruktioner för att konfigurera åtkomst kontrol listor (ACL: er) för att hantera data trafikflöde med hjälp av data Center brand vägg för SDN (Software Defined Networking) i Azure Stack HCI med Windows PowerShell.This topic provides instructions for configuring access control lists (ACLs) to manage data traffic flow using Datacenter Firewall for Software Defined Networking (SDN) in Azure Stack HCI using Windows PowerShell. Du aktiverar och konfigurerar datacenter-brandvägg genom att skapa ACL: er som tillämpas på ett undernät eller ett nätverks gränssnitt.You enable and configure Datacenter Firewall by creating ACLs that get applied to a subnet or a network interface. Exempel skripten i det här avsnittet använder Windows PowerShell-kommandon som exporter ATS från NetworkController -modulen.The example scripts in this topic use Windows PowerShell commands exported from the NetworkController module. Du kan också använda administrations Center för Windows för att konfigurera och hantera ACL: er.You can also use Windows Admin Center to configure and manage ACLs.

Konfigurera datacenter-brandvägg för att tillåta all trafikConfigure Datacenter Firewall to allow all traffic

När du har distribuerat SDN bör du testa för grundläggande nätverks anslutningar i din nya miljö.Once you deploy SDN, you should test for basic network connectivity in your new environment. Det gör du genom att skapa en regel för datacenter-brandvägg som tillåter all nätverks trafik, utan begränsning.To accomplish this, create a rule for Datacenter Firewall that allows all network traffic, without restriction.

Använd posterna i följande tabell för att skapa en uppsättning regler som tillåter all inkommande och utgående nätverks trafik.Use the entries in the following table to create a set of rules that allow all inbound and outbound network traffic.

Käll-IP-adressSource IP Mål-IP-adressDestination IP ProtokollProtocol KällportSource Port MålportDestination Port RiktningDirection ActionAction PrioritetPriority
* * AllaAll * * InkommandeInbound TillåtAllow 100100
* * AllaAll * * UtgåendeOutbound TillåtAllow 110110

I det här exemplet skapar du en ACL med två regler:In this example, you create an ACL with two rules:

  1. AllowAll_Inbound – tillåter all nätverks trafik att skickas till nätverks gränssnittet där denna ACL har kon figurer ATS.AllowAll_Inbound - allows all network traffic to pass into the network interface where this ACL is configured.
  2. AllowAllOutbound – tillåter all trafik att skickas ut ur nätverks gränssnittet.AllowAllOutbound - allows all traffic to pass out of the network interface. Denna ACL, som identifieras av resurs-ID: t "AllowAll-1", är nu redo att användas i virtuella undernät och nätverks gränssnitt.This ACL, identified by the resource ID "AllowAll-1" is now ready to be used in virtual subnets and network interfaces.

Anslut först till en av klusternoderna genom att öppna en PowerShell-session:First, connect to one of the cluster nodes by opening a PowerShell session:

Enter-PSSession <server-name>

Kör sedan följande skript för att skapa ACL: en:Then, run the following script to create the ACL:

$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>

Anteckning

Kommando referensen för Windows PowerShell för nätverks styrenhet finns i avsnittet nätverks styrenhet-cmdletar.The Windows PowerShell command reference for Network Controller is located in the topic Network Controller cmdlets.

Använd ACL: er för att begränsa trafiken i ett undernätUse ACLs to limit traffic on a subnet

I det här exemplet skapar du en ACL som förhindrar att virtuella datorer (VM) i under nätet 192.168.0.0/24 kommunicerar med varandra.In this example, you create an ACL that prevents virtual machines (VMs) within the 192.168.0.0/24 subnet from communicating with each other. Den här typen av ACL är användbar för att begränsa möjligheten för en angripare att sprida sig senare i under nätet, samtidigt som de virtuella datorerna kan ta emot begär Anden från utanför under nätet, samt för att kommunicera med andra tjänster i andra undernät.This type of ACL is useful for limiting the ability of an attacker to spread laterally within the subnet, while still allowing the VMs to receive requests from outside of the subnet, as well as to communicate with other services on other subnets.

Käll-IP-adressSource IP Mål-IP-adressDestination IP ProtokollProtocol KällportSource Port MålportDestination Port RiktningDirection ActionAction PrioritetPriority
192.168.0.1192.168.0.1 * AllaAll * * InkommandeInbound TillåtAllow 100100
* 192.168.0.1192.168.0.1 AllaAll * * UtgåendeOutbound TillåtAllow 101101
192.168.0.0/24192.168.0.0/24 * AllaAll * * InkommandeInbound BlockeraBlock 102102
* 192.168.0.0/24192.168.0.0/24 AllaAll * * UtgåendeOutbound BlockeraBlock 103103
* * AllaAll * * InkommandeInbound TillåtAllow 104104
* * AllaAll * * UtgåendeOutbound TillåtAllow 105105

Åtkomst kontrol listan som skapats av exempel skriptet nedan, som identifieras av resurs-ID -under nätet-192-168-0-0, kan nu tillämpas på ett virtuellt nätverks under nät som använder under näts adressen 192.168.0.0/24.The ACL created by the example script below, identified by the resource ID Subnet-192-168-0-0, can now be applied to a virtual network subnet that uses the "192.168.0.0/24" subnet address. Alla nätverks gränssnitt som är kopplade till det virtuella nätverkets undernät får automatiskt ovanstående ACL-regler.Any network interface that is attached to that virtual network subnet automatically gets the above ACL rules applied.

Följande är ett exempel skript för att skapa denna ACL med hjälp av nätverks styrenhets REST API:The following is an example script to create this ACL using the Network Controller REST API:

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

Lägga till en ACL i ett nätverks gränssnittAdd an ACL to a network interface

När du har skapat en ACL och tilldelat den till ett virtuellt undernät kanske du vill åsidosätta standard-ACL: en på det virtuella under nätet med en viss ACL för ett enskilt nätverks gränssnitt.Once you've created an ACL and assigned it to a virtual subnet, you might want to override that default ACL on the virtual subnet with a specific ACL for an individual network interface. I det här fallet tillämpar du vissa ACL: er direkt på nätverks gränssnitt som är anslutna till VLAN, i stället för det virtuella nätverket.In this case, you apply specific ACLs directly to network interfaces attached to VLANs, instead of the virtual network. Om du har ACL: er inställt på det virtuella under nätet som är anslutet till nätverks gränssnittet tillämpas båda åtkomst kontrol listorna och prioriterar nätverks gränssnittets ACL: er ovanför de virtuella under näten.If you have ACLs set on the virtual subnet connected to the network interface, both ACLs are applied and prioritizes the network interface ACLs above the virtual subnet ACLs.

I det här exemplet visar vi hur du lägger till en ACL i ett virtuellt nätverk.In this example, we demonstrate how to add an ACL to a virtual network.

Tips

Du kan också lägga till en ACL samtidigt som du skapar nätverks gränssnittet.It is also possible to add an ACL at the same time that you create the network interface.

  1. Hämta eller skapa nätverks gränssnittet som du vill lägga till ACL: en till.Get or create the network interface to which you will add the ACL.

    $nic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
    
  2. Hämta eller skapa den ACL som du vill lägga till i nätverks gränssnittet.Get or create the ACL you will add to the network interface.

    $acl = get-networkcontrolleraccesscontrollist -ConnectionUri $uri -ResourceId "AllowAllACL"
    
  3. Tilldela åtkomst kontrol listan till AccessControlList-egenskapen för nätverks gränssnittet.Assign the ACL to the AccessControlList property of the network interface.

     $nic.properties.ipconfigurations[0].properties.AccessControlList = $acl
    
  4. Lägg till nätverks gränssnittet i nätverks styrenheten.Add the network interface in Network Controller.

    new-networkcontrollernetworkinterface -ConnectionUri $uri -Properties $nic.properties -ResourceId $nic.resourceid
    

Ta bort en ACL från ett nätverks gränssnittRemove an ACL from a network interface

I det här exemplet visar vi dig hur du tar bort en ACL från ett nätverks gränssnitt.In this example, we show you how to remove an ACL from a network interface. Om du tar bort en ACL används standard uppsättningen regler i nätverks gränssnittet.Removing an ACL applies the default set of rules to the network interface. Standard uppsättningen regler tillåter all utgående trafik, men blockerar all inkommande trafik.The default set of rules allows all outbound traffic but blocks all inbound traffic. Om du vill tillåta all inkommande trafik måste du följa föregående exempel för att lägga till en ACL som tillåter all inkommande och utgående trafik.If you want to allow all inbound traffic, you must follow the previous example to add an ACL that allows all inbound and all outbound traffic.

  1. Hämta det nätverks gränssnitt som du vill ta bort ACL: en från.Get the network interface from which you will remove the ACL.

    $nic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
    
  2. Tilldela $null till AccessControlList-egenskapen för ipConfiguration.Assign $null to the AccessControlList property of the ipConfiguration.

    $nic.properties.ipconfigurations[0].properties.AccessControlList = $null
    
  3. Lägg till objektet nätverks gränssnitt i nätverks styrenheten.Add the network interface object in Network Controller.

    new-networkcontrollernetworkinterface -ConnectionUri $uri -Properties $nic.properties -ResourceId $nic.resourceid
    

Brand Väggs granskningFirewall auditing

Brand Väggs granskning är en ny funktion för data Center brand väggen som registrerar alla flöden som bearbetas av SDN brand Väggs regler.Firewall auditing is a new capability for the Datacenter Firewall that records any flow processed by SDN firewall rules. Alla ACL: er som har loggning aktive rad registreras.All ACLs that have logging enabled are recorded. Loggfilerna måste vara i en syntax som överensstämmer med Azure Network Watcher Flow-loggarna.The log files must be in a syntax that is consistent with the Azure Network Watcher flow logs. Dessa loggar kan användas för diagnostik eller arkiveras för senare analys.These logs can be used for diagnostics or archived for later analysis.

Här är ett exempel skript som aktiverar brand Väggs granskning på värd servrarna.Here is a sample script to enable firewall auditing on the host servers. Uppdatera variablerna i början och kör detta på ett Azure Stack HCI-kluster med nätverks styrenhet distribuerad:Update the variables at the beginning and run this on an Azure Stack HCI cluster with Network Controller deployed:

$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
}

När den är aktive rad visas en ny fil i den angivna katalogen på varje värd ungefär en gång per timme.Once enabled, a new file appears in the specified directory on each host about once per hour. Du bör regelbundet bearbeta filerna och ta bort dem från värdarna.You should periodically process these files and remove them from the hosts. Den aktuella filen har längden noll och är låst tills den töms vid nästa timme:The current file has zero length and is locked until flushed at the next hour mark:

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

De här filerna innehåller en sekvens av flödes händelser, till exempel:These files contain a sequence of flow events, for example:

{
    "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":"394f647d-2ed0-4c31-87c5-389b8c0c8132",
            "time":"20180719:L012620622",
            "category":"NetworkSecurityGroupFlowEvent",
            "systemId":"d8b3b697-5355-40e2-84d2-1bf2f0e0dc4a"
            },

Obs! loggning sker endast för regler som har loggnings inställningen aktive rad, till exempel:Note, logging takes place only for rules that have Logging set to Enabled, for example:

{
    "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
                                       }
                                   ]
                   }
}

Nästa stegNext steps

För relaterad information, se även:For related information, see also: