教程:使用 Azure 门户记录出入虚拟机的网络流量
可以通过网络安全组 (NSG) 筛选虚拟机 (VM) 的入站和出站流量。 可以使用网络观察程序的 NSG 流日志功能记录流经 NSG 的网络流量。
在本教程中,你将了解如何执行以下操作:
- 通过网络安全组创建 VM
- 启用网络观察程序并注册 Microsoft.Insights 提供程序
- 使用网络观察程序的 NSG 流日志功能启用 NSG 的流量日志
- 下载记录的数据
- 查看记录的数据
如果没有 Azure 订阅,请在开始前创建一个试用版订阅。
先决条件
- 具有活动订阅的 Azure 帐户。
登录 Azure
登录 Azure 门户。
创建虚拟机
登录 Azure 门户。
选择 Azure 门户左上角的“+ 创建资源”。 在新页面的搜索筛选器中输入“Windows Server 2022 Datacenter: Azure Edition”,然后在搜索结果中选择“Windows Server 2022 Datacenter: Azure Edition”项 。
在“Windows Server 2022 Datacenter: Azure Edition”页面中选择“+ 创建”。
在“创建虚拟机”中,输入或选择以下信息。
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“新建”。
在“名称”中输入“myResourceGroup” 。
选择“确定”。实例详细信息 虚拟机名称 输入“myVM”。 区域 选择“(亚太)中国东部”。 可用性选项 选择“无需基础结构冗余”。 映像 选择“Windows Server 2022 Datacenter: Azure Edition - Gen2”。 大小 选择一个大小。 管理员帐户 用户名 输入用户名。 Password 输入密码。 确认密码 确认密码。 入站端口规则 公共入站端口 保留默认值“允许所选端口”。 选择入站端口 保留默认值“RDP (3389)”。 选择“查看 + 创建”。
选择“创建”。
创建虚拟机需花费几分钟的时间。 在创建完 VM 之前,请勿继续执行剩余的步骤。 门户在创建虚拟机的同时,还会创建名为 myVM-nsg 的网络安全组并将其关联到 VM 的网络接口。
启用网络观察程序
如果已在“中国东部”区域中启用网络观察程序,请跳到注册 Insights 提供程序。
在门户顶部的搜索框中,输入“网络观察程序”。 在搜索结果中选择“网络观察程序”。
在“网络观察程序”的“概述”页面中,选择订阅的“区域”列中的
>
图标,将其展开,然后选择“中国东部”右侧的“…”,如下图所示 :在弹出菜单中选择“启用网络观察程序”。
注册 Insights 提供程序
NSG 流日志记录要求使用 Microsoft.Insights 提供程序。 若要注册该提供程序,请完成以下步骤:
在门户顶部的搜索框中,输入“订阅”。 在搜索结果中选择“订阅”。
在“订阅”中,选择要为其启用提供程序的订阅。
在订阅的“设置”中选择“资源提供程序” 。
在筛选器框中输入“Microsoft.Insights”。
确认显示的提供程序状态为“已注册”。 如果状态为“未注册”,请选择提供程序,然后选择“注册” 。
启用 NSG 流日志
NSG 流日志数据写入 Azure 存储帐户。 若要创建日志数据的存储帐户,请完成以下步骤。
在门户顶部的搜索框中,输入“存储帐户”。 在搜索结果中选择“存储帐户”。
在“存储帐户”中,选择“+ 创建” 。
在“创建存储帐户”中,输入或选择以下信息。
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“myResourceGroup”。 实例详细信息 存储帐户名称 为存储帐户输入名称。
长度必须为 3-24 个字符,只能包含小写字母和数字,且必须在所有 Azure 存储中唯一。区域 选择“(亚太)中国东部”。 性能 保留默认值“标准”。 冗余 保留“异地冗余存储(GRS)”的默认值。 选择“查看”。
选择“创建” 。
创建存储帐户可能需要大约一分钟的时间。 在创建好存储帐户之前,请勿继续执行剩余的步骤。 在所有情况下,存储帐户必须与 NSG 位于同一区域中。
在门户顶部的搜索框中,输入“网络观察程序”。 在搜索结果中选择“网络观察程序”。
在“日志”中,选择“NSG 流日志”,如下图所示 :
从 NSG 列表中选择名为 myVm-nsg 的 NSG。
在“流日志设置”下选择“启用”。
选择流日志记录版本。 版本 2 包含流会话统计信息(字节和数据包)
选择在启用 NSG 流日志的步骤 3 中创建的存储帐户。
注意
NSG 流日志不适用于已启用分层命名空间的存储帐户。
将“保留期(天)”设置为 5,然后选择“保存”。
下载流日志
在门户的网络观察程序的“日志”下选择“NSG 流日志” 。
选择“可从配置的存储帐户下载流日志”,如下图所示:
选择在启用 NSG 流日志的步骤 3 中配置的存储帐户。
在“Blob 服务”下选择“容器”,然后选择“insights-logs-networksecuritygroupflowevent”容器 。
在容器中,导航浏览文件夹层次结构,直至找到 PT1H.json 文件,如下图所示。 将日志文件写入遵循以下命名约定的文件夹层次结构中:
https://{storageAccountName}.blob.core.chinacloudapi.cn/insights-logs-networksecuritygroupflowevent/resourceId=/SUBSCRIPTIONS/{subscriptionID}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{nsgName}/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json
选择 PT1H.json 文件右侧的“...”,然后选择“下载”。
查看流日志
以下示例 JSON 显示你将在 PT1H.json 文件中看到的为每个流记录的数据:
版本 1 流日志事件
{
"time": "2018-05-01T15:00:02.1713710Z",
"systemId": "<Id>",
"category": "NetworkSecurityGroupFlowEvent",
"resourceId": "/SUBSCRIPTIONS/<subscriptionId>/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/MYVM-NSG",
"operationName": "NetworkSecurityGroupFlowEvents",
"properties": {
"Version": 1,
"flows": [
{
"rule": "UserRule_default-allow-rdp",
"flows": [
{
"mac": "<macAddress>",
"flowTuples": [
"1525186745,192.168.1.4,10.0.0.4,55960,3389,T,I,A"
]
}
]
}
]
}
}
版本 2 流日志事件
{
"time": "2018-11-13T12:00:35.3899262Z",
"systemId": "<Id>",
"category": "NetworkSecurityGroupFlowEvent",
"resourceId": "/SUBSCRIPTIONS/<subscriptionId>/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/MYVM-NSG",
"operationName": "NetworkSecurityGroupFlowEvents",
"properties": {
"Version": 2,
"flows": [
{
"rule": "DefaultRule_DenyAllInBound",
"flows": [
{
"mac": "<macAddress>",
"flowTuples": [
"1542110402,94.102.49.190,10.5.16.4,28746,443,U,I,D,B,,,,",
"1542110424,176.119.4.10,10.5.16.4,56509,59336,T,I,D,B,,,,",
"1542110432,167.99.86.8,10.5.16.4,48495,8088,T,I,D,B,,,,"
]
}
]
},
{
"rule": "DefaultRule_AllowInternetOutBound",
"flows": [
{
"mac": "<macAddress>",
"flowTuples": [
"1542110377,10.5.16.4,13.67.143.118,59831,443,T,O,A,B,,,,",
"1542110379,10.5.16.4,13.67.143.117,59932,443,T,O,A,E,1,66,1,66",
"1542110379,10.5.16.4,13.67.143.115,44931,443,T,O,A,C,30,16978,24,14008",
"1542110406,10.5.16.4,40.71.12.225,59929,443,T,O,A,E,15,8489,12,7054"
]
}
]
}
]
}
}
在前面的输出中,mac 的值是在创建 VM 时创建的网络接口的 MAC 地址。 flowTuples 的逗号分隔信息如下所示:
示例数据 | 数据代表的内容 | 说明 |
---|---|---|
1542110377 | 时间戳 | 表示流发生时间的时间戳,采用 UNIX EPOCH 格式。 在前面的示例中,转换后的日期为 2018 年 5 月 1 日下午 2:59:05 (GMT)。 |
10.0.0.4 | 源 IP 地址 | 充当流源的源 IP 地址。 10.0.0.4 是在创建虚拟机一文中创建的 VM 的专用 IP 地址。 |
13.67.143.118 | 目标 IP 地址 | 充当流目标的目标 IP 地址。 |
44931 | Source Port | 充当流源的源端口。 |
443 | Destination Port | 充当流目标的目标端口。 由于流目标为端口 443,因此由日志文件中名为 UserRule_default-allow-rdp 的规则处理流。 |
T | 协议 | 流的协议是 TCP (T) 还是 UDP (U)。 |
O | 方向 | 流是入站 (I) 还是出站 (O)。 |
A | 操作 | 是允许 (A) 流还是拒绝 (D) 流。 |
C | 流状态仅限版本 2 | 捕获流的状态。 可能的状态包括 B:创建流时开始。 未提供统计信息。 C:继续执行正在进行的流。 以 5 分钟的时间间隔提供统计信息。 E:终止流时结束。 已提供统计信息。 |
30 | 发送的数据包数 - 源到目标仅限版本 2 | 自上次更新以来,从源发送到目标的 TCP 或 UDP 数据包的总数。 |
16978 | 发送的字节数 - 源到目标仅限版本 2 | 自上次更新以来,从源发送到目标的 TCP 或 UDP 数据包字节的总数。 数据包字节包括数据包标头和有效负载。 |
24 | 发送的数据包数 - 目标到源仅限版本 2 | 自上次更新以来,从源发送到目标的 TCP 或 UDP 数据包的总数。 |
14008 | 发送的字节数 - 目标到源仅限版本 2 | 自上次更新以来,从目标发送到源的 TCP 和 UDP 数据包字节的总数。 数据包字节包括数据包标头和有效负载。 |
后续步骤
在本教程中,你了解了如何执行以下操作:
- 为 NSG 启用 NSG 流日志记录
- 下载并查看文件中记录的数据。
SON 文件中的原始数据可能难以解释。 若要可视化流日志数据,可以使用 Azure 流量分析和 Microsoft Power BI。
有关用于启用 NSG 流日志的替代方法,请参阅 PowerShell、Azure CLI、REST API 和资源管理器模板。
转到下一篇文章,了解如何监视两个虚拟机之间的网络通信: