Adatközponti tűzfal használata Software-Defined hálózatkezeléshez Azure Stack HCI-benUse Datacenter Firewall for Software-Defined Networking in Azure Stack HCI

A következőkre vonatkozik: Azure Stack HCI, Version 20H2; Windows Server 2019Applies to: Azure Stack HCI, version 20H2; Windows Server 2019

Ez a témakör útmutatást nyújt a hozzáférés-vezérlési listák (ACL-ek) konfigurálásához az adatforgalom kezeléséhez a Windows PowerShell használatával a Azure Stack HCI-ben a szoftveresen definiált hálózatkezelés (SDN ) használatával.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. Az adatközpont tűzfalát az alhálózatra vagy hálózati adapterre alkalmazott ACL-ek létrehozásával engedélyezheti és konfigurálhatja.You enable and configure Datacenter Firewall by creating ACLs that get applied to a subnet or a network interface. A jelen témakörben található parancsfájlok a NetworkController modulból exportált Windows PowerShell-parancsokat használják.The example scripts in this topic use Windows PowerShell commands exported from the NetworkController module. Az ACL-ek konfigurálásához és kezeléséhez használhatja a Windows felügyeleti központot is.You can also use Windows Admin Center to configure and manage ACLs.

Az adatközpont tűzfalának konfigurálása az összes forgalom engedélyezéséhezConfigure Datacenter Firewall to allow all traffic

Az SDN üzembe helyezése után tesztelje az alapszintű hálózati kapcsolatot az új környezetben.Once you deploy SDN, you should test for basic network connectivity in your new environment. Ennek elvégzéséhez hozzon létre egy szabályt az adatközpont tűzfala számára, amely korlátozás nélkül engedélyezi az összes hálózati forgalmat.To accomplish this, create a rule for Datacenter Firewall that allows all network traffic, without restriction.

Az alábbi táblázat bejegyzéseivel hozhat létre olyan szabályokat, amelyek engedélyezik az összes bejövő és kimenő hálózati forgalmat.Use the entries in the following table to create a set of rules that allow all inbound and outbound network traffic.

Forrás IP-címeSource IP Cél IP-címeDestination IP ProtokollProtocol ForrásportSource Port CélportDestination Port IrányDirection MűveletekAction PrioritásPriority
* * MindAll * * BejövőInbound EngedélyezésAllow 100100
* * MindAll * * KimenőOutbound EngedélyezésAllow 110110

Ebben a példában egy ACL-t hoz létre két szabállyal:In this example, you create an ACL with two rules:

  1. AllowAll_Inbound – lehetővé teszi, hogy az összes hálózati forgalom áthaladjon a hálózati adapterre, ahol az ACL konfigurálva van.AllowAll_Inbound - allows all network traffic to pass into the network interface where this ACL is configured.
  2. AllowAllOutbound – engedélyezi, hogy az összes forgalom kikerüljön a hálózati adapterről.AllowAllOutbound - allows all traffic to pass out of the network interface. A "AllowAll-1" erőforrás-AZONOSÍTÓval azonosított ACL mostantól készen áll a virtuális alhálózatokban és hálózati adapterekben való használatra.This ACL, identified by the resource ID "AllowAll-1" is now ready to be used in virtual subnets and network interfaces.

Először kapcsolódjon a fürtcsomópontok egyikéhez egy PowerShell-munkamenet megnyitásával:First, connect to one of the cluster nodes by opening a PowerShell session:

Enter-PSSession <server-name>

Ezután futtassa a következő szkriptet az ACL létrehozásához: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>

Megjegyzés

A hálózati vezérlőhöz készült Windows PowerShell-parancs referenciája a hálózati vezérlő parancsmagjaicímű témakörben található.The Windows PowerShell command reference for Network Controller is located in the topic Network Controller cmdlets.

Az alhálózaton lévő adatforgalom korlátozására szolgáló ACL-ek használataUse ACLs to limit traffic on a subnet

Ebben a példában egy ACL-t hoz létre, amely megakadályozza, hogy a 192.168.0.0/24 alhálózaton belül a virtuális gépek (VM-EK) kommunikálnak egymással.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. Ez a típusú ACL hasznos lehet arra, hogy korlátozza a támadók az alhálózaton belüli későbbi terjesztésének lehetőségét, miközben továbbra is lehetővé teszi a virtuális gépek számára az alhálózaton kívülről érkező kérések fogadását, valamint a más alhálózatokon lévő más szolgáltatásokkal való kommunikáció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.

Forrás IP-címeSource IP Cél IP-címeDestination IP ProtokollProtocol ForrásportSource Port CélportDestination Port IrányDirection MűveletekAction PrioritásPriority
192.168.0.1192.168.0.1 * MindAll * * BejövőInbound EngedélyezésAllow 100100
* 192.168.0.1192.168.0.1 MindAll * * KimenőOutbound EngedélyezésAllow 101101
192.168.0.0/24192.168.0.0/24 * MindAll * * BejövőInbound LetiltásBlock 102102
* 192.168.0.0/24192.168.0.0/24 MindAll * * KimenőOutbound LetiltásBlock 103103
* * MindAll * * BejövőInbound EngedélyezésAllow 104104
* * MindAll * * KimenőOutbound EngedélyezésAllow 105105

A lenti példaként létrehozott, a (z) -192-168-0-0 azonosítójú alhálózat által azonosított ACL mostantól alkalmazható a "192.168.0.0/24" alhálózati címeket használó virtuális hálózati alhálózatra.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. A virtuális hálózati alhálózathoz csatolt bármely hálózati adapter automatikusan megkapja a fenti ACL-szabályokat.Any network interface that is attached to that virtual network subnet automatically gets the above ACL rules applied.

Az alábbi példa egy olyan parancsfájlt mutat be, amely az ACL-t a hálózati vezérlő REST API használatával hozza létre: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

Hozzáférés-vezérlési lista hozzáadása hálózati adapterhezAdd an ACL to a network interface

Miután létrehozott egy ACL-t, és hozzárendelte azt egy virtuális alhálózathoz, érdemes lehet felülbírálni az alapértelmezett ACL-t a virtuális alhálózaton egy egyedi hálózati adapterhez tartozó ACL-sel.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. Ebben az esetben a virtuális hálózat helyett közvetlenül a VLAN hálózatokhoz csatolt hálózati adapterekre alkalmazza a megadott ACL-eket.In this case, you apply specific ACLs directly to network interfaces attached to VLANs, instead of the virtual network. Ha a hálózati adapterhez csatlakoztatott virtuális alhálózathoz ACL-ek vannak beállítva, a rendszer mindkét ACL-t alkalmazza, és rangsorolja a hálózati adapter hozzáférés-vezérlési listáin a virtuális alhálózat ACL-jeit.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.

Ebben a példában bemutatjuk, hogyan adhat hozzá egy ACL-t egy virtuális hálózathoz.In this example, we demonstrate how to add an ACL to a virtual network.

Tipp

Lehetőség van arra is, hogy egy ACL-t is hozzáadhat a hálózati adapter létrehozásához.It is also possible to add an ACL at the same time that you create the network interface.

  1. Szerezze be vagy hozza létre azt a hálózati adaptert, amelyhez hozzá fogja adni az ACL-t.Get or create the network interface to which you will add the ACL.

    $nic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
    
  2. Szerezze be vagy hozza létre a hálózati adapterhez hozzáadni kívánt ACL-t.Get or create the ACL you will add to the network interface.

    $acl = get-networkcontrolleraccesscontrollist -ConnectionUri $uri -ResourceId "AllowAllACL"
    
  3. Rendelje hozzá az ACL-t a hálózati adapter AccessControlList tulajdonságához.Assign the ACL to the AccessControlList property of the network interface.

     $nic.properties.ipconfigurations[0].properties.AccessControlList = $acl
    
  4. Adja hozzá a hálózati adaptert a hálózati vezérlőhöz.Add the network interface in Network Controller.

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

Hozzáférés-vezérlési lista eltávolítása hálózati adapterrőlRemove an ACL from a network interface

Ebben a példában bemutatjuk, hogyan távolíthat el egy ACL-t egy hálózati adapterről.In this example, we show you how to remove an ACL from a network interface. Az ACL eltávolításával az alapértelmezett szabályok érvényesek a hálózati adapterre.Removing an ACL applies the default set of rules to the network interface. Az alapértelmezett szabályok lehetővé teszik az összes kimenő forgalmat, de blokkolja az összes bejövő forgalmat.The default set of rules allows all outbound traffic but blocks all inbound traffic. Ha engedélyezni szeretné az összes bejövő forgalmat, az előző példát követve adjon hozzá egy ACL-t, amely engedélyezi az összes bejövő és kimenő forgalmat.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. Szerezze be azt a hálózati adaptert, amelyről el kívánja távolítani az ACL-t.Get the network interface from which you will remove the ACL.

    $nic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
    
  2. Rendeljen $null a ipConfiguration AccessControlList tulajdonságához.Assign $null to the AccessControlList property of the ipConfiguration.

    $nic.properties.ipconfigurations[0].properties.AccessControlList = $null
    
  3. Adja hozzá a hálózati adapter objektumot a hálózati vezérlőben.Add the network interface object in Network Controller.

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

Tűzfal naplózásaFirewall auditing

A tűzfal naplózása új képesség az adatközpont tűzfala számára, amely rögzíti az SDN tűzfalszabályok által feldolgozott folyamatokat.Firewall auditing is a new capability for the Datacenter Firewall that records any flow processed by SDN firewall rules. A rendszer minden olyan ACL-t rögzít, amelyen engedélyezve van a naplózás.All ACLs that have logging enabled are recorded. A naplófájloknak olyan szintaxissal kell rendelkezniük, amely konzisztens az Azure Network Watcher flow naplóival.The log files must be in a syntax that is consistent with the Azure Network Watcher flow logs. Ezeket a naplókat diagnosztikai célból vagy a későbbi elemzések archiválására is felhasználhatják.These logs can be used for diagnostics or archived for later analysis.

Itt látható egy példa a tűzfal naplózásának engedélyezésére a gazdagép-kiszolgálókon.Here is a sample script to enable firewall auditing on the host servers. Frissítse a változókat az elején, majd futtassa ezt egy Azure Stack HCI-fürtön, amelyen telepítve van a hálózati vezérlő :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
}

Ha engedélyezve van, egy új fájl jelenik meg minden egyes gazdagépen óránként egyszer, a megadott könyvtárban.Once enabled, a new file appears in the specified directory on each host about once per hour. Rendszeresen fel kell dolgoznia ezeket a fájlokat, és el kell távolítania azokat a gazdagépekről.You should periodically process these files and remove them from the hosts. Az aktuális fájl nulla hosszúságú, és a következő órában megjelenő jel szerint van zárolva: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

Ezek a fájlok a folyamat eseményeinek sorát tartalmazzák, például: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"
            },

Megjegyzés: a naplózás csak azokra a szabályokra kerül sor, amelyeken engedélyezve van a naplózás , például: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
                                       }
                                   ]
                   }
}

Következő lépésekNext steps

A kapcsolódó információkkal kapcsolatban lásd még:For related information, see also: