教程:使用网络安全组筛选网络流量

可以使用网络安全组来筛选进出 Azure 虚拟网络中 Azure 资源的入站和出站网络流量。

网络安全组包含安全规则,这些规则可按 IP 地址、端口和协议筛选网络流量。 当网络安全组与某个子网关联时,安全规则将应用于该子网中部署的资源。

学习教程期间所创建资源的示意图。

本教程介绍如何执行下列操作:

  • 创建网络安全组和安全规则
  • 创建应用程序安全组
  • 创建虚拟网络并将网络安全组关联到子网
  • 部署虚拟机并将其网络接口关联到应用程序安全组

先决条件

创建虚拟网络

下面的过程创建虚拟网络及资源子网。

  1. 在门户中,搜索并选择“虚拟网络”。

  2. 在“虚拟网络”页面上,选择“+ 创建”。

  3. 创建虚拟网络基本信息选项卡上输入或选择以下信息:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“新建”。
    在“名称”中输入“test-rg”。
    选择“确定”。
    实例详细信息
    名称 输入“vnet-1”。
    区域 选择“(亚太)中国东部 2”。

    Azure 门户中“创建虚拟网络”的“基本信息”选项卡的屏幕截图。

  4. 选择“下一步: IP 地址”,转到“IP 地址”选项卡。

  5. 在“子网”的地址空间框中,选择“默认”子网。

  6. 编辑子网中,输入或选择以下信息:

    设置
    子网名称 输入“subnet-1”。
    子网地址范围 输入“10.0.0.0/24”。

    默认子网重命名和配置的屏幕截图。

  7. 选择“保存”。

  8. 选择屏幕底部的查看 + 创建,然后在验证通过时选择创建

创建应用程序安全组

使用应用程序安全组 (ASG) 可将功能类似的服务器(例如 Web 服务器)分组到一起。

  1. 在门户顶部的搜索框中,输入应用程序安全组。 在搜索结果中选择“应用程序安全组”。

  2. 选择“+ 新建”。

  3. 在“创建应用程序安全组”的“基本信息”选项卡中,输入或选择以下信息

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    名称 输入“asg-web”。
    区域 选择“(亚太)中国北部 2”。
  4. 选择“查看 + 创建”。

  5. 选择“+ 新建”。

  6. 重复上述步骤并指定以下值:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    名称 输入“asg-mgmt”。
    区域 选择“(亚太)中国北部 2”。
  7. 选择“查看 + 创建”。

  8. 选择“创建”。

创建网络安全组

网络安全组 (NSG) 保护虚拟网络中的网络流量。

  1. 在门户顶部的搜索框中,输入“网络安全组”。 在搜索结果中选择“网络安全组”。

    注意

    在网络安全组的搜索结果中,你可能会看到网络安全组(经典)。 选择“网络安全组”。

  2. 选择+ 新建

  3. 在“创建网络安全组”的“基本信息”选项卡中,输入或选择以下信息

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    名称 输入“nsg-app1”。
    位置 选择“(亚太)中国北部 2”。
  4. 选择“查看 + 创建”。

  5. 选择“创建”。

将网络安全组关联到子网

在本部分,你要将网络安全组与前面创建的虚拟网络的子网相关联。

  1. 在门户顶部的搜索框中,输入“网络安全组”。 在搜索结果中选择网络安全组

  2. 选择nsg-1

  3. nsg-1设置部分选择子网

  4. 在“子网”页中,选择“+ 关联”:

    屏幕截图显示将网络安全组关联到子网。

  5. 在“关联子网”下,为“虚拟网络”选择“vnet-1 (test-rg)”。

  6. 为“子网”选择“subnet-1”,然后选择“确定”。

创建安全规则

  1. 在“nsg-1”的“设置”部分选择“入站安全规则”。

  2. 在“入站安全规则”页中,选择“+ 添加”。

  3. 创建一项允许端口 80 和 443 与 asg-web 应用程序安全组通信的安全规则。 在“添加入站安全规则”中,输入或选择以下信息:

    设置
    保留默认值“任意”。
    源端口范围 保留默认值 (*)。
    目标 选择“应用程序安全组”。
    目标应用程序安全组 选择“asg-web”。
    服务 保留默认值“自定义”。
    目标端口范围 输入“80,443”。
    协议 选择TCP
    操作 保留默认值“允许”。
    优先级 保留默认值“100”。
    名称 输入“allow-web-all”。
  4. 选择 添加

  5. 使用以下信息完成前面的步骤:

    设置
    保留默认值“任意”。
    源端口范围 保留默认值 (*)。
    目标 选择“应用程序安全组”。
    目标应用程序安全组 选择“asg-mgmt”。
    服务 选择 RDP
    操作 保留默认值“允许”。
    优先级 保留默认值“110”。
    名称 输入“allow-rdp-all”。
  6. 选择“添加” 。

注意

在本文中,将在 Internet 上为分配给“asg-mgmt”应用程序安全组的 VM 公开 RDP(端口 3389)。

在生产环境中,建议使用 VPN、专用网络连接或 Azure Bastion 来连接到要管理的 Azure 资源,而不要向 Internet 公开端口 3389。

有关 Azure Bastion 的详细信息,请参阅什么是 Azure Bastion?

创建虚拟机

在虚拟网络中创建两个虚拟机 (VM)。

  1. 在门户中,搜索并选择虚拟机

  2. 虚拟机中,依次选择+ 创建Azure 虚拟机

  3. 创建虚拟机基本信息选项卡中,输入或选择以下信息 :

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    虚拟机名称 输入“vm-web”。
    区域 选择“(亚太)中国北部 2”。
    可用性选项 保留默认值不需要基础结构冗余
    安全类型 选择“标准”。
    映像 选择“Windows Server 2022 Datacenter - x64 Gen2”。
    Azure Spot 实例 保留默认值“未选中”。
    大小 选择一个大小。
    管理员帐户
    用户名 输入用户名。
    Password 输入密码。
    确认密码 重新输入密码。
    入站端口规则
    选择入站端口 选择“无”。
  4. 选择“下一步: 磁盘”,然后选择“下一步: 网络”。

  5. 在“网络”中,输入或选择以下信息:

    设置
    网络接口
    虚拟网络 选择“vnet-1”。
    子网 选择“subnet-1 (10.0.0.0/24)”。
    公共 IP 保留默认值“新建公共 IP”。
    NIC 网络安全组 选择“无”。
  6. 选择“查看 + 创建”选项卡,或选择页面底部的“查看 + 创建”按钮 。

  7. 选择创建。 部署 VM 可能需要几分钟时间。

  8. 重复上述步骤以创建名为 vm-mgmt 的第二个虚拟机

将网络接口关联到 ASG

当你创建 VM 时,Azure 已经为每个 VM 创建了一个网络接口,并已将该接口附加到 VM。

请将每个 VM 的网络接口添加到前面创建的应用程序安全组:

  1. 在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中选择“虚拟机”,然后选择“vm-web”

  2. 从 vm-web 的“网络”部分选择“应用程序安全组”。

  3. 选择“添加应用程序安全组”,然后在“添加应用程序安全组”选项卡中,选择 asg-web。 最后选择“添加” 。

    配置应用程序安全组的屏幕截图。

  4. 对 vm-mgmt 重复前面的步骤,在“添加应用程序安全组”选项卡中选择“asg-mgmt”。

测试流量筛选器

  1. 在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。

  2. 选择“vm-mgmt”

  3. 在“概述”页上选择“连接”按钮,然后选择“本地 RDP”。

  4. 选择“下载 RDP 文件”。

  5. 打开下载的 rdp 文件,然后选择“连接”。 输入在创建 VM 时指定的用户名和密码。

  6. 选择“确定”

  7. 在连接过程中可能会收到证书警告。 如果收到警告,请选择“是”或“继续”以继续连接 。

    连接会成功,因为允许通过端口 3389 将来自 Internet 的入站流量发送到 asg-mgmt 应用程序安全组。

    vm-mgmt 的网络接口与 asg-mgmt 应用程序安全组相关联,并允许连接

  8. 在 vm-mgmt 上打开一个 PowerShell 会话。使用以下命令连接到 vm-web

    mstsc /v:vm-web
    

    从 vm-mgmt 到 vm-web 的 RDP 连接会成功,因为同一网络中的虚拟机默认情况下可以通过任何端口相互通信

    不能创建从 Internet 到 vm-web 虚拟机的 RDP 连接。 “asg-web”的安全规则阻止从 Internet 连接到端口 3389 入站。 默认情况下,拒绝来自 Internet 的入站流量到所有资源。

  9. 若要在 vm-web 虚拟机上安装 Microsoft IIS,请通过 PowerShell 会话在 vm-web 虚拟机上输入以下命令

    Install-WindowsFeature -name Web-Server -IncludeManagementTools
    
  10. 完成 IIS 安装后,断开与 vm-web 虚拟机的连接,从而保留 vm-mgmt 虚拟机远程桌面连接

  11. 断开与 vm-mgmt VM 的连接

  12. 在门户搜索框中搜索“vm-web”

  13. 在“vm-web”的“概述”页上,记下 VM 的“公共 IP 地址”。 以下示例中显示的地址为 203.0.113.103。 你的地址不同:

    概览页面中“虚拟机公共 IP 地址”的屏幕截图。

  14. 若要确认可以从 Internet 访问 vm-web Web 服务器,请在计算机上打开 Internet 浏览器并浏览到 http://<public-ip-address-from-previous-step>

你将看到 IIS 默认页,因为允许通过端口 80 将来自 Internet 的入站流量发送到 asg-web 应用程序安全组。

为 vm-web 附加的网络接口与 asg-web 应用程序安全组相关联,并允许连接

清理资源

使用创建的资源之后,可以删除资源组及其所有资源。

  1. 在 Azure 门户中,搜索并选择“资源组”。

  2. 在“资源组”页上,选择“test-rg”资源组。

  3. 在“test-rg”页上,选择“删除资源组”。

  4. 在“输入资源组名称以确认删除”中输入“test-rg”,然后选择“删除”。

后续步骤

在本教程中,你将了解:

  • 已创建一个网络安全组并将其关联到虚拟网络子网。
  • 已为 Web 和管理创建应用程序安全组。
  • 已创建两个虚拟机并将其网络接口与应用程序安全组相关联。
  • 已测试应用程序安全组网络筛选。

若要详细了解网络安全组,请参阅网络安全组概述管理网络安全组

默认情况下,Azure 在子网之间路由流量。 你也可以改为选择通过某个 VM(例如,充当防火墙的 VM)在子网之间路由流量。

若要了解如何创建路由表,请继续学习下一教程。