收集 Microsoft IAS / 网络策略服务器 (NPS) 日志

支持的平台:

本文档介绍了如何使用 Microsoft Azure Blob 存储 V2 设置 Google SecOps Feed,以收集 Microsoft Internet 身份验证服务 (IAS) / 网络政策服务器 (NPS) 日志。

Microsoft Network Policy Server (NPS) 是 Microsoft 对 RADIUS(远程用户拨入验证服务)服务器和代理的实现。NPS 可集中管理 VPN 连接、无线接入点、802.1X 身份验证交换机和拨号远程访问的网络访问身份验证、授权和计费。在 Windows Server 2003 及更早版本中,NPS 以前称为 Internet 身份验证服务 (IAS)。由于 NPS 作为 Windows Server 角色运行,不具备原生云导出功能,因此本指南使用 Azure Monitor 代理从本地文件系统收集 NPS 结算日志文件,并通过 Log Analytics 工作区将其路由到 Azure Blob Storage。

准备工作

  • 确保您满足以下前提条件:

  • Google SecOps 实例

  • 对 Microsoft Azure 门户的特权访问权限,包括:

    • 创建存储账号
    • 创建和管理 Log Analytics 工作区
    • 创建数据收集规则
    • 创建数据导出规则
    • 管理访问密钥
  • 安装了 NPS 角色的 Windows Server 2016 或更高版本

  • 对 NPS 服务器的管理员访问权限

  • 从 NPS 服务器到 Azure 的网络连接(端口 443 上的 HTTPS 出站流量)

配置 NPS 结算和日志记录

启用 NPS 以将身份验证和计费请求记录到本地文本文件中(采用 IAS 格式)。

启用 NPS 结算日志

  1. 在运行 NPS 的 Windows Server 上,打开服务器管理器。
  2. 依次前往工具 > 网络策略服务器。
  3. 在 NPS 控制树中,点击会计。
  4. 在详情窗格中,点击会计下方的配置会计。
  5. 在会计配置向导中,选择记录到本地计算机上的文本文件,然后点击下一步。
  6. 在配置日志文件属性页面中,配置以下内容:
    • 在记录以下信息部分,选中要记录的信息对应的复选框:
      • 会计请求
      • 身份验证请求
      • 定期结算状态
      • 定期身份验证状态
    • 在日志记录失败操作部分中,如果您希望在日志文件不可用时 NPS 停止处理,请选择如果日志记录失败,则舍弃连接请求。如果您希望 NPS 在日志记录失败时继续处理,请保持未选中状态。
  7. 点击下一步。
  8. 查看摘要并点击 Finish。

配置日志文件属性

  1. 在 NPS 控制树中,点击会计。
  2. 在详细信息窗格中的日志文件属性下,点击更改日志文件属性。
  3. 点击日志文件标签页。
  4. 在目录字段中,验证或更改日志文件位置:
    • 默认位置:%systemroot%\System32\LogFiles
    • 为了更好地组织,请指定专用目录(例如 C:\NPSLogs)
  5. 在格式下拉菜单中,选择 IAS(旧版)。

  6. 在创建新的日志文件中,选择日志轮换间隔:

    • 每天(建议在大多数环境下使用)
    • 每周一次
    • 按月
    • 从不(文件大小不受限制)
    • 当日志文件达到此大小(以 MB 为单位指定大小)
  7. 如果您希望 NPS 在磁盘空间不足时删除旧的日志文件,请选择当磁盘空间不足时删除旧的日志文件。

  8. 点击确定以保存配置。

  9. 验证是否正在配置的目录中创建日志文件。

配置 Azure 存储账号

创建存储账号

  1. 在 Azure 门户中,搜索存储账号。
  2. 点击 + 创建。
  3. 提供以下配置详细信息:

    设置 值
    订阅 选择您的 Azure 订阅
    资源组 选择现有组或创建新组
    存储账号名称 输入一个唯一名称(例如 npsiaslogs)
    区域 选择区域(例如 East US)
    性能 标准(推荐)
    冗余 GRS(地理位置冗余存储)或 LRS(本地冗余存储)
  4. 点击检查 + 创建。

  5. 查看账号概览,然后点击创建。

  6. 等待部署完成。

获取存储账号凭据

  1. 前往您刚刚创建的存储账号。
  2. 在左侧导航栏中,选择安全性 + 网络下的访问密钥。
  3. 点击显示密钥。
  4. 复制并保存以下内容以供日后使用:
    • 存储账号名称:您的存储账号名称(例如 npsiaslogs)
    • 密钥 1 或密钥 2:共享访问密钥(采用 base-64 编码的 512 位随机字符串)

获取 Blob 服务端点

  1. 在同一存储账号中,从左侧导航栏中选择端点。
  2. 复制并保存 Blob 服务端点网址。
    • 示例:https://npsiaslogs.blob.core.windows.net/

创建 Log Analytics 工作区

需要使用 Log Analytics 工作区来接收来自 Azure 监视代理的自定义文本日志,然后才能将其导出到 Azure Blob Storage。

  1. 在 Azure 门户中,搜索 Log Analytics 工作区。
  2. 点击 + 创建。
  3. 提供以下配置详细信息:

    设置 值
    订阅 选择您的 Azure 订阅
    资源组 选择与存储账号相同的资源组
    名称 输入一个唯一名称(例如 nps-ias-workspace)
    区域 选择与存储账号相同的区域
  4. 点击检查 + 创建。

  5. 检查设置,然后点击创建。

  6. 等待部署完成。

创建自定义日志表

在 Log Analytics 工作区中创建自定义表,以存储 NPS/IAS 日志数据。

  1. 在 Azure 门户中,前往您刚刚创建的 Log Analytics 工作区。
  2. 在左侧导航栏中,选择设置下的表格。
  3. 依次点击 + 创建 > 新的自定义日志(基于 DCR)。
  4. 在表名称字段中,输入 NpsIasLogs。完整表名称将为 NpsIasLogs_CL。
  5. 点击创建。

将 NPS 服务器载入到 Azure Arc

由于 NPS 在本地 Windows Server 上运行,因此您必须先将服务器载入到 Azure Arc,然后才能安装 Azure Monitor 代理。

向 Azure Arc 注册 NPS 服务器

  1. 在 Azure 门户中,搜索 Azure Arc。
  2. 在左侧导航栏中,选择基础设施下的机器。
  3. 依次点击 + 添加/创建 > 添加机器。
  4. 在使用 Azure Arc 添加服务器部分中,选择添加单个服务器下的生成脚本。
  5. 提供以下配置详细信息:
    • 订阅:选择您的 Azure 订阅。
    • 资源组:选择之前使用的同一资源组。
    • 区域:选择与您的 Log Analytics 工作区相同的区域。
    • 操作系统:选择 Windows。
    • 连接方法:选择公共端点(或代理服务器,如果您的网络需要)。
  6. 点击下载并运行脚本。
  7. 将生成的 PowerShell 脚本复制到 NPS 服务器。
  8. 在 NPS 服务器上,以管理员身份打开 PowerShell 并运行以下脚本:

    & '.\OnboardingScript.ps1'
    
  9. 按照屏幕上的说明通过 Azure 进行身份验证并完成初始配置。

  10. 脚本完成后,返回 Azure 门户 > Azure Arc > 计算机,并验证 NPS 服务器是否显示为已连接状态。

安装 Azure Monitor 代理

在已启用 Arc 的服务器上安装 Azure Monitor 代理

  1. 在 Azure 门户中,依次前往 Azure Arc > 计算机。
  2. 从机器列表中选择 NPS 服务器。
  3. 在左侧导航栏中,选择设置下的扩展程序。
  4. 点击添加。
  5. 从扩展程序列表中选择 Azure Monitor 代理。
  6. 点击下一步。
  7. 点击 Review + create(检查 + 创建)。
  8. 点击创建。
  9. 等待扩展程序安装完成。状态将更改为配置成功。

为 NPS 日志文件创建数据收集规则

数据收集规则 (DCR) 会指示 Azure 监视代理收集 NPS IAS 日志文件并将其发送到 Log Analytics 工作区。

  1. 在 Azure 门户中,搜索监控。
  2. 在左侧导航栏中,选择设置下的数据收集规则。
  3. 点击 + 创建。
  4. 在基本标签页中,提供以下配置详细信息:
    • 规则名称:输入 dcr-nps-ias-logs。
    • 订阅:选择您的 Azure 订阅。
    • 资源组:选择之前使用的同一资源组。
    • 区域:选择与您的 Log Analytics 工作区相同的区域。
    • 平台类型:选择 Windows。
  5. 点击下一步:资源。
  6. 在资源标签页中:
    1. 点击 + 添加资源。
    2. 展开资源组,然后选择已启用 Azure Arc 的 NPS 服务器。
    3. 点击应用。
  7. 点击下一步:收集和交付。
  8. 在取件和送达标签页中:

    1. 点击 + 添加数据源。
    2. 在数据源类型下拉菜单中,选择自定义文本日志。
    3. 在文件模式字段中,输入 NPS 日志文件的路径:

      C:\Windows\System32\LogFiles\IN*.log
      
    4. 在表名称下拉菜单中,选择 NpsIasLogs_CL。

    5. 在记录定界符字段中,选择行尾。

    6. 在转换字段中,输入 source 以发送未更改的原始日志数据。

    7. 点击添加数据源。

  9. 在目标位置部分中,验证您创建的 Log Analytics 工作区是否已列出。

  10. 点击下一步:检查 + 创建。

  11. 检查配置,然后点击创建。

配置数据导出到 Azure Blob Storage

创建数据导出规则,以将 NPS/IAS 日志数据从 Log Analytics 工作区持续导出到 Azure Blob Storage。

创建数据导出规则

  1. 在 Azure 门户中,前往您创建的 Log Analytics 工作区。
  2. 在左侧导航栏中,选择设置下的数据导出。
  3. 点击 + 新导出规则。
  4. 在基本标签页中,提供以下配置详细信息:
    • 规则名称:输入 export-nps-ias-logs。
    • 目标位置:选择存储账号。
  5. 点击下一步:来源。
  6. 在来源标签页中,选择 NpsIasLogs_CL 表。
  7. 点击下一步:目的地。
  8. 在目标标签页中:
    • 订阅:选择包含存储账号的订阅。
    • 存储账号:选择您之前创建的存储账号(例如 npsiaslogs)。
  9. 点击 Review + create(检查 + 创建)。
  10. 检查配置,然后点击创建。

在 Google SecOps 中配置 Feed 以注入 Microsoft IAS 日志

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 在下一页上,点击配置单个 Feed。
  4. 在 Feed 名称字段中,输入 Feed 的名称(例如 Microsoft IAS NPS Logs)。
  5. 选择 Microsoft Azure Blob Storage V2 作为来源类型。
  6. 选择 Microsoft IAS 作为日志类型。
  7. 点击下一步。
  8. 为以下输入参数指定值:

    • Azure URI:输入包含容器路径的 Blob 服务端点网址:
    https://npsiaslogs.blob.core.windows.net/am-NpsIasLogs_CL/
    
    • 替换以下内容:
      • npsiaslogs:您的 Azure 存储账号名称。
      • am-NpsIasLogs_CL:由数据导出规则自动创建的 Blob 容器名称。
    • 来源删除选项:根据您的偏好选择删除选项:
    • 永不:转移后永不删除任何文件。
    • 删除已转移的文件:成功转移后删除文件。
    • 删除已转移的文件和空目录:成功转移后删除文件和空目录。
    • 文件存在时间上限:包含在过去指定天数内修改过的文件(默认值为 180 天)
    • 共享密钥:输入您之前从存储账号中捕获的共享密钥值(访问密钥)
    • 资源命名空间:资源命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  9. 点击下一步。

  10. 在最终确定界面中查看新的 Feed 配置,然后点击提交。

配置 Azure 存储防火墙(如果已启用)

如果您的 Azure 存储账号使用防火墙,则必须添加 Google SecOps IP 范围。

  1. 在 Azure 门户中,前往您的存储账号。
  2. 在安全和网络下,选择网络。
  3. 在防火墙和虚拟网络下,选择已启用(从所选虚拟网络和 IP 地址)。
  4. 在防火墙部分的地址范围下,点击 + 添加 IP 范围。
  5. 以 CIDR 表示法添加每个 Google SecOps IP 范围。

    如需获取当前的 IP 范围,请执行以下操作:

  6. 验证是否已选中允许受信任的服务列表中的 Azure 服务访问此存储账号复选框(这是 Log Analytics 数据导出功能正常运行的必要条件)。

  7. 点击保存。

UDM 映射表

日志字段 UDM 映射 逻辑
packet_type additional.fields 如果非空,则与每个字段的标签合并
auth_type additional.fields
filter_id additional.fields
framed_netmask additional.fields
framed_address additional.fields
framed_protocol additional.fields
framed_routing additional.fields
framed_mtu additional.fields
framed_compression additional.fields
reason_code additional.fields
extensible_auth_protocol additional.fields
service_type additional.fields
nas_port additional.fields
reply_message additional.fields
nas_identifier additional.fields
设备类型 additional.fields
coa-push additional.fields
audit-session-id additional.fields
日期 metadata.event_timestamp 由日期和时间连接而成,然后以 MM/dd/yyyy HH:mm:ss 格式进行解析
时间 metadata.event_timestamp
principal_present metadata.event_type 如果 principal_present 和 target_present,则设置为“GENERIC_EVENT”,然后设置为“NETWORK_CONNECTION”;如果 principal_present,则设置为“STATUS_UPDATE”
target_present metadata.event_type
ac-user-agent network.http.parsed_user_agent 如果解析成功,则从 ac-user-agent 转换
ac-user-agent network.http.user_agent 直接复制值
session_duration network.session_duration.seconds 直接复制值,然后转换为整数
session_id network.session_id 直接复制值
principal_hostname principal.asset.hostname 直接复制值
principal_ip principal.asset.ip 如果 principal_ip 是有效的 IP,则使用该值;否则,如果 calling_station_id 是有效的 IP,则使用该值
calling_station_id principal.asset.ip
principal_hostname principal.hostname 直接复制值
principal_ip principal.ip 如果 principal_ip 是有效的 IP,则使用该值;否则,如果 calling_station_id 是有效的 IP,则使用该值
calling_station_id principal.ip
device-mac principal.mac 如果设备 MAC 不为空,则使用设备 MAC 中的值(将 - 替换为 :),否则使用设备公共 MAC
device-public-mac principal.mac
nat_ip principal.nat_ip 直接复制值
device-platform principal.platform 如果为 ["Win","win"],则设置为“WINDOWS”;如果 =~ "mac|iOS",则设置为“MAC”;如果 =~ "lin",则设置为“LINUX”
device-platform-version principal.platform_version 直接复制值
device-uid principal.resource.product_object_id 直接复制值
user_name principal.user.user_display_name 直接复制值
userid principal.user.userid 直接复制值
service_name target.application 直接复制值
computer_name target.asset.hostname 直接复制值
target_ip target.asset.ip 如果 target_ip 是有效的 IP,则使用该值;否则,如果 called_station_id 是有效的 IP,则使用该值
called_station_id target.asset.ip
computer_name target.hostname 直接复制值
target_ip target.ip 如果 target_ip 是有效的 IP,则使用该值;否则,如果 called_station_id 是有效的 IP,则使用该值
called_station_id target.ip
target_port target.port 直接复制值,然后转换为整数
metadata.product_name metadata.product_name 设置为“MICROSOFT_IAS”
metadata.vendor_name metadata.vendor_name 设置为“MICROSOFT_IAS”

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。