教程:使用 Azure 门户记录出入虚拟机的网络流量
重要
2027 年 9 月 30 日,网络安全组 (NSG) 流日志将停用。 在此停用过程中,从 2025 年 6 月 30 日起,你将无法再创建新的 NSG 流日志。 建议迁移到虚拟网络流日志,从而克服 NSG 流日志的限制。 自停用日期之后,将不再支持使用 NSG 流日志启用的流量分析,并且订阅中的现有 NSG 流日志资源将被删除。 但是,不会删除 NSG 流日志记录,并将继续遵循其各自的保留策略。 有关详细信息,请查看官方公告。
网络安全组流日志记录是 Azure 网络观察程序的一项功能,可用于记录有关流经网络安全组的 IP 流量的信息。 有关网络安全组流日志记录的详细信息,请参阅 NSG 流日志概述。
本教程介绍如何使用 NSG 流日志来记录虚拟机网络流量,这些流量流经与其网络接口关联的网络安全组。
在本教程中,你将了解如何执行以下操作:
- 创建虚拟网络
- 创建虚拟机,该虚拟机具有与其网络接口关联的网络安全组
- 注册 Microsoft.insights 提供程序
- 使用网络观察程序流日志为网络安全组启用流日志记录
- 下载记录的数据
- 查看记录的数据
- 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个试用版订阅。
在这部分,你要为虚拟机创建拥有一个子网的 myVNet 虚拟网络。
登录 Azure 门户。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择“+ 新建”。 在“创建虚拟网络”的“基本信息”选项卡中,输入或选择以下值:
设置 值 项目详细信息 订阅 选择 Azure 订阅。 资源组 选择“新建”。
在“名称”中输入“myResourceGroup” 。
选择“确定”。实例详细信息 名称 输入 myVNet。 区域 选择“中国东部”。 选择“查看 + 创建”。
检查设置,然后选择“创建”。
在本部分中,请创建“myVM”虚拟机。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择“+ 新建”。
在“创建虚拟机”中,在“基本信息”选项卡中输入或选择以下值:
设置 值 项目详细信息 订阅 选择 Azure 订阅。 资源组 选择“myResourceGroup”。 实例详细信息 虚拟机名称 输入myVM。 区域 选择“(亚太)中国东部”。 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准”。 映像 选择“Windows Server 2022 Datacenter: Azure Edition - x64 Gen2”。 大小 选择大小或保留默认设置。 管理员帐户 用户名 输入用户名。 Password 输入密码。 确认密码 重新输入密码。 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”选项卡上,选择以下值:
设置 值 网络接口 虚拟网络 选择“myVNet”。 子网 选择“mySubnet”。 公共 IP 选择 (new) myVM-ip。 NIC 网络安全组 选择“基本”。 此设置会创建一个名为“myVM-nsg”的网络安全组,并将其与“myVM”虚拟机的网络接口关联。 公共入站端口 选择“允许所选端口” 。 选择入站端口 选择“RDP (3389)”。 注意
建议仅在测试情况下将 RDP 端口设置为对 Internet 开放。 在生产环境下,建议仅限某个特定的 IP 地址或 IP 地址范围才能访问 RDP 端口。 此外,还可以阻止 Internet 访问 RDP 端口,并使用 Azure Bastion 从 Azure 门户安全地连接到虚拟机。
选择“查看 + 创建”。
检查设置,然后选择“创建”。
部署完成后,选择“转到资源”以转到“myVM”的“概述”页面。
依次选择“连接”、“RDP”。
选择“下载 RDP 文件”,然后打开下载的文件。
选择”连接“,然后输入在前面步骤中创建的用户名和密码。 如果出现提示,请接受证书。
NSG 流日志记录要求使用 Microsoft.Insights 提供程序。 要检查其状态,请执行以下步骤:
在门户顶部的搜索框中,输入“订阅”。 从搜索结果中选择“订阅”。
在“订阅”中,选择要为其启用提供程序的 Azure 订阅。
在订阅的“设置”下选择“资源提供程序”。
在筛选器框中输入“见解”。
确认显示的提供程序状态为“已注册”。 如果状态为“NotRegistered”,请选择“Microsoft.Insights”提供程序,然后选择“注册”。
在本部分中,请创建一个用于存储流日志的存储帐户。
在门户顶部的搜索框中,输入“存储帐户”。 从搜索结果中选择“存储帐户”。
选择“+ 新建”。 在“创建存储帐户”的“基本信息”选项卡中,输入或选择以下值:
设置 值 项目详细信息 订阅 选择 Azure 订阅。 资源组 选择“myResourceGroup”。 实例详细信息 存储帐户名称 输入唯一名称。 本教程使用了“mynwstorageaccount”。 区域 选择“(亚太)中国东部”。 存储帐户必须与虚拟机及其网络安全组位于同一区域。 性能 选择“标准”。 NSG 流日志仅支持标准层存储帐户。 冗余 选择“本地冗余存储 (LRS)”或达到持续性需求的其他复制策略。 选择“查看”选项卡或选择底部的“查看”按钮。
检查设置,然后选择“创建”。
在本部分中,请创建一个 NSG 流日志,该日志将保存到之前在本教程中创建的存储帐户中。
在门户顶部的搜索框中,输入“网络观察程序”。 在搜索结果中,选择“网络观察程序”。
在“日志”下,选择“流日志”。
在“网络观察程序 | 流日志”,选择“+ 创建”或“创建流日志”蓝色按钮。
在“创建流日志”中输入或选择以下值:
设置 值 项目详细信息 订阅 选择要记录的网络安全组的 Azure 订阅。 网络安全组 选择“+ 选择资源”。
在“选择网络安全组”中,选择“myVM-nsg”。 然后,选择“确认选择”。流日志名称 保留默认值“myVM-nsg-myResourceGroup-flowlog”。 实例详细信息 订阅 选择存储帐户的 Azure 订阅。 存储帐户 选择你在之前的步骤中创建的存储帐户。 本教程使用了“mynwstorageaccount”。 保持期(天) 若要永久保留存储帐户中的流日志数据(直到你将其从存储帐户中删除),请输入 0。 若要应用保留策略,请输入保留时间(以天为单位)。 有关存储定价的详细信息,请参阅 Azure 存储定价。 备注
Azure 门户在“NetworkWatcherRG”资源组中创建 NSG 流日志。
选择“查看 + 创建”。
检查设置,然后选择“创建”。
部署完成后,选择“转到资源”,确认流日志已创建并列在“流日志”页中。
返回到与 myVM 虚拟机进行的 RDP 会话。
打开 Microsoft Edge 并转到
www.bing.com
。
在本部分中,请转到之前选择的存储帐户,并下载在上一部分中创建的 NSG 流日志。
在门户顶部的搜索框中,输入“存储帐户”。 从搜索结果中选择“存储帐户”。
选择“mynwstorageaccount”或之前创建并选择用于存储日志的存储帐户。
在“数据存储”下,选择“容器”。
选择“insights-logs-networksecuritygroupflowevent”容器。
在容器的文件夹层次结构中导航,直到找到
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
选择 PT1H.json 文件右侧的省略号“...”,然后选择“下载”。
备注
可使用 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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 资源组时,将其及其包含的所有资源删除:
在门户顶部的搜索框中输入 myResourceGroup。 从搜索结果中选择“myResourceGroup”。
选择“删除资源组” 。
在“删除资源组”中,输入 myResourceGroup,然后选择“删除”。
选择“删除”以确认删除资源组及其所有资源。
备注
虽然“myVM-nsg-myResourceGroup-flowlog”流日志位于“NetworkWatcherRG”资源组中,但在删除“myVM-nsg”网络安全组之后会被删除(通过删除“myResourceGroup”资源组)。
- 若要详细了解 NSG 流日志,请参阅 网络安全组的流日志记录。
- 若要了解如何创建、更改、启用、禁用或删除 NSG 流日志,请参阅 管理 NSG 流日志。
- 若要了解流量分析,请参阅流量分析概述。