疑難排解常見問題

支援:

本文提供一系列提示和程序,協助您診斷及解決部署和操作 Google Security Operations 遠端代理程式時遇到的常見問題。

金鑰不符問題

如果 Google Security Operations 和遠端代理程式中的私密金鑰不相符,就會發生這個問題。如要解決這個問題,請確認代理資源中的金鑰與 Siemplify agent_db 中的金鑰相符。

遠端連接器故障

如果遠端連接器發生錯誤,請按照下列步驟操作:

  1. 確認代理程式已成功安裝整合執行個體。
  2. 檢查代理程式記錄的錯誤層級,找出連線程序中的任何失敗。
  3. 在本機測試相同的連接器設定,看看是否有錯誤。

安裝失敗:主機 OS 不支援或 EOL 不相容

如果因 glibc 追蹤錯誤和系統呼叫封鎖,導致全新安裝或自動升級失敗,請按照下列步驟操作:

  1. 確認主機環境並非執行舊版作業系統,因為這類系統可能缺少新式系統呼叫掛鉤。
  2. 在企業 Linux 發行版上重新託管代理程式環境,並使用最新官方版本。
  3. 確認主機為支援的平台:Debian 12 (官方基礎)、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"。

容器設定會提取先前的作業層,而非「最新」版本

如果重新執行容器設定指令時,不小心提取了先前的作業層,而非新發布的軟體版本,請執行下列指令,明確提取最新映像檔:

  • 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 代理部署失敗

如果 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 建立代理程式」。

代理程式卡在「等待代理程式」狀態

如果代理已成功部署,但狀態仍為「waiting for agent」,請按照下列步驟排解問題:

  1. 檢查主機連線能力:測試代理程式主體機器的網際網路連線能力 (例如 curl www.google.com 或 ping 8.8.8.8)。如果失敗,表示主機的網際網路連線有問題。
  2. 檢查容器連線能力:如果主機測試通過,請使用 docker exec -it container_ID bash 進入容器殼層,然後重新檢查連線能力。如果容器無法連線,請重新啟動主體機器上的 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. 查看記錄檔中是否有任何錯誤,找出根本原因。

DNS 網路問題

如果容器發生 DNS 解析失敗或網路連線問題,請在 docker run 指令中加入 --network host。使用主機網路模式,容器就能直接共用主機機器的網路堆疊和 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 主機上部署遠端代理時,代理工作 (包括儲存或升級整合,或執行連接器和動作) 可能會失敗或在 UI 中逾時,而代理狀態仍為「Live」。如果主機 OS 強制執行安全性措施 (例如 Enforcing 模式下的 SELinux、AppArmor 或端點安全性軟體),導致容器內的代理程式無法執行 OS 指令,就會發生這個問題。

如要解決這個問題,請將遠端代理程式排除在主機安全性強制執行政策之外,以免 OS 指令遭到封鎖。請按照下列步驟診斷及解決問題:

  1. 確認主機上的 SELinux 是否處於 Enforcing 模式:

    getenforce
    sestatus
    

    如要檢查 /var/log/audit/audit.log 最近是否有遭封鎖的指令或遭拒的操作,而不傳回整個記錄檔,請執行下列指令:

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

    您也可以在主機上檢查端點安全性記錄,查看與代理程式容器程序相關的封鎖作業。

  2. 將遠端代理程式從主機的封鎖安全性政策中排除:

    • 如果是容器化部署作業 (Docker 或 Podman),請在首次啟動遠端代理程式容器時,將 --security-opt label=disable (適用於 SELinux) 或 --security-opt apparmor=unconfined (適用於 AppArmor) 新增至 docker run 或 podman run 指令,藉此排除整個容器。
    • 為遠端代理程式目錄 (/opt/SiemplifyAgent、/home/siemplify_agent/agent_source 和 /var/log/SiemplifyAgent) 和執行檔 (/usr/local/bin/python3.11、/usr/local/bin/pip3 和 /usr/bin/supervisord) 設定自訂 SELinux 政策規則、AppArmor 設定檔或主機端點安全豁免,以免 OS 指令遭到封鎖。
  3. 或者,如果您無法設定指定的 SELinux 豁免,請在主機的 /etc/selinux/config 中設定 SELINUX=permissive,將 SELinux 設為在重新啟動時持續處於 Permissive 模式。

    如果無法修改 /etc/selinux/config,或需要立即套用變更而不重新啟動,請執行下列指令,暫時將 SELinux 切換至 Permissive 模式:

    sudo setenforce 0
    

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。