如何在 PowerShell 中创建 NSG(经典)

可以在虚拟网络中使用 NSG 控制流向一个或多个虚拟机 (VM)、角色实例、网络适配器 (NIC) 或子网的流量。NSG 包含根据流量方向、协议、源地址和端口以及目标地址和端口允许或拒绝流量的访问控制规则。可以随时更改 NSG 的规则,所做的更改适用于所有关联的实例。

有关 NSG 的详细信息,请访问什么是 NSG

Important

在使用 Azure 资源之前,请务必了解 Azure 当前使用两种部署模型:资源管理器部署模型和经典部署模型。在使用任何 Azure 资源之前,请确保你了解部署模型和工具。可以通过单击本文顶部的选项卡来查看不同工具的文档。本文介绍经典部署模型。你还可以在资源管理器部署模型中创建 NSG

方案

为了更好地说明如何创建 NSG,本文档将使用以下方案。

VNet 方案

在此方案中,你将为 TestVNet 虚拟网络中的每个子网创建 NSG,如下面所述:

  • NSG-FrontEnd。前端 NSG 将应用于 FrontEnd 子网,并且包含以下两个规则:
    • rdp-rule。此规则允许将 RDP 流量传输到 FrontEnd 子网。
    • web-rule。此规则允许将 HTTP 流量传输到 FrontEnd 子网。
  • NSG-BackEnd。后端 NSG 将应用于 BackEnd 子网,并且包含以下两个规则:
    • sql-rule。此规则只允许从 FrontEnd 子网传输的 SQL 流量。
    • web-rule。此规则将拒绝从 BackEnd 子网传输的所有 Internet 绑定流量。

将这些规则组合起来可创建一个与 DMZ 类似的方案,其中后端子网只能接收来自前端子网的 SQL 通信的传入流量且不能访问 Internet,而前端子网可以与 Internet 通信并只接收传入 HTTP 请求。

下面的示例 PowerShell 命令需要一个已经基于上述方案创建的简单环境。如果你想要运行本文档中所显示的命令,首先通过创建 VNet 构建测试环境。

如何为前端子网创建 NSG

若要基于上述方案创建名为 NSG-FrontEnd 的 NSG,请执行下面的步骤:

  1. 如果你从未使用过 Azure PowerShell,请参阅 How to Install and Configure Azure PowerShell(如何安装和配置 Azure PowerShell),并始终按照说明进行操作,以登录到 Azure 并选择你的订阅。

  2. 创建名为 NSG-FrontEnd 的网络安全组。

    New-AzureNetworkSecurityGroup -Name "NSG-FrontEnd" -Location uswest `
        -Label "Front end subnet NSG"
    

    预期输出:

    Name         Location   Label               
    
    NSG-FrontEnd China North    Front end subnet NSG
    
  3. 创建允许从 Internet 访问端口 3389 的安全规则。

    Get-AzureNetworkSecurityGroup -Name "NSG-FrontEnd" `
    | Set-AzureNetworkSecurityRule -Name rdp-rule `
        -Action Allow -Protocol TCP -Type Inbound -Priority 100 `
        -SourceAddressPrefix Internet  -SourcePortRange '*' `
        -DestinationAddressPrefix '*' -DestinationPortRange '3389' 
    

    预期输出:

    Name     : NSG-FrontEnd
    Location : China North
    Label    : Front end subnet NSG
    Rules    : 
    
                  Type: Inbound
    
               Name                 Priority  Action   Source Address  Source Port   Destination      Destination    Protocol
                                                       Prefix          Range         Address Prefix   Port Range             
    
               rdp-rule             100       Allow    INTERNET        *             *                3389           TCP     
               ALLOW VNET INBOUND   65000     Allow    VIRTUAL_NETWORK *             VIRTUAL_NETWORK  *              *       
               ALLOW AZURE LOAD     65001     Allow    AZURE_LOADBALAN *             *                *              *       
               BALANCER INBOUND                        CER                                                                   
               DENY ALL INBOUND     65500     Deny     *               *             *                *              *       
    
                  Type: Outbound
    
               Name                 Priority  Action   Source Address  Source Port   Destination      Destination    Protocol
                                                       Prefix          Range         Address Prefix   Port Range             
    
               ALLOW VNET OUTBOUND  65000     Allow    VIRTUAL_NETWORK *             VIRTUAL_NETWORK  *              *       
               ALLOW INTERNET       65001     Allow    *               *             INTERNET         *              *       
               OUTBOUND                                                                                                      
               DENY ALL OUTBOUND    65500     Deny     *               *             *                *              *
    
  4. 创建允许从 Internet 访问端口 80 的安全规则。

    Get-AzureNetworkSecurityGroup -Name "NSG-FrontEnd" `
    | Set-AzureNetworkSecurityRule -Name web-rule `
        -Action Allow -Protocol TCP -Type Inbound -Priority 200 `
        -SourceAddressPrefix Internet  -SourcePortRange '*' `
        -DestinationAddressPrefix '*' -DestinationPortRange '80' 
    

    预期输出:

    Name     : NSG-FrontEnd
    Location : China North
    Label    : Front end subnet NSG
    Rules    : 
    
                  Type: Inbound
    
               Name                 Priority  Action   Source Address  Source Port   Destination      Destination    Protocol
                                                       Prefix          Range         Address Prefix   Port Range             
    
               rdp-rule             100       Allow    INTERNET        *             *                3389           TCP     
               web-rule             200       Allow    INTERNET        *             *                80             TCP     
               ALLOW VNET INBOUND   65000     Allow    VIRTUAL_NETWORK *             VIRTUAL_NETWORK  *              *       
               ALLOW AZURE LOAD     65001     Allow    AZURE_LOADBALAN *             *                *              *       
               BALANCER INBOUND                        CER                                                                   
               DENY ALL INBOUND     65500     Deny     *               *             *                *              *       
    
                  Type: Outbound
    
               Name                 Priority  Action   Source Address  Source Port   Destination      Destination    Protocol
                                                       Prefix          Range         Address Prefix   Port Range             
    
               ALLOW VNET OUTBOUND  65000     Allow    VIRTUAL_NETWORK *             VIRTUAL_NETWORK  *              *       
               ALLOW INTERNET       65001     Allow    *               *             INTERNET         *              *       
               OUTBOUND                                                                                                      
               DENY ALL OUTBOUND    65500     Deny     *               *             *                *              *   
    

如何为后端子网创建 NSG

  1. 创建名为 NSG-BackEnd 的网络安全组。

    New-AzureNetworkSecurityGroup -Name "NSG-BackEnd" -Location uswest `
        -Label "Back end subnet NSG"
    

    预期输出:

    Name        Location   Label              
    
    NSG-BackEnd China North    Back end subnet NSG
    
  2. 创建允许从前端子网访问端口 1433(SQL Server 使用的默认端口)的安全规则。

    Get-AzureNetworkSecurityGroup -Name "NSG-FrontEnd" `
    | Set-AzureNetworkSecurityRule -Name rdp-rule `
        -Action Allow -Protocol TCP -Type Inbound -Priority 100 `
        -SourceAddressPrefix 192.168.1.0/24  -SourcePortRange '*' `
        -DestinationAddressPrefix '*' -DestinationPortRange '1433' 
    

    预期输出:

    Name     : NSG-BackEnd
    Location : China North
    Label    : Back end subnet NSG
    Rules    : 
    
                  Type: Inbound
    
               Name                 Priority  Action   Source Address  Source Port   Destination      Destination    Protocol
                                                       Prefix          Range         Address Prefix   Port Range             
    
               fe-rule              100       Allow    192.168.1.0/24  *             *                1433           TCP     
               ALLOW VNET INBOUND   65000     Allow    VIRTUAL_NETWORK *             VIRTUAL_NETWORK  *              *       
               ALLOW AZURE LOAD     65001     Allow    AZURE_LOADBALAN *             *                *              *       
               BALANCER INBOUND                        CER                                                                   
               DENY ALL INBOUND     65500     Deny     *               *             *                *              *       
    
                  Type: Outbound
    
               Name                 Priority  Action   Source Address  Source Port   Destination      Destination    Protocol
                                                       Prefix          Range         Address Prefix   Port Range             
    
               ALLOW VNET OUTBOUND  65000     Allow    VIRTUAL_NETWORK *             VIRTUAL_NETWORK  *              *       
               ALLOW INTERNET       65001     Allow    *               *             INTERNET         *              *       
               OUTBOUND                                                                                                      
               DENY ALL OUTBOUND    65500     Deny     *               *             *                *              *      
    
  3. 创建阻止从子网访问 Internet 的安全规则。

    Get-AzureNetworkSecurityGroup -Name "NSG-BackEnd" `
    | Set-AzureNetworkSecurityRule -Name block-internet `
        -Action Deny -Protocol '*' -Type Outbound -Priority 200 `
        -SourceAddressPrefix '*'  -SourcePortRange '*' `
        -DestinationAddressPrefix Internet -DestinationPortRange '*' 
    

    预期输出:

    Name     : NSG-BackEnd
    Location : China North
    Label    : Back end subnet NSG
    Rules    : 
    
                  Type: Inbound
    
               Name                 Priority  Action   Source Address  Source Port   Destination      Destination    Protocol
                                                       Prefix          Range         Address Prefix   Port Range             
    
               fe-rule              100       Allow    192.168.1.0/24  *             *                1433           TCP     
               ALLOW VNET INBOUND   65000     Allow    VIRTUAL_NETWORK *             VIRTUAL_NETWORK  *              *       
               ALLOW AZURE LOAD     65001     Allow    AZURE_LOADBALAN *             *                *              *       
               BALANCER INBOUND                        CER                                                                   
               DENY ALL INBOUND     65500     Deny     *               *             *                *              *       
    
                  Type: Outbound
    
               Name                 Priority  Action   Source Address  Source Port   Destination      Destination    Protocol
                                                       Prefix          Range         Address Prefix   Port Range             
    
               block-internet       200       Deny     *               *             INTERNET         *              *       
               ALLOW VNET OUTBOUND  65000     Allow    VIRTUAL_NETWORK *             VIRTUAL_NETWORK  *              *       
               ALLOW INTERNET       65001     Allow    *               *             INTERNET         *              *       
               OUTBOUND                                                                                                      
               DENY ALL OUTBOUND    65500     Deny     *               *             *                *              *