排查常见问题

支持范围:

本文档提供了一系列提示和过程,可帮助您诊断和解决在部署和运行 Google Security Operations 远程代理期间遇到的常见问题。

密钥不匹配问题

当 Google Security Operations 和远程代理中的私钥不匹配时,就会出现此问题。如需解决此问题,请确保代理资源中的密钥与 Siemplify agent_db 中的密钥匹配。

远程连接器故障

如果远程连接器发生故障,请按以下步骤操作:

  1. 验证代理上是否已成功安装集成实例。
  2. 在错误级别检查代理日志,找出连接过程中的任何故障。
  3. 在本地测试相同的连接器配置,看看是否存在错误。

安装失败:主机操作系统不受支持或 EOL 不兼容

如果全新安装或自动升级因 glibc 跟踪错误和系统调用阻塞而失败,请按照以下步骤操作:

  1. 验证主机环境是否未运行旧版操作系统,因为旧版操作系统可能缺少现代系统调用钩子。
  2. 在具有最新官方版本的企业 Linux 发行版上重新托管代理环境。
  3. 对于手动安装程序部署,请验证主机是否运行受支持的操作系统,例如 Debian 12 或 Red Hat Enterprise Linux (RHEL) 8.7:

    检查 /etc/os-release:运行以下命令,并查找 NAME= 和 VERSION_ID=:

    cat /etc/os-release
    • 对于 Debian 12:查找 NAME="Debian GNU/Linux" 和 VERSION_ID="12"。
    • 对于 RHEL 8.7:查找 NAME="Red Hat Enterprise Linux" 和 VERSION_ID="8.7"。

    如果您的主机运行的是 RHEL 9 或 10(或更高版本),请使用受支持的容器引擎(Podman 或 Docker)部署远程代理,而不是使用手动安装程序。2.5.0.4 之后版本的 Remote Agent 的预构建容器映像基于 Debian 12,这也解决了 CentOS 7 代理上的 Python wheel (.whl) 二进制文件不兼容问题(例如 TIPCommon 或 SiemplifyAddressProvider 的 ModuleNotFoundError)。如需了解详情,请参阅支持的操作系统。

容器设置会拉取之前的操作层,而不是“最新” build

如果重新运行容器设置命令时,系统不小心拉取了之前的操作层,而不是新发布的软件 build,请运行以下命令来明确拉取最新映像:

  • 对于 Docker:

    docker pull us-docker.pkg.dev/siem-ar-public/images/agent:latest
  • 对于 Podman:

    podman pull us-docker.pkg.dev/siem-ar-public/images/agent:latest

为确保部署在最新软件版本上运行,请务必在运行智能体容器之前拉取最新映像。如果从 docker.io 拉取映像时因速率限制而提示输入凭据,请从公共 Artifact Registry 端点 (us-docker.pkg.dev/siem-ar-public/images/agent:latest) 拉取映像。如需了解所需的防火墙许可清单网域,请参阅网络和防火墙要求。

Docker 代理部署失败

如果 Docker 部署失败,请按以下步骤操作:

  1. 移除 Docker 容器:
    1. 运行以下命令,列出正在运行的容器:

      docker ps 
    2. 运行以下命令以移除失败的容器:

      docker rm -f container_id_or_name
  2. 移除图片:
    1. 运行以下命令以列出映像:

      docker images 
    2. 运行以下命令以移除映像:

      docker rmi image_id_or_name
  3. 移除卷:
    1. 运行以下命令以列出卷:

      docker volume ls
    2. 运行以下命令以移除卷:

      docker volume rm volume_name
  4. 重新部署代理。如需了解详情,请参阅使用 Docker 创建代理。

代理卡在“正在等待代理”状态

如果代理已成功部署,但状态仍为“正在等待代理”,请按照以下步骤排查问题:

  1. 检查宿主机连接性:测试代理宿主机的互联网连接(例如 curl www.google.com 或 ping 8.8.8.8)。如果此测试失败,则问题出在宿主机的互联网连接上。
  2. 检查容器连接性:如果主机测试通过,请使用 docker exec -it container_ID bash 进入容器 shell,然后重新检查连接性。如果容器缺少连接性,请在宿主机上重启 Docker 服务 (service docker restart)。

    1. 运行以下命令:

      docker exec -it bash

    2. 像之前一样再次检查连接。
    3. 如果无法连接,请运行以下命令,从主机(而非容器)重启 Docker 服务:

      service docker restart

    4. 运行以下命令,再次启动容器:

      docker start

  3. 查看容器日志是否存在错误

    如果上一步没有帮助,并且在 Google SecOps 中刷新远程代理页面后,代理状态仍为“正在等待代理”,请重新登录容器并拉取日志。

    1. 在 /var/log/SiemplifyAgent/ 目录中查找日志。
    2. 在日志文件中查找任何错误,以确定根本原因。
  4. 确认您的防火墙允许通过 TCP 端口 443 向 Publisher、区域性 Chronicle API 和 Google Cloud 身份验证端点发送出站 HTTPS 流量。此外,请验证应用层代理或深度数据包检测 (DPI) 防火墙是否会绕过远程代理主机的 SSL/TLS 检查。如需查看所需网域的列表,请参阅网络和防火墙要求。

DNS 网络问题

如果容器遇到 DNS 解析失败或网络连接问题,请将 --network host 添加到 docker run 命令中。使用宿主机网络模式可让容器直接共享宿宿主机的网络栈和 DNS 配置。

Docker 映像加载失败(IP4 转发已停用)

如果您在尝试加载 Google SecOps Docker 映像(系统)或代理时在 CLI 中看到错误,则可能是 IP4 转发功能已停用。请按以下步骤启用该功能并重启代理:

  1. 将以下代码行添加到 /etc/sysctl.conf 文件中:

    net.ipv4.ip_forward=1 请注意,您需要使用文件编辑器(例如 nano,使用方法:yum install nano -y
  2. 运行以下命令以重启网络服务:

    systemctl restart network
  3. 运行以下命令以重启 Docker 服务:

    sudo systemctl restart docker
  4. 运行以下命令,检查容器是否正在运行:

    docker ps
  5. 如果容器未运行,请运行以下命令列出所有容器(包括已停止的容器):

    docker ps -a
  6. 如果容器已列出但已停止,请运行以下命令启动容器:

    docker start container_id_or_name
  7. 如果重启 Docker 和容器后,代理或系统仍未运行,请执行以下操作:
    1. 运行以下命令以停止容器:

      docker stop container_id_or_name
    2. 运行以下命令以删除容器:

      docker rm container_id_or_name
    3. 运行以下命令以删除映像:

      docker rmi image_name
    4. 重新加载图片。

代理关停或重启后出错

运行以下命令以强制启动安装程序代理:
systemctl start supervisord

运行以下命令以强制启动 Docker 代理:
docker start

远程代理任务在强化环境中失败

在 RHEL 8 等经过强化的 Linux 主机上部署远程代理时,代理任务(包括保存或升级集成,或运行连接器和操作)可能会在界面中失败或超时,而代理状态仍为活动。当主机操作系统安全强制执行(例如处于 Enforcing 模式的 SELinux、AppArmor 或端点安全软件)阻止代理在容器内执行的操作系统命令时,就会发生此问题。

如需解决此问题,必须将远程代理从阻止其操作系统命令的主机安全违规处置政策中豁免。请按照以下步骤诊断并解决问题:

  1. 验证宿主机上的 SELinux 是否处于 Enforcing 模式:

    getenforce
    sestatus
    

    如需检查 /var/log/audit/audit.log 中最近被屏蔽的命令或被拒绝的操作,而不返回整个日志文件,请运行以下命令:

    sudo grep -i "denied" /var/log/audit/audit.log | tail -n 50
    

    您还可以检查主机上的端点安全日志,查看与代理容器进程相关的被阻止操作。

  2. 在主机上,将 Remote Agent 排除在屏蔽安全政策之外:

    • 对于容器化部署(Docker 或 Podman),请在首次启动整个远程代理容器时,通过向 docker run 或 podman run 命令添加 --security-opt label=disable(对于 SELinux)或 --security-opt apparmor=unconfined(对于 AppArmor)来豁免该容器。
    • 为远程代理目录(/opt/SiemplifyAgent、/home/siemplify_agent/agent_source 和 /var/log/SiemplifyAgent)和可执行文件(/usr/local/bin/python3.11、/usr/local/bin/pip3 和 /usr/bin/supervisord)配置自定义 SELinux 政策规则、AppArmor 配置文件或主机端点安全豁免,以便操作系统命令不会被屏蔽。
  3. 或者,如果您无法配置有针对性的 SELinux 免检,请在主机的 /etc/selinux/config 中设置 SELINUX=permissive,以便在重启后将 SELinux 永久设置为 Permissive 模式。

    如果无法修改 /etc/selinux/config,或者您需要立即应用更改而无需重新启动,请运行以下命令,将 SELinux 临时切换到 Permissive 模式:

    sudo setenforce 0
    

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