你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

诊断网络安全规则

可以使用网络安全组来筛选和控制进出 Azure 资源的入站和出站网络流量。 你还可以使用 Azure Virtual Network Manager 将管理安全规则应用于 Azure 资源,以便控制网络流量。

本文介绍如何使用 Azure 网络观察程序 NSG 诊断来检查和排查应用于 Azure 流量的安全规则问题。 NSG 诊断可检查应用的安全规则是允许还是拒绝流量。

本文中的示例演示了配置错误的网络安全组如何阻止你使用 Azure Bastion 连接到虚拟机。

先决条件

创建虚拟网络和堡垒主机

在本部分,将创建包含两个子网和一个 Azure Bastion 主机的虚拟网络。 第一个子网用于虚拟机,第二个子网用于 Bastion 主机。 你还可以创建网络安全组并将其应用于第一个子网。

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

    屏幕截图显示如何在 Azure 门户中搜索虚拟网络。

  2. 选择“+ 新建”。 在“创建虚拟网络”的“基本信息”选项卡中,输入或选择以下值:

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择“新建”。
    在“名称”中输入“myResourceGroup”。
    选择“确定”。
    实例详细信息
    虚拟网络名称 输入“myVNet”。
    区域 选择“(US)美国东部”。
  3. 选择“安全性”选项卡,或者选择页面底部的“下一步”按钮。

  4. 在“Azure Bastion”下,选择“启用 Azure Bastion”并接受默认值:

    设置
    Azure Bastion 主机名 myVNet-Bastion。
    Azure Bastion 公共 IP 地址 (新)myVNet-bastion-publicIpAddress。
  5. 选择“IP 地址”选项卡,或者选择页面底部的“下一步”按钮。

  6. 接受默认 IP 地址空间 10.0.0.0/16,并通过选择铅笔图标编辑默认子网。 在“编辑子网”页中,输入以下值:

    设置
    子网详细信息
    名称 输入“mySubnet”。
    安全性
    网络安全组 选择“新建”。
    在“名称”中,输入“mySubnet-nsg”。
    选择“确定”。
  7. 选择“查看 + 创建”。

  8. 检查设置,然后选择“创建”。

重要

无论出站数据使用情况如何,小时定价都从部署 Bastion 的时刻开始计算。 有关详细信息,请参阅定价。 我们建议在使用完该资源后将其删除。

创建虚拟机

在本部分,将创建应用于其网络接口的虚拟机和网络安全组。

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

  2. 选择“+ 创建”,然后选择“Azure 虚拟机”。

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

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    虚拟机名称 输入myVM
    区域 选择(US)美国东部
    可用性选项 选择“无需基础结构冗余”。
    安全类型 选择“标准”。
    映像 选择“Windows Server 2022 Datacenter: Azure Edition - x64 Gen2”。
    大小 选择大小或保留默认设置。
    管理员帐户
    用户名 输入用户名。
    Password 输入密码。
    确认密码 重新输入密码。
  4. 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。

  5. 在“网络”选项卡上,选择以下值:

    设置
    网络接口
    虚拟网络 选择“myVNet”。
    子网 选择“默认值”。
    公共 IP 选择
    NIC 网络安全组 选择基本
    公共入站端口 选择
  6. 选择“查看 + 创建”。

  7. 检查设置,然后选择“创建”。

将安全规则添加到网络安全组

在本部分,将安全规则添加到与 myVM 的网络接口关联的网络安全组。 该规则将拒绝来自虚拟网络的任何入站流量。

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

  2. 在网络安全组列表中,选择“myVM-nsg”。

  3. 在“设置”下,选择“入站安全规则”。

  4. 选择“+ 添加”。 在“网络”选项卡中,输入或选择以下值:

    设置
    选择“服务标记”。
    源服务标记 选择“VirtualNetwork”。
    源端口范围 输入 *。
    目标 选择“任何”
    服务 选择“自定义”。
    目标端口范围 输入 *。
    协议 选择“任何”
    操作 选择“拒绝”
    优先级 输入“1000”。
    名称 输入“DenyVnetInBound”。
  5. 选择 添加

    屏幕截图显示如何将入站安全规则添加到 Azure 门户中的网络安全组。

注意

VirtualNetwork 服务标记代表虚拟网络的地址空间、所有连接的本地地址空间、对等互连的虚拟网络、已连接到虚拟网络网关的虚拟网络、主机的虚拟 IP 地址,以及用户定义的路由上使用的地址前缀。 有关详细信息,请参阅服务标记

检查应用于虚拟机流量的安全规则

使用 NSG 诊断检查应用于从 Bastion 子网传输到虚拟机的流量的安全规则。

  1. 在门户顶部的搜索栏中,搜索并选择“网络观察程序”。

  2. 在“网络诊断工具”下,选择“NSG 诊断”。

  3. 在“NSG 诊断”页上,输入或选择以下值:

    设置
    目标资源
    目标资源类型 选择“虚拟机”。
    虚拟机 选择 myVM 虚拟机。
    流量详细信息
    协议 选择“TCP”。 其他可用选项包括:“任何”、“UDP”和“ICMP”。
    方向 选择“入站”。 其他可用选项为“出站”。
    源类型 选择“IPv4 地址/CIDR”。 其他可用选项为“服务标记”。
    IPv4 地址/CIDR 输入“10.0.1.0/26”,这是 Bastion 子网的 IP 地址范围。 可接受的值包括:单个 IP 地址、多个 IP 地址、单个 IP 前缀、多个 IP 前缀。
    目标 IP 地址 保留默认值 10.0.0.4,它是 myVM 的 IP 地址。
    目标端口 输入 * 以包含所有端口。

    屏幕截图显示 NSG 诊断在 Azure 门户中测试虚拟机入站连接所需的值。

  4. 选择“运行 NSG 诊断”以运行测试。 当 NSG 诊断完成对所有安全规则的检查后,它会显示结果。

    显示虚拟机入站连接结果为“已拒绝”的屏幕截图。

    结果显示有三个安全规则评估了来自 Bastion 子网的入站连接:

    • GlobalRules:此安全管理规则使用 Azure Virtual Network Manage 在虚拟网络级别进行应用。 该规则允许从 Bastion 子网到虚拟机的入站 TCP 流量。
    • mySubnet-nsg:此网络安全组在子网级别(虚拟机子网)进行应用。 该规则允许从 Bastion 子网到虚拟机的入站 TCP 流量。
    • myVM-nsg:此网络安全组在网络接口 (NIC) 级别进行应用。 该规则拒绝从 Bastion 子网到虚拟机的入站 TCP 流量。
  5. 选择“myVM-nsg”的“查看详细信息”,以详细了解此网络安全组包含的安全规则以及哪些规则拒绝了流量。

    屏幕截图显示拒绝了虚拟机流量的网络安全组的详细信息。

    myVM-nsg 网络安全组中,安全规则 DenyVnetInBound 拒绝了从 VirtualNetwork 服务标记的地址空间流向虚拟机的任何流量。 Bastion 主机使用地址范围 10.0.1.0/26 中的 IP 地址(包含在 VirtualNetwork 服务标记中)连接到虚拟机。 因此,来自 Bastion 主机的连接将被 DenyVnetInBound 安全规则拒绝。

添加安全规则以允许来自 Bastion 子网的流量

若要使用 Azure Bastion 连接到 myVM,网络安全组必须允许来自 Bastion 子网的流量。 若要允许来自 10.0.1.0/26 的流量,请添加比 DenyVnetInBound 规则优先级更高(优先级数字更低)的安全规则,或编辑 DenyVnetInBound 规则以允许来自 Bastion 子网的流量。

可从“网络观察程序”页将安全规则添加到网络安全组,该页显示了拒绝虚拟机流量的安全规则的相关详细信息。

  1. 若要从网络观察程序中添加安全规则,请选择“+ 添加安全规则”,然后输入或选择以下值:

    设置
    选择“IP 地址”。
    源 IP 地址/CIDR 范围 输入“10.0.1.0/26”,这是 Bastion 子网的 IP 地址范围。
    源端口范围 输入 *。
    目标 选择“任何”
    服务 选择“自定义”。
    目标端口范围 输入 *。
    协议 选择“任何”
    操作 选择“允许”
    优先级 输入“900”,其优先级高于用于 DenyVnetInBound 规则的 1000
    名称 输入“AllowBastionConnections”。

    屏幕截图显示如何将新的安全规则添加到网络安全组,以允许从 Bastion 子网到虚拟机的流量。

  2. 选择“重新检查”以再次运行诊断会话。 诊断会话现在应该会显示允许来自 Bastion 子网的流量。

    屏幕截图显示添加安全规则后网络安全组的详细信息,该规则允许从 Bastion 子网到虚拟机的流量。

    安全规则 AllowBastionConnections 允许从 10.0.1.0/26 中的任何 IP 地址到虚拟机的流量。 由于 Bastion 主机使用 10.0.1.0/26 中的 IP 地址,因此,AllowBastionConnections 安全规则允许其与虚拟机的连接。

清理资源

不再需要资源组时,可将资源组及其包含的所有资源一并删除:

  1. 在门户顶部的搜索框中输入 myResourceGroup。 从搜索结果中选择“myResourceGroup”。

  2. 选择“删除资源组” 。

  3. 在“删除资源组”中,输入 myResourceGroup,然后选择“删除”。

  4. 选择“删除”以确认删除资源组及其所有资源。

后续步骤