注意:

使用日志发货人将 Oracle Cloud Infrastructure 登录到第三方 SIEM 平台

简介

Oracle Cloud Infrastructure (OCI) 是一个受大型企业信赖的基础设施即服务 (IaaS)、平台即服务 (PaaS) 和软件即服务 (SaaS) 平台。它提供一系列全面的托管服务,包括托管、存储、网络、数据库等。

主动呈现与安全相关的事件日志以分类到适当资源对于检测和预防网络安全事件至关重要。许多组织依靠安全信息和事件管理 (Security Information and Event Management,SIEM) 平台来关联、分析相关资产的日志和预警。正确配置日志捕获、保留适当的持续时间以及近乎实时的监视和警报,使安全运营团队能够识别问题,基于系统优化关注关键信息,并及时采取行动。

摄取 OCI 日志的优秀实践包括将其发送到与 Apache Kafka 兼容的 OCI Streaming,允许第三方 SIEM 平台以 Kafka 使用者的身份使用日志。这种方法可减少延迟,提供弹性,并确保在 SIEM 端数据消耗出现临时问题时保留。

但是,一些第三方 SIEM 平台缺乏直接从 OCI 流使用日志的默认连接器,并且不支持 Kafka 主题(广泛使用的开源事件流平台)中的数据使用,这使集成过程变得复杂。在这种情况下,日志发货人可以作为弥合这一差距的解决方案。

日志发货人用作独立的工具,从各种来源收集日志,然后将其转发到一个或多个指定的目标。为了确保与 OCI Streaming 和第三方 SIEM 平台无缝通信,日志发货人软件应在可访问 Internet 的计算机上运行。在本教程中,我们将在 OCI 中的计算实例上部署日志发货人软件。

日志发货人将:

现在,让我们来看看解决方案架构的高级表示,如下图所示。

架构图

注:虽然此解决方案可以弥合差距,但建议仅在其他方法不可行时将其视为最后一个选项。重要的是要与您的 SIEM 提供商密切协调,首先探索任何原生或推荐的方法。如果您决定继续使用日志发货人,请与 SIEM 提供商合作选择最合适的日志发货人,这将确保在实施期间和实施后得到 SIEM 提供商的更好支持,从而帮助定制设置以满足组织的特定需求。

有不同的日志发货人可用,其中一些是:

目标

先决条件

注意:应在 OCI 端执行以下任务(任务 1 到任务 4),而不管选择的方法或日志发货人是什么。

任务 1:配置要捕获的日志

OCI 日志记录服务是一个高度可扩展且完全托管的单一平台,适用于租户中的所有日志。OCI Logging 支持您从 OCI 资源访问日志。日志是一流的 OCI 资源,用于存储和捕获在给定上下文中收集的日志事件。日志组是存储在区间中的日志的集合。日志组是日志的逻辑容器。通过应用 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 策略或对日志分组进行分析,使用日志组来组织和简化日志管理。

要开始操作,请为资源启用日志。服务为资源可用的不同类型的日志提供日志类别。例如,OCI Object Storage 服务支持存储桶的以下日志类别:读取和写入访问事件。读取访问事件捕获下载事件,而写入访问事件捕获写入事件。对于资源,每个服务可以有不同的日志类别。

  1. 登录到 OCI 控制台,导航到观测和管理、日志记录和日志组。

  2. 选择您的区间,单击创建日志组并输入以下信息。

    • 名称:输入 SIEM_log_group。
    • 说明(可选):输入说明。
    • 标记(可选):输入标记。
  3. 单击创建以创建新的日志组。

  4. 在资源下,单击日志。

  5. 根据需要单击创建定制日志或启用服务日志。

    例如,要为 OCI Object Storage 桶启用写入日志,请执行以下步骤:

    1. 单击启用服务日志。

    2. 选择资源区间,然后在搜索服务中输入对象存储。

    3. 单击启用日志并在资源中选择 OCI 对象存储存储桶名称。

    4. 选择在任务 1.2 中创建的日志组 (SIEM_log_group) 和日志类别中的写入访问事件。(可选)输入 SIEM_bucket_write 作为日志名称。

    5. 单击启用以创建新的 OCI 日志。

任务 2:使用 OCI 流处理创建流

OCI Streaming 服务是面向开发人员和数据科学家的实时、无服务器、兼容 Apache Kafka 的事件流处理平台。它提供了一个完全托管、可扩展且持久的解决方案,可用于实时摄取和使用大量数据流(例如日志)。对于发布 - 订阅消息传递模型中连续生成和处理数据的任何用例,我们可以使用 OCI Streaming。

  1. 转到 OCI 控制台,导航到 Analytics & AI 、 Messaging 和 Streaming 。

  2. 单击创建流以创建流。

  3. 输入以下信息,然后单击创建。

    • 名称:输入流名称。对于本教程,它为 SIEM_Stream。
    • 流池:选择现有流池或创建一个具有公共端点的新流池。
    • 保留时间(小时):输入在此流中保留消息的小时数。
    • 分区数:输入流的分区数。
    • 总写入速率和总读取速率:根据需要处理的数据量输入。

可以从用于测试的默认值开始。有关更多信息,请参见 Partitioning a Stream 。

任务 3:设置 OCI Connector Hub

OCI Connector Hub 可编排 OCI 服务之间的数据移动。OCI Connector Hub 可提供一个集中位置来描述、执行和监视服务之间的数据移动,例如 OCI Logging、OCI Object Storage、OCI Streaming、OCI Logging Analytics 和 OCI Monitoring。它还可以触发 OCI Functions 进行轻量级数据处理,触发 OCI Notifications 设置警报。

  1. 转到 OCI 控制台,导航到观测和管理、日志记录和连接器。

  2. 单击创建连接器以创建连接器。

  3. 输入以下信息。

    • 名称:输入 SIEM_SC。
    • 说明(可选):输入说明。
    • 隔间:选择您的隔间。
    • 源:选择日志记录。
    • 目标:选择流处理。
  4. 在配置源连接下,选择区间名称、日志组和日志(在任务 1 中创建的日志组和日志)。

  5. 如果还希望发送审计日志,请单击 +Another 日志,然后在替换 _Audit 与日志组时选择相同的区间。

  6. 在配置目标下,选择区间和流(在任务 2 中创建的流)。

  7. 要接受默认策略,请单击为每个默认策略提供的创建链接。此连接器访问源服务、任务服务和目标服务所需的任何授权都提供了默认策略。

  8. 单击创建。

任务 4:为日志发货人设置访问控制以检索日志

要允许日志发货人从 OCI 流访问数据,请创建用户并授予用于检索日志的流拉权限。

  1. 创建 OCI 用户。有关更多信息,请参见管理用户。

  2. 创建名为 SIEM_User_Group 的 OCI 组并将 OCI 用户添加到该组。有关详细信息,请参阅管理组。

  3. 创建以下 OCI IAM 策略。

    Allow group <SIEM_User_Group> to use stream-pull in compartment <compartment_of_stream>
    

现在,我们将探讨如何安装日志发货人,并提供如何将其与 SIEM 平台集成的几个示例。

案例 1:使用 Filebeat 作为日志发货人

Filebeat 是用于转发和集中日志数据的轻量级发货人。Filebeat 通过使用模块实现高度可扩展性,允许它从 Apache Kafka、Amazon Web Services (AWS) 等来源收集日志。Filebeat 用 Go 编写,它提供单个二进制文件,便于直接部署。它擅长处理大量数据,同时消耗最少的资源。

安装 Filebeat

Filebeat 可以安装在各种操作系统上,例如 Linux 和 Windows,以及虚拟机、Docker 容器和 Kubernetes 集群等平台上。在本教程中,它安装在 Oracle Linux 8 计算实例上。有关更多信息,请参见 Filebeat quick start:installation and configuration 。

要在指定为日志发货人的计算实例上安装 Filebeat,请执行以下步骤:

  1. 为 YUM 添加 Beats 资料档案库。有关更多信息,请参见 Repositories for APT and YUM 。

  2. 下载并安装公共签名密钥。

    sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
    
  3. 在 /etc/yum.repos.d/ 目录中创建扩展名为 .repo 的文件(例如 elastic.repo),并添加以下行:

    [elastic-8.x]
    name=Elastic repository for 8.x packages
    baseurl=https://artifacts.elastic.co/packages/8.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    
  4. 您的资源库现已准备好使用。运行以下命令以安装 Filebeat。

    sudo yum install filebeat
    
  5. 运行以下命令将 Filebeat 配置为在引导期间自动启动。

    sudo systemctl enable filebeat
    

配置 Filebeat

在以下配置中,Filebeat 设置为从 OCI 流摄取日志并将其另存为日志发货人(计算实例)的本地文件系统中的文件。这允许第三方 SIEM 平台收集器通过从本地文件系统读取文件来摄取这些日志。

  1. 将 /etc/filebeat/filebeat.yml 的内容替换为以下样例配置(请确保将 hosts, topics, username, and password 替换为详细信息)。此外,创建用于存储日志的文件夹,例如 /home/opc/oci_logs。

    filebeat.inputs:
    - type: kafka
      hosts: ["cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092"]
      topics: ["SIEM_Stream"]
      group_id: "filebeat"
      username: <username>
      password: <Auth Token>
      ssl.enabled: true
      sasl.mechanism: PLAIN
    
    output.file:
      path: "/home/opc/oci_logs"
      filename: "oci_logs"
      rotate_every_kb: 5000 # 5 MB
      codec.format:
        string: '%{[@timestamp]} %{[message]}'
    
  2. 请运行以下命令来测试配置。

    filebeat test config
    
  3. 更新配置后重新启动 Filebeat 服务。

    sudo systemctl restart Filebeat
    
  4. 设置成功后,应将 OCI 日志视为 /home/opc/oci_logs 文件夹中的文件。

示例:使用 Filebeat 的 OCI 和 Rapid7 InsightIDR 集成

在此示例中,Rapid7 InsightIDR 配置为摄取保存在日志发货人 Filebeat 的本地文件系统的 OCI 日志。

  1. 在日志发货人实例上安装 Rapid7 收集器。

    Rapid7 收集器收集日志并将其发送到您的 Rapid7 InsightIDR 账户进行处理。要安装 Rapid7 Collector,请从 Rapid7 InsightIDR 账户下载软件包,并将其安装在日志发货人计算实例上。有关更多信息,请参见 Rapid7 Collector Installation and Deployment 。

  2. 配置 Rapid7 InsightIDR 以从事件源收集数据。尽管 Rapid7 InsightIDR 附带了适用于各种云服务的预构建连接器,但 OCI 不受本机支持。但是,您可以按照以下步骤摄取和处理原始数据:

    1. 转到 Rapid7 InsightIDR,导航到数据收集、设置事件源,然后单击添加事件源。

    2. 单击添加原始数据和定制日志。

    3. 输入名称事件源并选择收集器(计算实例)。

    4. 选择与事件源日志的位置匹配的时区。

    5. 选择收集方法作为监视目录,并使用本地文件夹中的 OCI 日志路径 /home/opc/oci_logs。

    Rapid7 定制日志

    日志收集将开始,可在 Rapid7 InsightIDR 中查看数据。

案例 2:使用流畅位作为日志发货人

Fluent Bit 是轻量级、高性能的日志发货人,可作为 Fluentd 的替代品。Fluent Bit 的出现是为了满足对能够从多个来源收集日志,同时高效处理和过滤日志的最佳解决方案日益增长的需求。值得注意的是,Fluent Bit 在资源受限的环境中表现优异,例如容器或嵌入式系统。

要使用 Fluent Bit,我们将在位于 /etc/fluent-bit/fluent-bit.conf 的配置文件中定义 inputs、filters、outputs 和 global configurations。让我们详细研究这些组件:

Fluent Bit 输入和输出插件:

安装和配置流畅位

Fluent Bit 可以安装在各种操作系统上,例如 Linux 和 Windows,以及虚拟机、Docker 容器和 Kubernetes 集群等平台上。在本教程中,它安装在 Oracle Linux 8 计算实例上。要在指定为日志发货人的计算实例上安装 Fluent Bit,请按照以下步骤操作:

  1. 在 /etc/yum.repos.d/ 目录中创建扩展名为 .repo 的系统信息库文件(例如 fluentbit.repo),并添加以下行。有关详细信息,请参阅配置 Yum 。

    [fluent-bit]
    name = Fluent Bit
    baseurl = https://packages.fluentbit.io/centos/$releasever/
    gpgcheck=1
    gpgkey=https://packages.fluentbit.io/fluentbit.key
    repo_gpgcheck=1
    enabled=1
    
  2. 配置系统信息库后,运行以下命令安装 Fluent Bit。

    sudo yum install fluent-bit
    
  3. Fluent Bit 的默认配置文件位于 /etc/fluent-bit/fluent-bit.conf。默认情况下,它将收集 CPU 使用情况度量并将输出发送到标准日志。您可以在 /var/log/messages 文件中查看传出数据。

  4. 要从 OCI 流处理服务收集日志并将其发送到标准输出,请将输入配置为 Kafka,将输出配置为 stdout。请务必将 Brokers、topics、username 和 password 替换为您的详细信息。

    [INPUT]
       Name        kafka
       Brokers     cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092
       Topics      SIEM-Stream
       Format    	json
       group_id    fluent-bit
       rdkafka.sasl.username <User Name>
       rdkafka.sasl.password   <Auth token>  
       rdkafka.security.protocol   SASL_SSL
       rdkafka.sasl.mechanism     PLAIN
    
    [OUTPUT]
       Name        stdout
    

示例:使用 Fluent Bit 的 OCI 和 Rapid7 InsightIDR 集成

在此示例中,我们将通过在运行 Fluent Bit 的日志发货人实例上安装 Rapid7 收集器来将 OCI 与 InsightIDR 集成。Fluent Bit 将使用来自 OCI Streaming 的日志(使用 Kafka 作为输入),并将其发送到本地 TCP 端口,Rapid7 收集器将在此端口监听传入数据。

  1. 在现有日志发货人实例上安装 Rapid7 收集器。

    Rapid7 收集器收集日志并将其发送到您的 Rapid7 InsightIDR 账户进行处理。要安装收集器,请从 Rapid7 InsightIDR 账户下载软件包并将其安装在日志发货人计算实例上。有关安装步骤的更多信息,请参见 Rapid7 Collector Installation and Deployment 。

  2. 配置 Rapid7 InsightIDR 以从事件源收集数据。尽管 Rapid7 InsightIDR 附带了适用于各种云服务的预构建连接器,但 OCI 不受本机支持。但是,您可以按照以下步骤摄取和处理原始数据:

    1. 转到 Rapid7 InsightIDR,导航到数据收集、设置事件源,然后单击添加事件源。

    2. 单击添加原始数据和定制日志。

    3. 输入名称事件源并选择收集器(计算实例)。

    4. 选择与事件源日志的位置匹配的时区。

    5. 选择 Collection Method 作为 Listen on Network Port ,输入 Port Number 和 Protocol 。

    Rapid7 定制日志

  3. Rapid7 InsightIDR 集成的 Fluent Bit 输入和输出配置样例。请务必将 Brokers、topics、username 和 password 替换为您的详细信息。

    [INPUT]
       Name        kafka
       Brokers     cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092
       Topics      SIEM-Stream
       Format    	json
       group_id    fluent-bit
       rdkafka.sasl.username <User Name>
       rdkafka.sasl.password   <Auth token>  
       rdkafka.security.protocol   SASL_SSL
       rdkafka.sasl.mechanism     PLAIN
    
    [OUTPUT]
       Name             tcp
       Match            *
       Host             127.0.0.1
       Port             5170
       Format           json_lines
    
  4. 修改 Fluent Bit 配置后,使用以下命令重新启动 Fluent Bit。

    sudo systemctl restart fluent-bit
    

    Fluent Bit 重新启动后,您应该会看到 OCI 日志显示在 Rapid7 控制台中。

示例:使用 Fluent Bit 进行 OCI 和 Datadog 集成。

在此示例中,在日志发货人实例上运行的 Fluent Bit 使用使用 Kafka 作为输入的 OCI 流中的日志,并使用 HTTP 输出将其发送到 Datadog 的 HTTP 端点。

  1. 使用 Datadog HTTP 日志记录端点向 Datadog 发送日志。有关详细信息,请参阅记录端点。

  2. 需要 Datadog API 密钥才能将日志发送到 Datadog HTTP 端点。有关更多信息,请参见 Datadog API and Application Keys 。

    要生成 API 密钥,请执行以下步骤:

    1. 在 Datadog 账户中,导航到组织设置。

    2. 单击 API 密钥。

    3. 单击新建密钥,输入密钥的名称,然后单击创建 API 密钥。

    DataDog API 密钥

  3. 用于 Datadog 集成的 Fluent Bit 输入和输出配置样例。请务必将 Brokers、topics、username、password 和 API Key 替换为您的详细信息。

    [INPUT]
       Name        kafka
       Brokers     cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092
       Topics      SIEM-Stream
       Format    	json
       group_id    fluent-bit
       rdkafka.sasl.username <User Name>
       rdkafka.sasl.password   <Auth token>  
       rdkafka.security.protocol   SASL_SSL
       rdkafka.sasl.mechanism     PLAIN
    
    [OUTPUT]
       Name             http
       Match            *
       Host             http-intake.logs.us5.datadoghq.com
       Port             443
       URI              /api/v2/logs
       Header           DD-API-KEY <API-KEY>
       Format           json
       Json_date_key    timestamp
       Json_date_format iso8601
       tls              On
       tls.verify       Off
    
  4. 修改 Fluent Bit 配置后,重新启动 Fluent Bit。

    sudo systemctl restart fluent-bit
    

    现在,您应当在 Datadog 账户中查看 OCI 日志。

后续步骤

本教程演示如何使用日志发货人将 OCI 日志摄取到第三方 SIEM 平台。虽然有各种日志发货人可用,并且有多种方式将 OCI 与使用它们的第三方 SIEM 平台集成,但通过仔细评估每个日志发货人支持的输入和输出选项,选择合适的日志发货人和集成方法至关重要。确保与您的 SIEM 提供商协调,以确保解决方案符合您的特定环境和要求。

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心。