使用 Azure Monitor 代理将 syslog 和 CEF 消息引入到 Microsoft Sentinel

本文介绍如何使用 Syslog via AMA 和 Common Event Format (CEF) via AMA 连接器从 Linux 计算机以及网络和安全设备和装置筛选并引入 syslog 消息,包括采用通用事件格式 (CEF) 的消息。 若要详细了解这些数据连接器,请参阅 Microsoft Sentinel 通过 AMA 的 Syslog 和通用事件格式 (CEF) 连接器

先决条件

在开始之前,必须配置资源并分配相应的权限,如本部分所述。

Microsoft Sentinel 先决条件

安装相应的 Microsoft Sentinel 解决方案,并确保你有权完成本文中的步骤。

  • 从 Microsoft Sentinel 中的内容中心安装相应的解决方案。 有关更多信息,请参阅发现和管理 Microsoft Sentinel 的现成内容

  • 确定 Microsoft Sentinel 解决方案所需的数据连接器 — Syslog via AMA 或 Common Event Format (CEF) via AMA,以及是否需要安装 Syslog 或通用事件格式解决方案。 若要满足此先决条件:

    • 在内容中心,选择已安装的解决方案上的“管理”,并查看列出的数据连接器

    • 如果未随解决方案一起安装 Syslog via AMA 或 Common Event Format (CEF) via AMA,请确定是否需要安装 Syslog 或通用事件格式解决方案

      然后从内容中心安装 Syslog 或通用事件格式解决方案,以获取相关的 AMA 数据连接器

  • 创建 Azure 帐户,并使其具有以下 Azure 基于角色的访问控制 (Azure RBAC) 角色:

    内置角色 范围 原因
    - 虚拟机参与者
    - Azure Connected Machine
       资源管理员
  • 虚拟机 (VM)
  • 虚拟机规模集
  • 已启用 Azure Arc 的服务器
  • 部署代理
    包含以下操作的任何角色:
    Microsoft.Resources/deployments/*
  • 订阅
  • 资源组
  • 现有数据收集规则
  • 部署 Azure 资源管理器模板
    监视参与者
  • 订阅
  • 资源组
  • 现有数据收集规则
  • 创建或编辑数据收集规则

日志转发器先决条件

如果要从日志转发器收集消息,则以下先决条件适用:

  • 必须具有指定的 Linux VM 作为日志转发器才能收集日志。

  • 如果日志转发器不是 Azure 虚拟机,则必须在其上安装 Azure Arc Connected Machine 代理

  • 必须在 Linux 日志转发器 VM 上安装 Python 2.7 或 3。 使用 python --versionpython3 --version 命令进行检查。 如果使用 Python 3,请确保将其设置为计算机上的默认命令,或者使用“python3”命令而不是“python”命令运行脚本。

  • 日志转发器必须启用 syslog-ngrsyslog 守护程序。

  • 日志源、安全设备和装置必须配置为将其日志消息发送到日志转发程序的 syslog 守护程序,而不是发送到其本地 syslog 守护程序。

计算机安全性先决条件

根据组织的安全策略配置计算机的安全性。 例如,根据企业网络安全策略配置网络,并根据自己的要求更改守护程序中的端口和协议。 为了改进计算机安全配置,请在 Azure 中保护 VM,或查看这些网络安全最佳做法

如果设备通过 TLS 发送 syslog 和 CEF 日志(例如由于日志转发器位于云中),则需要配置 syslog 守护程序(rsyslogsyslog-ng)以在 TLS 中进行通信。 有关详细信息,请参阅:

配置数据连接器

通过 AMA 的 Syslog 或通过 AMA 的通用事件格式 (CEF) 数据连接器的设置过程包括以下步骤:

  1. 使用以下任一方法安装 Azure Monitor 代理并创建数据收集规则 (DCR):
  2. 如果要使用日志转发器从其他计算机收集日志,请在日志转发器上运行“安装”脚本,将 syslog 守护程序配置为侦听来自其他计算机的消息,并打开必要的本地端口。

选择相应的选项卡以获取说明。

创建数据收集规则 (DCR)

若要开始创建,请在 Microsoft Sentinel 中打开 Syslog via AMA 或 Common Event Format (CEF) via AMA,并创建数据连接规则 (DCR)

  1. Azure 门户中的“配置”下,选择“数据连接器”

  2. 对于 syslog,请在“搜索”框中键入“Syslog”。 在结果中,选择“通过 AMA 的 Syslog”连接器。
    对于 CEF,请在“搜索”框中键入“CEF”。 在结果中,选择“通过 AMA 的通用事件格式 (CEF)”连接器。

  3. 在详细信息窗格中选择“打开连接器页面”

  4. 在“配置”区域中,选择“+ 创建数据收集规则”

    屏幕截图显示“通过 AMA 的 Syslog 连接器”页。

    屏幕截图显示“通过 AMA 的 CEF 连接器”页。

  5. 在“基本信息”选项卡上

    • 键入 DCR 名称。
    • 选择订阅。
    • 选择要定位 DCR 的资源组。

    屏幕截图显示“基本信息”选项卡中的 DCR 详细信息。

  6. 选择“下一步: 资源”。

定义 VM 资源

在“资源”选项卡中,选择要安装 AMA 的计算机,在本例中为日志转发器计算机。 如果列表中未显示日志转发器,则可能未安装 Azure Connected Machine 代理。

  1. 使用可用的筛选器或搜索框查找日志转发器 VM。 展开列表中的订阅以查看其资源组,展开资源组以查看其 VM。

  2. 选择要在其中安装 AMA 的日志转发器 VM。 将鼠标悬停在 VM 名称上方时,旁边会显示复选框。

    显示设置 DCR 时如何选择资源的屏幕截图。

  3. 查看更改并选择“下一步: 收集>”

选择设施和严重性

请注意,对 syslog 和 CEF 消息使用相同的设施可能会导致数据引入重复。 有关详细信息,请参阅避免数据引入重复

  1. 在“收集”选项卡中,为每个设施选择最低日志级别。 选择日志级别后,Microsoft Sentinel 会收集所选级别和其他更高严重性级别的日志。 例如,如果选择 LOG_ERR,Microsoft Sentinel 会收集 LOG_ERR、LOG_CRIT、LOG_ALERT 和 LOG_EMERG 级别的日志。

    显示设置 DCR 时如何选择日志级别的屏幕截图。

  2. 查看所做的选择,然后选择“下一步: 查看 + 创建”

查看并创建规则

完成所有选项卡后,查看输入的内容并创建数据收集规则。

  1. 在“查看 + 创建”选项卡中选择“创建”。

    屏幕截图显示如何查看 DCR 的配置并创建它。

    连接器会在创建 DCR 时选择的计算机上安装 Azure Monitor 代理。

  2. 查看 Azure 门户中的通知,了解 DCR 的创建时间和代理的安装时间。

  3. 选择连接器页上的“刷新”以查看列表中显示的 DCR

运行“installation”脚本

如果使用日志转发器,请将 syslog 守护程序配置为侦听来自其他计算机的消息,并开启必要的本地端口。

  1. 在连接器页中,复制“运行以下命令安装并应用 CEF 收集器:”下显示的命令行

    连接器页上命令行的屏幕截图。

    或者从此处复制它:

    sudo wget -O Forwarder_AMA_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Forwarder_AMA_installer.py&&sudo python Forwarder_AMA_installer.py
    
  2. 登录到刚刚安装 AMA 的日志转发器计算机。

  3. 粘贴在上一步中复制的命令以启动 installation 脚本。
    该脚本将 rsyslogsyslog-ng 守护程序配置为使用所需的协议,并重启守护程序。 该脚本打开端口 514 以侦听 UDP 和 TCP 协议中的传入消息。 若要更改此设置,请根据计算机上运行的守护程序类型参考 syslog 守护程序配置文件:

    • Rsyslog:/etc/rsyslog.conf
    • Syslog-ng:/etc/syslog-ng/syslog-ng.conf

    如果使用 Python 3,且未将其设置为计算机上的默认命令,请用 python3 替换粘贴的命令中的 python。 请参阅日志转发器先决条件

    注意

    为了避免代理在完整磁盘方案中无法正常运行,建议将 syslog-ngrsyslog 配置设置为不存储无用的日志。 完整磁盘方案会干扰已安装的 AMA 正常运行。 有关详细信息,请参阅 RSyslogSyslog-ng

测试连接器

验证来自 Linux 计算机或安全设备和装置的日志消息是否已引入到 Microsoft Sentinel 中。

  1. 若要验证 Syslog 守护程序是否正在 UDP 端口上运行并且 AMA 是否正在侦听,请运行以下命令:

    netstat -lnptv
    

    应会看到 rsyslogsyslog-ng 守护程序正在侦听端口 514。

  2. 若要捕获从记录器或连接的设备发送的消息,请在后台运行以下命令:

    tcpdump -i any port 514 -A -vv &
    
  3. 完成验证后,建议停止 tcpdump:键入 fg,然后按 Ctrl+C

  4. 若要发送演示消息,请完成以下步骤:

    • 使用 netcat 实用工具。 在此示例中,该实用工具读取通过 echo 命令发布的数据,数据换行开关已关闭。 然后,该实用工具将数据写入本地主机上的 UDP 端口 514,且不会超时。 若要执行 netcat 实用工具,则可能需要安装另一个包。

      echo -n "<164>CEF:0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|1|rt=$common=event-formatted-receive_time" | nc -u -w0 localhost 514
      
    • 使用记录器。 此示例以 CEF RFC 格式通过端口 514 将严重性级别为 Warning 的消息写入本地主机上的 local 4 工具。 使用 -t--rfc3164 标志是为了遵守所需的 RFC 格式。

      logger -p local4.warn -P 514 -n 127.0.0.1 --rfc3164 -t CEF "0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|1|rt=$common=event-formatted-receive_time"
      
  5. 若要验证是否已正确安装连接器,请使用以下命令之一运行故障排除脚本:

    • 对于 CEF 日志,请运行:

       sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --cef
      
    • 对于 Cisco 自适应安全设备 (ASA) 日志,请运行:

      sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --asa
      
    • 对于 Cisco Firepower 威胁防御 (FTD) 日志,请运行:

      sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --ftd