安装和配置转发器
本文档介绍了如何使用 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 GB RAM 才能收集所有四个收集器的数据。
CPU:两个 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。例如,如果您指定了四个不同的收集器,则需要 6 GB RAM 来收集所有四个收集器的数据。
CPU:两个 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 | eu-chronicle.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 | www.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 秒 |
| 端口 | HTTP 服务器监听来自负载均衡器的健康检查的端口号。该值必须介于 1,024 到 65,535 之间。 默认: 8080 |
| IP 地址或主机名 | 服务器应监听的 IP 地址或可解析为 IP 地址的主机名。 默认值:0.0.0.0(本地系统) |
| 读取超时 | 用于微调 HTTP 服务器。通常,无需更改默认设置。读取整个请求(包括标头和正文)所允许的最长时间。您可以同时设置读取超时字段和读取标头超时字段。 默认值:3 秒 |
| 读取标头超时 | 用于微调 HTTP 服务器。通常,无需更改默认设置。读取请求标头允许的最长时间。读取标头后,连接的读取截止时间会重置。 默认值:3 秒 |
| 写入超时 | 用于微调 HTTP 服务器。通常,无需更改默认设置。允许发送响应的最长时间。读取新请求标头时,此值会重置。 默认值:3 秒 |
| 空闲超时 | 用于微调 HTTP 服务器。通常,无需更改默认设置。启用空闲连接时,等待下一个请求的最长时间。如果空闲超时字段设置为零,则系统会使用读取超时字段的值。如果两者均为零,则使用读取标头超时 字段。 默认值:3 秒 |
| 可用状态代码 | 收到活跃性检查且转发器可用时,转发器返回的状态代码。容器调度器和编排器通常会发送活跃性检查。 默认值:204 |
| 就绪状态代码 | 在以下任一情况下,转发器准备好接受流量时返回的状态代码:
|
| 未就绪状态代码 | 转发器未准备好接受流量时返回的状态代码。 默认值:503 |
第 1 步:定义转发器配置
每个已部署的转发器都需要一个转发器配置文件。转发器配置文件指定用于将数据传输到 Google SecOps 实例的设置。我们建议您为每个主机生成一个新的配置文件,以便清楚区分与每个主机相关联的收集器。
Google Cloud 会使用每个转发器实例的特定元数据自定义这些配置文件。您可以修改这些文件,以满足您的特定要求,并添加有关要注入的日志类型的详细信息。
您可以通过界面、API 或手动生成转发器配置文件。
该界面提供了一个用于配置转发器的图形界面,是创建转发器配置的推荐方法。这是最简单的入门方式,不需要任何编程。如需使用 Google SecOps 界面下载配置文件,请参阅通过 Google SecOps 界面管理转发器配置。
该 API 提供了一种以编程方式配置转发器的方法。如需以编程方式下载转发器配置,请参阅 Forwarder Management API。
您可以手动创建配置文件,并向其中添加配置选项。我们建议使用界面方法生成配置文件,以确保准确性并最大限度地减少潜在错误。如需手动生成文件,请参阅手动管理转发器配置文件。
第 2 步:安装 Docker
本部分介绍了如何在系统上安装 Docker。
使用 Artifact Registry 进行 Docker 身份验证
在安装 Docker 的过程中,您需要对 Docker 进行身份验证。您可以使用 Google Cloud CLI 命令行界面 (CLI) 对 Docker 进行身份验证,或者,如果您无法安装 Google Cloud CLI(命令行界面),则可以在虚拟机中创建新的服务账号 JSON。
方法一:使用 Google Cloud CLI 命令行界面 (CLI)
运行以下命令,对 Docker 进行身份验证:
gcloud auth configure-docker gcr.io
方法二:在虚拟机 (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 的网络连接:
点击开始。
输入
PowerShell,然后右键点击 Windows PowerShell。点击以管理员身份运行。
运行以下命令:
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 服务器上执行以下操作。
启用 Microsoft Windows 容器功能:
Install-WindowsFeature containers -Restart在 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通过运行命令
docker ps测试 Docker 命令行界面,该命令会返回正在运行的容器的列表。如果 Docker 未正确安装,系统会显示错误。如需了解详情,请参阅使用入门:为容器准备 Windows。
对于企业部署,请安装 Mirantis Container Runtime(也称为 Docker EE)。
第 3 步:安装转发器
本部分介绍了如何使用 Docker 容器安装转发器。
第 3a 步:将配置文件移至转发器目录
转发器安装过程的第一步是将必要的配置文件放入指定的转发器目录中。
Linux 系统
按照以下步骤将配置文件放入转发器目录中:
使用终端连接到 Linux 转发器主机。
将目录切换到运行 Docker 容器的主目录。
创建一个目录来存储转发器配置文件。
mkdir /opt/chronicle/'CONFIG'
您可以将目录名称
CONFIG替换为您选择的任何名称。确保在运行docker run命令时使用相同的目录名称。更改目录。
cd /opt/chronicle/config
文件传输完成后,请确保配置文件位于
/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 容器,请执行以下操作:
从 Google Cloud获取最新的 Docker 映像:
Linux 系统:
docker pull gcr.io/chronicle-container/cf_production_stableWindows 系统:
docker pull gcr.io/chronicle-container/cf_production_stable_windows从 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(Linux 系统可选)从 Docker 容器启动转发器时,您可以选择从
/var/log/装载特定子目录。
如需装载特定子目录,请在命令中添加以下行,并将<parser-name>占位符替换为主机系统上应从中收集日志的目录的名称:-v /var/log/<parser-name>:/opt/chronicle/edr \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 \ -v /var/log/<parser-name>:/opt/chronicle/edr \ gcr.io/chronicle-container/cf_production_stable`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 步中所述。
特定数据集的转发器注入指南
如需了解如何使用转发器注入特定数据集,请参阅以下内容:
- 安装 Carbon Black Event Forwarder
- 收集 Cisco ASA 防火墙日志
- 收集 Corelight Sensor 日志
- 收集 Fluentd 日志
- 收集 Linux auditd 和 Unix 系统日志
- 收集 Microsoft Windows AD 数据
- 收集 Microsoft Windows DHCP 数据
- 收集 Microsoft Windows DNS 数据
- 收集 Microsoft Windows 事件数据
- 收集 Microsoft Windows Sysmon 数据
- 收集 osquery 日志
- 收集 OSSEC 日志
- 收集 Palo Alto Networks 防火墙日志
- 收集 Splunk CIM 日志
- 收集 Zeek 日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。