教程:使用 Azure 门户记录出入虚拟机的网络流量

网络安全组流日志记录是 Azure 网络观察程序的一项功能,可用于记录有关流经网络安全组的 IP 流量的信息。 有关网络安全组流日志记录的详细信息,请参阅 NSG 流日志概述

本教程介绍如何使用 NSG 流日志来记录虚拟机网络流量,这些流量流经与其网络接口关联的网络安全组

Diagram shows the resources created during the tutorial.

在本教程中,你将了解如何执行以下操作:

  • 创建虚拟网络
  • 创建虚拟机,该虚拟机具有与其网络接口关联的网络安全组
  • 注册 Microsoft.insights 提供程序
  • 使用网络观察程序流日志为网络安全组启用流日志记录
  • 下载记录的数据
  • 查看记录的数据

先决条件

  • 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个试用版订阅

创建虚拟网络

在这部分,你要为虚拟机创建拥有一个子网的 myVNet 虚拟网络。

  1. 登录 Azure 门户

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

    Screenshot shows searching for virtual networks in the Azure portal.

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

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择“新建”。
    在“名称”中输入“myResourceGroup” 。
    选择“确定”。
    实例详细信息
    名称 输入 myVNet
    区域 选择“中国东部”。
  4. 选择“查看 + 创建”。

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

创建虚拟机

在本部分中,请创建“myVM”虚拟机。

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

  2. 选择“+ 新建”。

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

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

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

    设置
    网络接口
    虚拟网络 选择“myVNet”。
    子网 选择“mySubnet”
    公共 IP 选择 (new) myVM-ip
    NIC 网络安全组 选择“基本”。 此设置会创建一个名为“myVM-nsg”的网络安全组,并将其与“myVM”虚拟机的网络接口关联。
    公共入站端口 选择“允许所选端口” 。
    选择入站端口 选择“RDP (3389)”。

    注意

    建议仅在测试情况下将 RDP 端口设置为对 Internet 开放。 在生产环境下,建议仅限某个特定的 IP 地址或 IP 地址范围才能访问 RDP 端口。 此外,还可以阻止 Internet 访问 RDP 端口,并使用 Azure Bastion 从 Azure 门户安全地连接到虚拟机。

  6. 选择“查看 + 创建”。

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

  8. 部署完成后,选择“转到资源”以转到“myVM”的“概述”页面。

  9. 依次选择“连接”、“RDP”。

  10. 选择“下载 RDP 文件”,然后打开下载的文件。

  11. 选择”连接“,然后输入在前面步骤中创建的用户名和密码。 如果出现提示,请接受证书。

注册 Insights 提供程序

NSG 流日志记录要求使用 Microsoft.Insights 提供程序。 要检查其状态,请执行以下步骤:

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

  2. 在“订阅”中,选择要为其启用提供程序的 Azure 订阅。

  3. 在订阅的“设置”下选择“资源提供程序”。

  4. 在筛选器框中输入“见解”。

  5. 确认显示的提供程序状态为“已注册”。 如果状态为“NotRegistered”,请选择“Microsoft.Insights”提供程序,然后选择“注册”。

    Screenshot of registering Azure Insights provider in the Azure portal.

创建存储帐户

在本部分中,请创建一个用于存储流日志的存储帐户。

  1. 在门户顶部的搜索框中,输入“存储帐户”。 在搜索结果中选择“存储帐户”。

  2. 选择“+ 新建”。 在“创建存储帐户”的“基本信息”选项卡中,输入或选择以下值:

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    存储帐户名称 输入唯一名称。 本教程使用了“mynwstorageaccount”。
    区域 选择“(亚太)中国东部”。 存储帐户必须与虚拟机及其网络安全组位于同一区域。
    性能 选择“标准”。 NSG 流日志仅支持标准层存储帐户。
    冗余 选择“本地冗余存储 (LRS)”或达到持续性需求的其他复制策略。
  3. 选择“查看”选项卡或选择底部的“查看”按钮。

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

创建 NSG 流日志

在本部分中,请创建一个 NSG 流日志,该日志将保存到之前在本教程中创建的存储帐户中。

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

  2. 在“日志”下,选择“流日志”。

  3. 在“网络观察程序 | 流日志”,选择“+ 创建”或“创建流日志”蓝色按钮。

    Screenshot of Flow logs page in the Azure portal.

  4. 在“创建流日志”中输入或选择以下值:

    设置
    项目详细信息
    订阅 选择要记录的网络安全组的 Azure 订阅。
    网络安全组 选择“+ 选择资源”。
    在“选择网络安全组”中,选择“myVM-nsg”。 然后,选择“确认选择”。
    流日志名称 保留默认值“myVM-nsg-myResourceGroup-flowlog”。
    实例详细信息
    订阅 选择存储帐户的 Azure 订阅。
    存储帐户 选择你在之前的步骤中创建的存储帐户。 本教程使用了“mynwstorageaccount”。
    保持期(天) 若要永久保留存储帐户中的流日志数据(直到你将其从存储帐户中删除),请输入 0。 若要应用保留策略,请输入保留时间(以天为单位)。 有关存储定价的详细信息,请参阅 Azure 存储定价

    Screenshot of create NSG flow log page in the Azure portal.

    注意

    Azure 门户在“NetworkWatcherRG”资源组中创建 NSG 流日志。

  5. 选择“查看 + 创建”。

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

  7. 部署完成后,选择“转到资源”,确认流日志已创建并列在“流日志”页中。

    Screenshot of Flow logs page in the Azure portal showing the newly created flow log.

  8. 返回到与 myVM 虚拟机进行的 RDP 会话。

  9. 打开 Microsoft Edge 并转到 www.bing.com

下载流日志

在本部分中,请转到之前选择的存储帐户,并下载在上一部分中创建的 NSG 流日志。

  1. 在门户顶部的搜索框中,输入“存储帐户”。 在搜索结果中选择“存储帐户”。

  2. 选择“mynwstorageaccount”或之前创建并选择用于存储日志的存储帐户。

  3. 在“数据存储”下,选择“容器”。

  4. 选择“insights-logs-networksecuritygroupflowevent”容器。

  5. 在容器的文件夹层次结构中导航,直到找到 PT1H.json 文件。 NSG 日志文件将写入到遵循以下命名约定的文件夹层次结构:

    https://{storageAccountName}.blob.core.chinacloudapi.cn/insights-logs-networksecuritygroupflowevent/resourceId=/SUBSCRIPTIONS/{subscriptionID}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{networSecurityGroupName}/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={acAddress}/PT1H.json
    
  6. 选择 PT1H.json 文件右侧的省略号“...”,然后选择“下载”。

    Screenshot showing how to download nsg flow log from the storage account container in the Azure portal.

    注意

    可使用 Azure 存储资源管理器,从存储帐户访问和下载流日志。 有关详细信息,请参阅存储资源管理器入门

查看流日志

使用所选文本编辑器打开下载的 PT1H.json 文件。 以下示例是从下载的 PT1H.json 文件中截取的部分,显示了由规则 DefaultRule_AllowInternetOutBound 处理的流。

{
    "time": "2023-02-26T23:45:44.1503927Z",
    "systemId": "00000000-0000-0000-0000-000000000000",
    "macAddress": "112233445566",
    "category": "NetworkSecurityGroupFlowEvent",
    "resourceId": "/SUBSCRIPTIONS/abcdef01-2345-6789-0abc-def012345678/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/MYVM-NSG",
    "operationName": "NetworkSecurityGroupFlowEvents",
    "properties": {
        "Version": 2,
        "flows": [
            {
                "rule": "DefaultRule_AllowInternetOutBound",
                "flows": [
                    {
                        "mac": "112233445566",
                        "flowTuples": [
                            "1677455097,10.0.0.4,13.107.21.200,49982,443,T,O,A,C,7,1158,12,8143"                            
                        ]
                    }
                ]
            }
        ]
    }
}

flowTuples 的逗号分隔信息如下所示:

示例数据 数据代表的内容 说明
1677455097 时间戳 表示流发生时间的时间戳,采用 UNIX EPOCH 格式。 在前面的示例中,转换后的日期为 2023 年 2 月 26 日晚上 11:44:57 (UTC/GMT)。
10.0.0.4 源 IP 地址 充当流源的源 IP 地址。 10.0.0.4 是之前创建的 VM 的专用 IP 地址。
13.107.21.200 目标 IP 地址 充当流目标的目标 IP 地址。13.107.21.200 是 www.bing.com 的 IP 地址。 由于流量发往 Azure 外部,因此由安全规则 DefaultRule_AllowInternetOutBound 处理流。
49982 Source Port 充当流源的源端口。
443 Destination Port 充当流目标的目标端口。
T 协议 流的协议。 T:TCP。
O 方向 流的方向。 O:Outbound(出站)。
A 决策 由安全规则做出的决策。 A:Allowed(允许)。
C 流的状态(仅限版本 2) 流的状态。 C:继续执行正在进行的流。
7 发送的数据包(仅限版本 2) 自上次更新以来,发送到目标的 TCP 数据包总数。
1158 发送的字节数(仅限版本 2) 自上次更新以来,从源发送到目标的 TCP 数据包字节总数。 数据包字节包括数据包标头和有效负载。
12 接收的数据包(仅限版本 2) 自上次更新以来,从目标接收到的 TCP 数据包总数。
8143 接收的字节数(仅限版本 2) 自上次更新以来,从目标接接收的 TCP 数据包字节总数。 数据包字节包括数据包标头和有效负载。

清理资源

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

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

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

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

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

注意

虽然“myVM-nsg-myResourceGroup-flowlog”流日志位于“NetworkWatcherRG”资源组中,但在删除“myVM-nsg”网络安全组之后会被删除(通过删除“myResourceGroup”资源组)。