安装和配置转发器

支持的语言:

本文档介绍了如何使用 Docker 在 Linux 和 Windows 系统上安装和配置 Google Security Operations 转发器。

转发器是一种软件组件,您可以将其安装在网络中的机器或设备(例如服务器)上。它会收集日志数据,并将这些数据转发到您的 Google SecOps 实例。

您可以使用转发器直接将日志从您的环境发送到 Google SecOps,而无需使用云存储分区或第三方 API 来处理不受支持的日志类型。转发器可作为随时可部署的解决方案,无需手动与提取 API 集成。

Google SecOps 提供了一个 Docker 容器,用于安全转发器部署。您可以在物理机或虚拟机上运行和管理 Docker 容器。

系统要求

下面是一些常规建议。如需了解与您的系统相关的建议,请与 Google SecOps 支持团队联系。

Linux 系统

转发器支持各种 Linux 发行版,例如 Debian、Ubuntu、Red Hat 和 Suse。为获得最佳性能,必须使用 Docker 版本 20.10.21 或更高版本。

  • RAM:对于 Google SecOps 接受注入的每种收集的数据类型,都需要 1 GB 的 RAM。例如,如果您指定了 4 个不同的收集器,则需要 4 GB RAM 来收集所有 4 个收集器的数据。

  • CPU:2 个 CPU 足以处理每秒 10,000 个以下事件 (EPS),包括所有数据类型。如果您预计转发器处理的 EPS 会超过 10,000,请分配 4 到 6 个 CPU。

  • 磁盘:建议使用 20 GB 的磁盘空间,无论转发器处理多少数据。

Windows 系统

转发器在 Microsoft Windows Server 2022 上受支持。为了获得最佳性能,必须使用 Docker 版本 20.10.21 或更高版本。

  • RAM:对于 Google SecOps 接受注入的每种收集的数据类型,都需要 1.5 GB 的 RAM。例如,如果您指定了 4 个不同的收集器,则需要 6 GB RAM 才能收集所有 4 个收集器的数据。

  • CPU:2 个 CPU 足以处理每秒 10,000 个以下事件 (EPS),包括所有数据类型。如果您预计转发器处理的 EPS 会超过 10,000,请分配 4 到 6 个 CPU。

  • 磁盘:建议使用 20 GB 的磁盘空间,无论转发器处理多少数据。

准备工作

在开始实现转发器之前,请考虑以下事项。

Google IP 地址范围

配置转发器时,您可能需要调整涉及指定 IP 地址范围的防火墙设置。Google API 和服务使用的默认网域 IP 地址范围是动态分配的,并且经常会发生变化。如需了解详情,请参阅获取 Google IP 地址范围

验证防火墙配置

如果您的转发器容器位于任何防火墙或经过身份验证的代理后面,您需要开放对以下主机的访问权限:

连接类型 目标 端口
TCP malachiteingestion-pa.googleapis.com 443
TCP asia-northeast1-malachiteingestion-pa.googleapis.com 443
TCP asia-south1-malachiteingestion-pa.googleapis.com 443
TCP asia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP australia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP europe-malachiteingestion-pa.googleapis.com 443
TCP europe-west2-malachiteingestion-pa.googleapis.com 443
TCP europe-west3-malachiteingestion-pa.googleapis.com 443
TCP europe-west6-malachiteingestion-pa.googleapis.com 443
TCP europe-west9-malachiteingestion-pa.googleapis.com 443
TCP europe-west12-malachiteingestion-pa.googleapis.com 443
TCP me-central1-malachiteingestion-pa.googleapis.com 443
TCP me-central2-malachiteingestion-pa.googleapis.com 443
TCP me-west1-malachiteingestion-pa.googleapis.com 443
TCP northamerica-northeast2-malachiteingestion-pa.googleapis.com 443
TCP southamerica-east1-malachiteingestion-pa.googleapis.com 443
TCP accounts.google.com 443
TCP gcr.io 443
TCP cloud.google.com/artifact-registry 443
TCP oauth2.googleapis.com 443
TCP storage.googleapis.com 443

规划实现

在开始配置转发器之前,请先规划您的实现。这将有助于您根据安全目标、基础架构功能和可伸缩性要求来调整数据源和配置属性。

确定要注入的数据

从以下选项中确定转发器最相关的数据源:

  • Splunk:如果您已使用 Splunk 进行日志管理,则此选项非常适合。

  • Syslog:可用于各种设备的系统和应用日志。

  • 文件:可灵活提取任何日志文件。

  • 数据包:通过捕获原始流量提供深入的网络可见性。

  • Kafka:非常适合从分布式系统聚合大量实时日志。

  • WebProxy:非常适合深入了解网络流量和用户行为。

限制

数据 Feed 的日志行大小上限为 4 MB。

确定配置

在安装转发器之前,请确定以下关键属性,以确保成功实现。

数据压缩

数据或日志压缩可以降低将日志传输到 Google SecOps 时的网络带宽消耗。不过,这可能会导致 CPU 使用率增加。 带宽节省与 CPU 使用率之间的最佳平衡取决于多种因素,例如日志类型、数据的可压缩性、可用的 CPU 资源以及网络带宽限制。

例如,基于文本的日志通常可以很好地压缩,可以在降低 CPU 使用率的情况下显著节省带宽,而加密数据或二进制数据可能无法高效压缩,并且可能会导致 CPU 使用率更高。

默认情况下,日志压缩处于停用状态。根据您的具体环境和日志数据的性质来评估这种权衡。

磁盘缓冲

建议启用磁盘缓冲。借助磁盘缓冲,您可以将积压的消息缓冲到磁盘,而不是内存,从而在转发器或主机崩溃时防止数据丢失。 不过,启用磁盘缓冲可能会影响性能。

如果停用了磁盘缓冲,转发器会为每种日志类型(例如,每个连接器)分配 1 GB 的内存 (RAM)。用于磁盘缓冲的内存上限为 4 GB。

正则表达式过滤条件

借助正则表达式过滤条件,您可以根据与原始日志数据匹配的模式来过滤日志。过滤条件使用 RE2 语法。 过滤条件必须包含正则表达式,并视需要定义匹配时的行为。

任意标签

标签用于使用键值对将自定义元数据附加到日志。您可以为整个转发器或转发器的特定收集器配置标签。如果两者都存在,则当键重叠时,收集器级标签会替换转发器级标签。

命名空间

您可以使用命名空间标签来标识来自不同网络段的日志,并解决重叠 IP 地址的冲突。您可以为整个转发器或在转发器的特定收集器中配置命名空间标签。如果两者都存在,则收集器级命名空间会替换转发器级命名空间。

日志类型

Google SecOps 支持多种日志类型。如需查看完整列表,请参阅支持的数据集

负载均衡和高可用性选项

只有 syslog 收集类型支持负载均衡。

转发器可以部署在数据源与转发器实例之间安装了第 4 层负载均衡器的环境中。这样,您就可以在多个转发器之间分配日志收集,并在发生故障时将日志重定向到其他转发器,从而提高可靠性。

转发器具有内置 HTTP 服务器,该服务器会响应来自负载平衡器的健康检查,并防止在启动和关闭期间丢失日志。您可以配置 HTTP 服务器、负载均衡和高可用性选项,以指定健康检查的超时时长和状态代码。此配置与基于容器的部署和负载平衡器均兼容。

设置 说明
宽限超时 转发器在响应健康检查时返回 unready 状态后,接受新连接的时间量。这也是在收到停止信号和实际开始关闭服务器之间等待的时间。这可让负载均衡器有时间从池中移除转发器。

有效值以秒为单位。例如,如需指定 10 秒,请键入 10.。不允许使用小数值。

默认值:15 秒
排空超时 转发器在关闭服务器之前等待活跃连接自行关闭的时间量。例如,如需指定 5 秒,请键入 5.。不允许使用小数值。

默认值:10 秒
Port(端口) HTTP 服务器侦听来自负载均衡器的健康检查的端口号。该值必须介于 1,024 到 65,535 之间。

默认值: 8080
IP 地址或主机名 服务器应侦听的 IP 地址或可解析为 IP 地址的主机名。

默认值:0.0.0.0(本地系统)
读取超时 用于微调 HTTP 服务器。通常保留默认设置即可,无需更改。允许用于读取整个请求(标头和正文)的最长时间量。您可以同时设置读取超时字段和读取标头超时字段。

默认值:3 秒
读取标头超时 用于微调 HTTP 服务器。通常保留默认设置即可,无需更改。允许用于读取请求标头的最长时间量。读取标头后,连接的读取截止时间会重置。

默认值:3 秒
写入超时 用于微调 HTTP 服务器。通常保留默认设置即可,无需更改。允许发送响应的最长时间。读取新请求标头时,此值会重置。

默认值:3 秒
空闲超时 用于微调 HTTP 服务器。通常保留默认设置即可,无需更改。启用空闲连接后等待下一个请求的最长时间。如果将 空闲超时字段设置为零,则使用读取超时字段的值。如果两者均为零,则使用 read header timeout 字段。

默认值:3 秒
可用的状态代码 收到活跃性检查且转发器可用时,转发器返回的状态代码。容器调度器和编排器通常会发送活跃性检查。

默认值:204
就绪状态代码 在以下任一情况下,转发器准备好接受流量时返回的状态代码:
  • 从容器调度器或编排器接收就绪性检查。
  • 从负载均衡器接收到健康检查。
默认值:204
未就绪状态代码 转发器未准备好接受流量时返回的状态代码。

默认值:503

第 1 步:定义转发器配置

每个已部署的转发器都需要一个转发器配置文件。转发器配置文件用于指定将数据传输到 Google SecOps 实例的设置。我们建议您为每个主机生成一个新的配置文件,以便清楚区分与每个主机关联的收集器。

Google Cloud 使用每个转发器实例的特定元数据自定义这些配置文件。您可以修改这些文件,以满足您的特定要求,并纳入有关您要注入的日志类型的详细信息。

您可以通过界面、API 或手动生成转发器配置文件。

  • 该界面提供了一个用于配置转发器的图形界面,是创建转发器配置的推荐方法。 这是最简单的入门方式,无需任何编程知识。如需使用 Google SecOps 界面下载配置文件,请参阅通过 Google SecOps 界面管理转发器配置

  • 该 API 提供了一种以程序化方式配置转发器的方法。如需以编程方式下载转发器配置,请参阅转发器管理 API

  • 您可以手动创建配置文件,并向其中添加配置选项。我们建议使用界面方法生成配置文件,以确保准确性并尽可能减少潜在错误。如需手动生成该文件,请参阅手动管理转发器配置文件

第 2 步:安装 Docker

本部分介绍如何在系统上安装 Docker。

通过工件注册表进行 Docker 身份验证

在安装 Docker 的过程中,您需要对 Docker 进行身份验证。您可以使用 Google Cloud CLI 命令行界面 (CLI) 对 Docker 进行身份验证,或者,如果您无法安装 Google Cloud CLI(命令行界面),则可以在虚拟机中创建新的服务账号 JSON 来进行身份验证。

方法 1:使用 Google Cloud CLI 命令行界面 (CLI)

运行以下命令以对 Docker 进行身份验证:

gcloud auth configure-docker gcr.io

方法 2:在虚拟机 (VM) 中创建并下载新的服务账号 JSON。

如果您无法安装 Google Cloud CLI(命令行界面),请使用此方法。

运行以下命令以对 Docker 进行身份验证:

cat key.json | docker login -u _json_key --password-stdin https://gcr.io

如需详细了解其他 Docker 身份验证方法,请参阅: 为 Docker 配置向 Artifact Registry 的身份验证

Linux 系统

Docker 是开源的,所有必要的文档都可从开源 Docker 社区获取。如需查看有关 Docker 安装的说明,请参阅安装 Docker Engine

如需检查 Docker 是否已正确安装在您的系统上,请执行以下命令(需要提升权限):

   docker ps
  

以下响应表明 Docker 已正确安装:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Windows 系统

以管理员权限启动 Windows PowerShell,然后按照以下步骤检查与 Google Cloud 的网络连接:

  1. 点击开始

  2. 输入 PowerShell,然后右键点击 Windows PowerShell

  3. 点击以管理员身份运行

  4. 运行以下命令:

    C:\> test-netconnection <host> -port <port>
    

    命令输出表明 TcpTestSucceeded 状态为 true

    示例:

    C:\> test-netconnection malachiteingestion-pa.googleapis.com -port 443
    ComputerName     :  malachiteingestion-pa.googleapis.com
    RemoteAddress    : 198.51.100.1
    RemotePort       : 443
    InterfaceAlias   : Ethernet
    SourceAddress    : 203.0.113.1
    TcpTestSucceeded : True
    

如需安装 Docker,请在 Windows 服务器上执行以下操作。

  1. 启用 Microsoft Windows 容器功能:

    Install-WindowsFeature containers -Restart
    
  2. 在 PowerShell 管理员模式下执行以下命令以安装 Docker CE:

    Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1
    
    .\install-docker-ce.ps1
    
    
  3. 运行 docker ps 命令测试 Docker 命令行界面,该命令会返回正在运行的容器的列表。如果 Docker 未正确安装,系统会显示错误。

    如需了解详情,请参阅使用入门:为容器准备 Windows

    对于企业部署,请安装 Mirantis Container Runtime(也称为 Docker EE)。

第 3 步:安装转发器

本部分介绍如何使用 Docker 容器安装转发器。

第 3a 步:将配置文件移至转发器目录

转发器安装过程的第一步是将必要的配置文件放置在指定的转发器目录中。

Linux 系统

按照以下步骤将配置文件放置在转发器目录中:

  1. 使用终端连接到 Linux 转发器主机。

  2. 将目录更改为运行 Docker 容器的主目录。

  3. 创建一个目录来存储转发器配置文件。

      mkdir /opt/chronicle/'CONFIG'
    

    您可以将目录名称 CONFIG 替换为您选择的任意名称。请确保在运行 docker run 命令时使用相同的目录名称。

  4. 更改目录。

      cd /opt/chronicle/config
    

  5. 文件传输完毕后,请确保配置文件位于 /opt/chronicle/config 目录中。

      ls -l
    

Windows 系统

创建一个 C:\config 文件夹,并将配置文件放在其中。您可以将文件夹名称 config 替换为您选择的任意名称。请确保在运行 docker run 命令时使用相同的文件夹名称。

第 3b 步:运行转发器

将配置文件放置在指定的转发器目录中后,您可以启动转发器或升级到最新版本的 Google SecOps 容器。

如果您要升级容器,请执行以下命令,清理之前的所有 Docker 运行。

      docker stop 'cfps'
    

      docker rm 'cfps'
    

在此示例中,Docker 容器名称为 cfps

如需首次启动转发器或升级到最新版本的 Google SecOps 容器,请执行以下操作:

  1. 从 Google Cloud获取最新的 Docker 映像:

    Linux 系统:

        docker pull gcr.io/chronicle-container/cf_production_stable
    

    Windows 系统:

      docker pull gcr.io/chronicle-container/cf_production_stable_windows
    
  2. 从 Docker 容器启动转发器:

    Linux 系统:

      docker run \
        --detach \
        --name cfps \
        --restart=always \
        --log-opt max-size=100m \
        --log-opt max-file=10 \
        --net=host \
        -v /opt/chronicle/config:/opt/chronicle/external \
        gcr.io/chronicle-container/cf_production_stable
        -v /var/log/<parser-name>:/opt/chronicle/edr \
    

    Windows 系统:

      docker run `
        --detach `
        --name cfps `
        --restart=always `
        --log-opt max-size=100m `
        --log-opt max-file=10 `
        -p 0.0.0.0:10515-10520:10515-10520/udp `
        -v C:\config\:C:/opt/chronicle/external `
        gcr.io/chronicle-container/cf_production_stable_windows
    

--log-opt 选项自 Docker 1.13 起可用。这些选项可限制容器日志文件的大小,并且只要您使用的 Docker 版本支持这些选项,就必须使用这些选项。

管理转发器

以下部分提供了有关管理转发器的指南。

查看转发器日志

  • 如需查看转发器日志,请执行以下命令:

    docker logs cfps
    
  • 如需查看存储日志的文件路径,请执行以下命令:

    docker inspect --format='{{.LogPath}}' CONTAINER_NAME
    
  • 如需查看实时运行日志,请执行以下命令:

    docker logs cfps -f
    
  • 如需将日志存储在文件中,请执行以下命令:

    docker logs cfps &> logs.txt
    

卸载转发器

以下 Docker 命令可帮助您停止、卸载或移除转发器。

  • 如需停止或卸载转发器容器,请执行以下命令:

    docker stop cfps
    
  • 如需移除转发器容器,请执行以下命令:

    docker rm cfps
    

更新转发器

转发器由两个组件组成,每个组件的更新流程如下:

  • 转发器软件包:此组件会自动更新,无需重启。

  • 转发器 Docker 映像:此组件的更新是手动执行的。 您需要停止当前的转发器实例并启动新的转发器实例,如步骤 3b 中所述。

特定数据集的转发器提取指南

如需了解如何使用转发器提取特定数据集,请参阅以下内容:

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