适用于 Linux 的 Google Security Operations 转发器

本文档介绍了如何在 Linux 上安装和配置转发器。 如需在 Windows 上安装转发器,请参阅 Windows 转发器

转发器用于将日志从客户环境发送到 Google Security Operations 实例。当客户希望将日志直接发送到 Google 安全运维团队,并且不希望使用 Cloud 存储分区来注入数据,或者 logtype 未进行通过第三方 API 进行原生提取。转发器可以 部署解决方案,而不必手动将 ingestion API

您可以在各种 Linux 发行版上安装转发器,包括 Debian、Ubuntu、Red Hat 和 Suse。Google Cloud 为软件提供 Docker 容器你可以在任意一台计算机上运行和管理 Docker 容器 运行 Linux 的物理或虚拟机。

系统要求

以下是一般性建议。 如需专门针对 系统中,请与 Google Security Operations 支持团队联系。

  • RAM - Google Security Operations 接受的每种收集的数据类型(收集器)各 1 GB 以进行提取例如,如果您指定了 4 个不同的收集器, 需要 4 GB RAM 来收集所有四个收集器的数据。

  • CPU - 2 个 CPU 足以处理每秒不到 10,000 个事件 (EPS)(所有数据类型的总计)。如果您预期转发超过 10000 EPS,请供应 4 到 6 个 CPU。

  • 磁盘 - 100 MB 的磁盘空间已足够,无论存储数据量 Google Security Operations 转发器句柄。如果您需要缓冲积压的消息 而不是内存,请参阅磁盘缓冲。Google Security Operations 转发器缓冲区默认发送到内存中。

Google IP 地址范围

在设置转发器配置时(例如,在设置防火墙的配置时),您可能需要打开 IP 地址范围。Google 无法提供具体的 IP 地址列表。不过,您可以获取 Google IP 地址范围

验证防火墙配置

Google Security Operations 转发器容器与互联网之间的任何防火墙或经过身份验证的代理都需要通过规则开放对以下主机的访问权限:

连接类型 目标 端口
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-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 accounts.google.com 443
TCP gcr.io 443
TCP oauth2.googleapis.com 443
TCP storage.googleapis.com 443

自定义配置文件

Google Cloud 会按照如下方式为转发器实例量身定制配置文件: 特定元数据,如输出部分所示。您可以下载配置文件 根据您的要求,添加关于 要在收集器下提取的日志类型 部分。如需详细了解配置设置,请参阅配置设置参考

配置 Linux 转发器

如需通过界面配置 Linux 转发器,请参阅通过 Google SecOps 界面管理转发器配置

如需手动配置 Linux 转发器,请执行以下操作:

  1. 创建软件提供的配置文件模板的副本。

  2. 下载配置文件 通过界面显示数据

  3. 使用以下命名惯例将两个文件保存到同一目录中:

    FORWARDER_NAME.conf - 使用此文件定义 与日志注入相关的配置设置

    FORWARDER_NAME_auth.conf - 使用此文件定义 授权凭据。

  4. 修改文件以包含转发器实例的配置。 使用本文档中提供的示例作为参考。

  5. 确保 FORWARDER_NAME_auth.conf 文件中,即使输入内容不包含 相应的身份验证详细信息。这是正确映射数据所必需的。

转发器将在 5 分钟内自动应用对配置文件所做的任何更改。

配置示例

以下代码示例显示了 。如需详细了解每种提取类型的设置 机制(例如 Splunk 或 Syslog),请参阅收集数据

FORWARDER_NAME.conf 文件

output:
  url: malachiteingestion-pa.googleapis.com:443
  identity:
    identity:
    collector_id: COLLECTOR_ID \
    customer_id: CUSTOMER_ID \

collectors:
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DHCP"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10514
      udp_address: 0.0.0.0:10514
      connection_timeout_sec: 60
      tcp_buffer_size: 524288
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DNS"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10515
      connection_timeout_sec: 60
      tcp_buffer_size: 524288

FORWARDER_NAME_auth.conf 文件

output:
  identity:
    secret_key: |
      {
        "type": "service_account",
        "project_id": "PROJECT_ID" \,
        "private_key_id": "PRIVATE_KEY_ID" \,
        "private_key": "-----BEGIN PRIVATE KEY-----\\"PRIVATE_KEY" \n-----END PRIVATE KEY-----\n",
        "client_email": "CLIENT_EMAIL" \,
        "client_id": "CLIENT_ID" \,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-account-1%40example-account.iam.gserviceaccount.com"
      }

collectors:
  - syslog:
  - syslog:
      certificate: "../forwarder/inputs/testdata/localhost.pem"
      certificate_key: "../forwarder/inputs/testdata/localhost.key"

利用这两个文件系统,您可以将身份验证凭据存储在 文件以增强安全性。您可以将 FORWARDER_NAME.conf 存储在 版本控制代码库或任何开放式配置管理系统您可以将 FORWARDER_NAME_auth.conf 文件。

示例配置(单个文件)

output:
  url: malachiteingestion-pa.googleapis.com:443
  identity:
    identity:
    collector_id: "COLLECTOR_ID" \
    customer_id: "CUSTOMER_ID" \
    secret_key: |
      {
        "type": "service_account",
        "project_id": "PROJECT_ID" \,
        "private_key_id": "PRIVATE_KEY_ID" \,
        "private_key": "-----BEGIN PRIVATE KEY-----\ "PRIVATE_KEY" \n-----END PRIVATE KEY-----\n",
        "client_email": "CLIENT_EMAIL" \,
        "client_id": "CLIENT_ID" \,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/malachite-test-1%40malachite-test.iam.gserviceaccount.com"
      }

collectors:
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DHCP"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10514
      udp_address: 0.0.0.0:10514
      connection_timeout_sec: 60
      tcp_buffer_size: 524288
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DNS"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10515
      connection_timeout_sec: 60
      certificate: "../forwarder/inputs/testdata/localhost.pem"
      certificate_key: "../forwarder/inputs/testdata/localhost.key"
      tcp_buffer_size: 524288

如果您使用的是单个配置文件,并希望迁移到两个文件 请执行以下操作:

  1. 创建现有配置的副本。
  2. 将一个文件另存为 FORWARDER_NAME.conf 文件,并从该文件中删除授权凭据。
  3. 将另一个文件另存为 FORWARDER_NAME_auth.conf 文件,并从该文件中删除所有非授权数据。使用本指南中提供的示例配置文件作为参考。
  4. 请务必遵循自定义配置文件部分中提到的命名惯例和其他准则。

安装 Docker

Docker 的安装取决于主机环境。您可以在不同的主机操作系统上安装 Docker。Google Cloud 提供的有限文档可帮助您在多种常用的 Linux 发行版上安装 Docker。不过,Docker 是开源的,并且所有必要的文档都已提供。如需 Docker 安装说明,请参阅 Docker 文档

在系统上安装 Docker 后,Google Security Operations 转发器的安装过程与任何类型的 Linux 发行版类似。

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

   docker ps
  

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

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

实用的 Docker 命令

  • 您可以使用以下命令收集有关 Docker 安装的其他信息:

    docker info
    
  • Docker 服务默认可以停用。如需检查该功能是否已停用,请执行以下操作: 执行以下命令:

    systemctl is-enabled docker
    
  • 如需启用 Docker 服务并立即启动,请执行以下任一操作 命令:

    sudo systemctl enable --now docker
    
    sudo systemctl enable /usr/lib/systemd/system/docker.service
    

    输出:

    Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service
    
  • 启动转发器时,执行以下命令设置转发器 自动重启:

    sudo docker run --restart=always `IMAGE_NAME`
    

    IMAGE_NAME 是转发器映像名称。

  • 如需检查 Docker 服务的状态和详细信息,请执行以下命令:

    sudo systemctl status docker
    

    输出:

    ● docker.service - Docker Application Container Engine
        Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
        Active: active (running) since Sat 2020-07-18 11:14:05 UTC; 15s ago
    TriggeredBy: ● docker.socket
          Docs: https://docs.docker.com
      Main PID: 263 (dockerd)
          Tasks: 20
        Memory: 100.4M
        CGroup: /system.slice/docker.service
                └─263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    Jul 18 11:14:05 swarm-kraken dockerd[263]: time="2020-07-18T11:14:05.713787002Z" level=info msg="API listen on /run/docker.sock"
    Jul 18 11:14:05 swarm-kraken systemd[1]: Started Docker Application Container Engine
    

    如果您对 Docker 有任何问题,Google Security Operations 支持团队可以请求 以帮助解决问题并进行调试。

在 Linux 上安装转发器

本部分介绍了如何在 Linux 系统上使用 Docker 容器安装 Google Security Operations 转发器。

第 1 步:下载、转移和安装转发器配置文件

Google Security Operations 提供特定于您的操作系统(Linux 或 Windows)的转发器配置文件。您可以根据需要下载配置文件。完成以下步骤后,将配置文件从笔记本电脑传输到用户主目录中的转发器 /opt/chronicle/config 目录。

  1. 通过终端连接到 Linux 转发器的主机。

  2. 在 Linux 转发器的主机上创建新用户。

      adduser USERNAME
      passwd USERNAME
      usermod -aG wheel USERNAME
    

  3. 将目录更改为运行 Docker 的新用户的主目录 容器。

  4. 创建一个目录来存储 Google Security Operations 转发器配置文件:

      mkdir /opt/chronicle/config
    

  5. 更改目录。

      cd /opt/chronicle/config
    

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

      ls -l
    

第 2 步:在 Docker 容器中运行转发器

您可以按照以下步骤启动 Google Security Operations 转发器 并升级到 Google Security Operations 容器:

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

  1. 如果要升级,请清理之前的所有 Docker 运行。在 在以下示例中,Docker 容器的名称为 cfps。获取 最新版本的 Docker 映像 docker pull 命令,如下所示。

    docker stop cfps
    
    docker rm cfps
    
  2. 从 Google Cloud 获取最新的 Docker 映像:

    docker pull gcr.io/chronicle-container/cf_production_stable
    
  3. 从 Docker 容器启动 Google Security Operations 转发器:

    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
    

查看转发器日志

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

  sudo docker logs cfps

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

docker inspect --format='{{.LogPath}}' CONTAINER_NAME
 

如需查看实时运行日志,请执行以下命令:

  sudo docker logs cfps -f

如需将日志存储在文件中,请执行以下命令:

  sudo docker logs cfps &> logs.txt

卸载转发器

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

如需停止或卸载转发器容器,请执行以下操作:

    docker stop cfps
  

如需移除转发器容器,请执行以下操作:

    docker rm cfps
  

更新转发器

Google Security Operations 转发器分为两部分,升级如下:

  • 转发器软件包 - 会自动更新,不需要重启。

  • 转发器 Docker 映像 - 在停止现有转发器并启动新实例后,手动更新 如第 2 步中所述。

收集数据

以下部分可帮助您配置 Google Security Operations 转发器,以注入不同类型的数据, 转发到 Google Security Operations 实例。

收集 Splunk 数据

您可以配置 Google Security Operations 转发器,以将 Splunk 数据转发到 Google Security Operations。 Google Cloud 使用以下信息配置 Google Security Operations 转发器,以从 Splunk 转发您的数据:

  • Splunk REST API 的网址(例如 https://10.0.113.15:8089)。

  • Splunk 查询用于为每个必需数据类型(例如,index=dns)生成数据。

FORWARDER_NAME.conf
output:
collectors:
  - splunk:
      common:
        enabled: true
        data_type: WINDOWS_DNS
        data_hint: "#fields ts      uid     id.orig_h       id.orig_p       id.resp_h         id.resp_p       proto   trans_id        query   qclass  qclass_name"
        batch_n_seconds: 10
        batch_n_bytes: 819200
      url: https://127.0.0.1:8089
      is_ignore_cert: true
      minimum_window_size: 10s
      maximum_window_size: 30s
      query_string: search index=* sourcetype=dns
      query_mode: realtime
  • 向 Google Security Operations 提供您的 Splunk 账号凭据 。为此,您可以创建一个 creds.txt 文件。

如需使用 creds.txt 文件,请执行以下操作:

  1. 为您的 Splunk 凭据创建一个本地文件,并将其命名为 creds.txt

  2. 将用户名放在第一行,将密码放在第二行:

    cat creds.txt
    
    myusername
    mypassword
    
  3. 使用 Google Security Operations 转发器访问 Splunk 请将 creds.txt 文件复制到 config 目录(与 目录)。例如:

    cp creds.txt /opt/chronicle/config/creds.txt
    
  4. 验证 creds.txt 文件是否位于正确的位置:

    ls /opt/chronicle/config
    

收集 Syslog 数据

Google Security Operations 转发器可以用作 Syslog 服务器。您可以配置任意 支持通过 TCP 或 UDP 发送 Syslog 数据的设备或服务器 将其数据转发到 Google Security Operations 转发器。您可以 控制 Search Appliance 或服务器发送到 Google Security Operations 转发器。然后,Google Security Operations 转发器便可 将数据传输到 Google Security Operations 即可。

FORWARDER_NAME.conf 配置文件(由 Google Cloud)指定要监控的每种类型 转发的数据(例如端口 10514)。默认情况下,Google Security Operations 转发器接受 TCP 和 UDP 连接。

配置 rsyslog

如需配置 rsyslog,您需要为每个端口(例如,每种数据类型)指定目标。请查阅系统文档,了解正确的语法。通过 以下示例展示了 rsyslog 目标配置:

  • TCP 日志流量:dns.* @@192.168.0.12:10514

  • UDP 日志流量:dns.* @192.168.0.12:10514

为 syslog 配置启用 TLS

您可以为与 Google Security Operations 的 Syslog 连接启用 TLS 。在 Google Security Operations 转发器配置文件中 (FORWARDER_NAME.conf),请指定您自己的位置 已生成的证书和证书密钥,如以下示例所示:

证书 "/opt/chronicle/external/certs/client_generated_cert.pem"
certificate_key "/opt/chronicle/external/certs/client_generated_cert.key"

根据所示示例,修改 Google Security Operations 转发器 配置文件 (FORWARDER_NAME.conf) 中,如下所示:

  collectors:
- syslog:
    common:
      enabled: true
      data_type: WINDOWS_DNS
      data_hint:
      batch_n_seconds: 10
      batch_n_bytes: 1048576
    tcp_address: 0.0.0.0:10515
    tcp_buffer_size: 65536
    connection_timeout_sec: 60
    certificate: "/opt/chronicle/external/certs/client_generated_cert.pem"
    certificate_key: "/opt/chronicle/external/certs/client_generated_cert.key"
    minimum_tls_version: "TLSv1_3"

需要注意的几个要点:

  • 您可以配置 TCP 缓冲区空间。默认 TCP 缓冲区空间 为 64 KB。

  • connection_timeout 的默认值和推荐值为 60 秒。 如果 TCP 连接处于非活动状态的时间达到指定的时间,将会终止。

  • 系统会根据 输入请求。输入请求的 TLS 版本应高于 最低的 TLS 版本。最低的 TLS 版本应为以下版本之一: 以下值:TLSv1_0、TLSv1_1、TLSv1_2、TLSv1_3。

您可以在配置目录下创建证书目录,并将证书文件存储在该目录下。

收集文件数据

文件收集器旨在从文件中提取日志。文件应为 绑定到 Docker 容器

如果要从单个日志文件手动上传日志,请使用此方式。这可以 用于回填特定日志文件的日志。

从 Docker 容器启动 Google Security Operations 转发器:

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

这一 docker run 命令对于将负载卷映射到容器至关重要。

根据此示例,您应该修改 Google Security Operations 转发器 (FORWARDER_NAME.conf 文件)。 sample.txt 文件应该出现在 “/var/log/crowdstrike/falconhostclient”文件夹。

 collectors:
  - file:
       common:
         enabled: true
         data_type: CS_EDR
         data_hint:
         batch_n_seconds: 10
         batch_n_bytes: 1048576
       file_path: /opt/chronicle/edr/sample.txt
       filter:

标记配置

skip_seek_to_end (bool):此标志默认设置为 false,文件 input 仅发送新的日志行作为输入。将该值设置为 true 会导致 之前的日志行。这会导致日志 。将此标志设置为 true 在某些情况下很有帮助 (例如,在服务中断期间),因为重新启动转发器会将 缺失日志行。

poll (bool):文件收集器使用 Tail 库检查 文件系统通过将此标志设置为 true,Tail 库会使用轮询 方法,而不是默认的通知方法。

收集数据包数据

Google Security Operations 转发器可以直接从网络捕获数据包 使用 libcap 在 Linux 上运行接口。如需详细了解 libcap,请参阅 libcap - Linux 手册页面

系统捕获数据包并将其发送到 Google Security Operations,而不是日志条目。只能从本地接口处理数据包捕获。如需为您的系统启用数据包捕获功能,请联系 Google Security Operations 支持服务。

Google Cloud 通过伯克利数据中心配置 Google Security Operations 转发器 捕获数据包(例如端口 53)时使用的数据包过滤器 (BPF) 表达式 而不是 localhost)。如需了解详情,请参阅 Berkeley 数据包过滤器

从 Kafka 主题收集数据

您可以像从 Syslog 一样从 Kafka 主题中注入数据。通过 利用使用方群组,您最多可以部署 3 个转发器, 从同一 Kafka 主题拉取数据。如需了解详情,请参阅 Kafka

如需详细了解 Kafka 使用方群组,请参阅以下内容:https://docs.confluent.io/platform/current/clients/consumer.html

配置示例:Kafka 输入

以下转发器配置展示了如何设置转发器以注入数据 以及来自 Kafka 主题的数据。

FORWARDER_NAME.conf 文件

collectors:
- kafka:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: NIX_SYSTEM
        enabled: true
      topic: example-topic
      group_id: chronicle-forwarder
      timeout: 60s
      brokers: ["broker-1:9092", "broker-2:9093"]
      tls:
        insecureSkipVerify: true
        certificate: "/path/to/cert.pem"
        certificate_key: "/path/to/cert.key"
- syslog:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: WINEVTLOG
        enabled: true
      tcp_address: 0.0.0.0:30001
      connection_timeout_sec: 60

FORWARDER_NAME_auth.conf 文件

collectors:
- kafka:
      username: user
      password: password
- syslog:

收集 WebProxy 数据

Google Security Operations 转发器可以直接从网络捕获 WebProxy 数据 使用 libcap 在 Linux 上运行接口。如需详细了解 libcap,请参阅 libcap - Linux 手册页面。 要为系统启用 WebProxy 数据捕获功能,请联系 Google 安全运营支持

修改 Google Security Operations 转发器配置(FORWARDER_NAME.conf 文件) 如下所示:

- webproxy:
      common:
        enabled : true
        data_type: <Your LogType>
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      interface: any
      bpf: tcp and dst port 80

自定义配置

下表列出了转发器配置文件中使用的重要参数。

参数 说明
data_type 收集器可以收集和处理的日志数据类型。
元数据 元数据,用于替换全局元数据。
max_file_buffer_bytes 磁盘或文件缓冲区中可累积的字节数上限。默认值为 1073741824,即 1 GB。
max_memory_buffer_bytes 内存缓冲区中可累积的字节数上限。通过 默认值为 1073741824,即 1 GB。
write_to_disk_dir_path 用于文件或磁盘缓冲区的路径。
write_to_disk_buffer_enabled 如果为 true,则使用磁盘缓冲区而不是内存缓冲区。默认值为 false
batch_n_bytes 在此之后,收集器可以累计的字节数上限 进行批量处理的节点。默认值为 1048576, 1 MB。
batch_n_seconds 对收集器收集的数据进行批处理的秒数。默认值为 11 秒。
data_hint 收集器可以接收的数据格式(通常是描述格式的日志文件标头)。

有关配置文件中使用的参数的详尽列表,请参阅 转发器配置字段收集器配置字段

切换数据压缩

日志压缩可减少将日志传输到 Google Security Operations,不过,压缩可能会导致 CPU 使用量增加。 CPU 使用率和带宽之间的权衡取决于许多因素,包括日志数据的类型、数据的可压缩性、运行转发器的主机上 CPU 周期的可用性以及减少网络带宽消耗的需要。

例如,基于文本的日志可以很好地压缩,可以在降低 CPU 使用率的情况下显著节省带宽。但是,原始数据包的加密载荷不能很好地压缩,并且会产生更高的 CPU 使用率。

默认情况下,日志压缩处于停用状态。启用日志压缩 减少带宽消耗不过,启用日志压缩 增加 CPU 使用率。请注意权衡利弊。

要启用日志压缩,请将 compression 字段设置为 true,如下所示: 如以下示例中所示:

FORWARDER_NAME.conf 文件

output:
  compression: true
    url: malachiteingestion-pa.googleapis.com:443
    identity:
      identity:
      collector_id: 10479925-878c-11e7-9421-10604b7cb5c1
      customer_id: ebdc4bb9-878b-11e7-8455-10604b7cb5c1
...

FORWARDER_NAME_auth.conf 文件

output:
  identity:
    secret_key: |
    {
     "type": "service_account",
...
    }

配置磁盘缓冲

磁盘缓冲允许您将积压的消息缓冲到磁盘,而不是内存。可存储积压的消息,以防转发器崩溃或底层主机崩溃。请注意,启用磁盘缓冲可能会影响 性能

如果停用磁盘缓冲,则转发器会为每台设备使用 1 GB 的内存 (RAM) 日志类型(例如每个连接器)。指定 max_memory_buffer_bytes 配置参数。允许的最大内存为 4 GB。

您可以将自动内存缓冲配置为 收集器,它能更好地处理流量高峰。要动态启用 共享缓冲区,请在您的转发器配置中添加以下内容:

auto_buffer:
  enabled: true
  target_memory_utilization: 80

如果已启用自动磁盘缓冲,但 target_memory_utilization 未定义,它使用默认值 共 70 个。

如果您使用 Docker 运行转发器,Google 建议您将一个 将卷与配置卷分开,以实现隔离。此外,每个输入都应与其自己的目录或卷隔离,以避免冲突。

配置示例:磁盘缓冲

以下配置包括用于启用磁盘缓冲的语法:

collectors:
- syslog:
    common:
      write_to_disk_buffer_enabled: true
      # /buffers/NIX_SYSTEM is part of the external mounted volume for the
forwarder
      write_to_disk_dir_path: /buffers/NIX_SYSTEM
      max_file_buffer_bytes: 1073741824
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

设置正则表达式过滤条件

借助正则表达式过滤条件,您可以根据正则表达式与原始日志匹配来过滤日志。

过滤条件采用此处所述的 RE2 语法:https://github.com/google/re2/wiki/Syntax

过滤条件必须包含正则表达式,并视需要定义匹配时的行为。匹配项的默认行为是块(您也可以明确将其配置为块)。

或者,您也可以使用 allow 行为指定过滤条件。如果您指定 任何 allow 过滤器,则转发器会屏蔽与至少一个过滤器不匹配的日志 allow 过滤条件。

您可以定义任意数量的过滤条件。屏蔽过滤条件采用 allow 过滤条件的优先级。

定义过滤器时,必须为其指定名称。有效广告资源的名称 过滤器将通过转发器运行状况指标报告给 Google Security Operations。过滤条件 在配置根目录中定义的过滤器合并到 收集器级别。如果存在以下情况,收集器级别的过滤器 冲突的名称。如果未在根级或收集器中定义过滤器 则行为是允许所有广告。

配置示例:正则表达式过滤条件

在以下转发器配置中,WINEVTLOG 记录了 不符合根过滤条件 (allow_filter) 的结果。鉴于 表达式,过滤条件只允许使用优先级介于 0 到 99 之间的日志。 不过,任何包含“foo”的NIX_SYSTEM日志或“bar”遭到屏蔽 尽管存在 allow_filter,这是因为过滤条件使用逻辑 OR。全部 直到触发过滤器为止。

regex_filters:
  allow_filter:
    regexp: ^<[1-9][0-9]?$>.*$
    behavior_on_match: allow
collectors:
- syslog:
    common:
      regex_filters:
        block_filter_1:
          regexp: ^.*foo.*$
          behavior_on_match: block
        block_filter_2:
          regexp: ^.*bar.*$
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

配置任意标签

标签用于使用键值对将任意元数据附加到日志。可以为整个转发器或特定收集器配置标签 。如果两者同时提供,则标签会与收集器的 如果键重叠,则键优先于转发器的键。

配置示例:任意标签

在以下转发器配置中,“foo=bar”和“meow=mix”键和 值对都附加到 WINEVTLOG 日志中,而“foo=baz”和 “meow=mix”键值对附加到 NIX_SYSTEM 日志。

metadata:
  labels:
    foo: bar
    meow: mix
collectors:
syslog:
    common:
      metadata:
        labels:
          foo: baz
          meow: mix
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

配置命名空间

使用命名空间标签来标识来自不同网络段的日志,并解决重叠的 IP 地址冲突。您可以为一个 Pod 配置命名空间标签 整个转发器或转发器的特定收集器中。如果同时包含两者,则特定收集器的命名空间优先。

为转发器配置的任何命名空间都会与关联的资产一起显示在 Google Security Operations 界面。您还可以使用 Google Security Operations Search 功能。

如需了解如何在 Google Security Operations 界面中查看命名空间, 请参见此处

配置示例:命名空间

在以下转发器配置中,WINEVTLOG 日志为 已挂接到 FORWARDER 命名空间,且 NIX_SYSTEM 日志已附加到 挂接到 CORPORATE 命名空间。

metadata:
  namespace: FORWARDER
collectors:
- syslog:
      common:
        metadata:
          namespace: CORPORATE
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: NIX_SYSTEM
        enabled: true
      tcp_address: 0.0.0.0:30000
      connection_timeout_sec: 60
- syslog:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: WINEVTLOG
        enabled: true
      tcp_address: 0.0.0.0:30001
      connection_timeout_sec: 60

配置负载均衡和高可用性选项

适用于 Linux 的 Google Security Operations 转发器可部署在一个环境中 在数据源和转发器之间安装第 4 层负载均衡器 实例。这样,客户就可以将日志收集 或者,如果一个转发器出现故障,则将日志发送给其他转发器。这个 只有 syslog 收集类型支持该功能。

Linux 转发器包含一个内置 HTTP 服务器,该服务器会响应来自负载均衡器的 HTTP 健康检查。HTTP 服务器还有助于确保在启动或关闭转发器期间不会丢失日志。

在转发器配置文件的 server 部分下配置 HTTP 服务器、负载均衡和高可用性选项。这些选项支持设置超时持续时间和所返回的状态代码,此类状态代码用于响应在容器调度器和基于编排的部署中收到的健康检查,以及从传统负载均衡器返回的健康检查。

对运行状况、就绪性和活跃性检查使用以下网址路径。 <host:port> 值在转发器配置中定义。

  • http://<host:port>/meta/available:容器的活跃性检查 调度器或编排器
  • http://<host:port>/meta/ready:就绪性检查和传统负载 负载平衡器健康检查。

以下转发器配置是用于负载均衡和高可用性的配置示例:

collectors:
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60
server:
  graceful_timeout: 15s
  drain_timeout: 10s
  http:
    port: 8080
    host: 0.0.0.0
    read_timeout: 3s
    read_header_timeout: 3s
    write_timeout: 3s
    idle_timeout: 3s
    routes:
    - meta:
        available_status: 204
        ready_status: 204
        unready_status: 503
配置路径 说明
server : graceful_timeout 转发器返回错误的就绪性/健康检查的时间,以及 仍然接受新连接。这也是在收到停止信号和实际开始关闭服务器之间等待的时间。这可让负载均衡器有时间从池中移除转发器。
server : drain_timeout 转发器等待活动连接的时间 在被服务器关闭之前成功自动关闭。
server : http : port HTTP 服务器从该端口接收健康检查的端口号 进行负载均衡器必须介于 1024-65535 之间。
server : http : host 可以解析为 IP 地址的 IP 地址或主机名, 。如果为空,则默认值为本地系统 (0.0.0.0)。
server : http : read_timeout 用于微调 HTTP 服务器。通常保留默认设置即可,无需更改。允许朗读全文的最长时间 标头和正文。您可以同时设置 read_timeout 和 read_header_timeout。
server : http : read_header_timeout 用于微调 HTTP 服务器。通常保留默认设置即可,无需更改。允许读取请求的最长时间 标头。读取连接时,截止时间会在读取 标头。
server : http : write_timeout 用于微调 HTTP 服务器。通常保留默认设置即可,无需更改。允许发送响应的最长时间。 读取新请求标头时,此值会重置。
server : http : idle_timeout 用于微调 HTTP 服务器。通常保留默认设置即可,无需更改。等待下一次的最长时间 请求。如果 idle_timeout 为零,则 使用 read_timeout 的值。如果两者都为零,则 read_header_timeout 为 。
routes : meta : ready_status 转发器在准备好接受流量时返回的状态代码 属于以下任一情况:
  • 从容器调度器或 编排系统
  • 从传统负载均衡器接收健康检查。
routes : meta : unready_status 转发器在未准备好接受时返回的状态代码 流量。
routes : meta : available_status 收到活跃性检查时转发器返回的状态代码 且转发器可用。容器调度器或编排器通常会 活跃性检查

常见问题解答

如何更新转发器?

Linux 转发器通过 Docker 中的 Shell 脚本不断更新 图片。如需更新 Docker 映像,请运行转发器

什么是 Docker 容器?

  • Docker 容器就像虚拟机 安全、隔离和资源管理

  • 虚拟机 - 同时具有特权空间(Linux 内核)和 用户空间(与您交互的所有内容:libc、python、ls、tcpdump 等)。

  • 容器 - 只有一个用户空间(您与之互动的所有内容:libc、 python、ls、tcpdump 等)并依赖于主机的特权空间。

为何使用容器分发 Google Security Operations 转发器?

  • 通过隔离提供更好的安全性:
    • 客户环境和要求不会影响 Google Security Operations 。
    • Google Security Operations 转发器环境和要求不影响 客户。
    • 容器分发机制已存在,并且对于 Google Cloud 和客户而言是私有的和独立的。https://cloud.google.com/container-registry/

您是否需要学习高级 Docker 命令?

  • Google Security Operations 转发器只使用一个容器,因此无需 了解 Swarm、编排或其他高级 Docker 概念或命令