收集 ManageEngine ADManager Plus 記錄

支援的國家/地區:

本文說明如何使用 Bindplane 代理程式,將 ManageEngine ADManager Plus 記錄檔擷取至 Google Security Operations。

ManageEngine ADManager Plus 提供網頁版解決方案,可簡化 AD 管理作業,包括建立及修改使用者、以角色為準的安全性,以及詳細報表。ADManager Plus 與 Splunk 和系統記錄檔伺服器整合後,機構就能轉送在 ADManager Plus 中執行的所有 Active Directory、Microsoft 365 和 Google Workspace 管理動作記錄。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體
  • Windows Server 2016 以上版本,或搭載 systemd 的 Linux 主機
  • Bindplane 代理程式與 ManageEngine ADManager Plus 之間的網路連線
  • 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 Bindplane 代理程式需求開啟
  • ManageEngine ADManager Plus 管理控制台的特殊存取權

取得 Google SecOps 擷取驗證檔案

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「收集代理程式」
  3. 按一下「下載」即可下載「擷取驗證檔案」
  4. 將檔案安全地儲存在要安裝 Bindplane 代理程式的系統中。

取得 Google SecOps 客戶 ID

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「設定檔」
  3. 複製並儲存「機構詳細資料」專區中的客戶 ID

安裝 Bindplane 代理程式

請按照下列操作說明,在 Windows 或 Linux 作業系統上安裝 Bindplane 代理程式。

Windows 安裝

  1. 以管理員身分開啟「命令提示字元」或「PowerShell」
  2. 執行下列指令:

    msiexec /i "https://github.com/observIQ/bindplane-otel-collector/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. 等待安裝完成。

  4. 執行下列指令來驗證安裝:

    sc query observiq-otel-collector
    

服務應顯示為「RUNNING」(執行中)

安裝 Linux

  1. 開啟具備根層級或 sudo 權限的終端機。
  2. 執行下列指令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-otel-collector/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. 等待安裝完成。

  4. 執行下列指令來驗證安裝:

    sudo systemctl status observiq-otel-collector
    

服務應顯示為啟用 (執行中)

其他安裝資源

如需其他安裝選項和疑難排解資訊,請參閱 Bindplane 代理程式安裝指南

設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps

找出設定檔

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

編輯設定檔

  1. config.yaml 的所有內容替換為下列設定:

    receivers:
      tcplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/admanager_plus:
        compression: gzip
        creds_file_path: '<CREDS_FILE_PATH>'
        customer_id: '<CUSTOMER_ID>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: ADMANAGER_PLUS
        raw_log_field: body
        ingestion_labels:
          log_source: admanager_plus
    
    service:
      pipelines:
        logs/admanager_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/admanager_plus
    
  2. 請替換下列預留位置:

    • 接收器設定:

      • 接收器會使用 tcplog 在 TCP 通訊埠 514 上接收系統記錄檔資料。
      • listen_address:設為 0.0.0.0:514,即可在通訊埠 514 上監聽所有介面。
    • 匯出工具設定:

      • <CREDS_FILE_PATH>:擷取驗證檔案的完整路徑:
        • Linux/opt/observiq-otel-collector/ingestion-auth.json
        • WindowsC:\\Program Files\\observIQ OpenTelemetry Collector\\ingestion-auth.json
      • <CUSTOMER_ID>:上一個步驟中的客戶 ID。
      • endpoint:區域端點網址:
        • 美國malachiteingestion-pa.googleapis.com
        • 歐洲europe-malachiteingestion-pa.googleapis.com
        • 亞洲asia-southeast1-malachiteingestion-pa.googleapis.com
        • 如需完整清單,請參閱「區域端點」。
      • log_type:設為 Chronicle 中顯示的確切 ADMANAGER_PLUS
      • ingestion_labels:YAML 格式的選用標籤。

儲存設定檔

編輯完成後,請儲存檔案:

  • Linux:依序按下 Ctrl+OEnterCtrl+X
  • Windows:依序點選「檔案」>「儲存」

重新啟動 Bindplane 代理程式,以套用變更

Linux

  1. 如要在 Linux 中重新啟動 Bindplane 代理程式,請執行下列指令:

    sudo systemctl restart observiq-otel-collector
    
  2. 確認服務正在執行:

    sudo systemctl status observiq-otel-collector
    
  3. 檢查記錄中是否有錯誤:

    sudo journalctl -u observiq-otel-collector -f
    

Windows

  1. 如要在 Windows 中重新啟動 Bindplane 代理程式,請選擇下列任一做法:

    • 以管理員身分使用命令提示字元或 PowerShell:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • 使用服務控制台:

      1. 按下 Win+R 鍵,輸入 services.msc,然後按下 Enter 鍵。
      2. 找出 observIQ Distro for OpenTelemetry Collector
      3. 按一下滑鼠右鍵,然後選取「重新啟動」
  2. 確認服務正在執行:

    sc query observiq-otel-collector
    
  3. 檢查記錄中是否有錯誤:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

設定 ManageEngine ADManager Plus 系統記錄轉送

  1. 登入 ADManager Plus。
  2. 前往「管理」分頁。
  3. 在「系統設定」下方,按一下「整合」
  4. 在「記錄轉送」下方,按一下「系統記錄」

  5. 設定下列欄位:

    • Syslog 伺服器:輸入 Syslog 伺服器名稱。輸入 Bindplane 代理程式主機的 IP 位址或主機名稱。
    • 「Port」(通訊埠):輸入通訊埠編號。輸入 514
    • 通訊協定:選擇適合轉送記錄的通訊協定,例如 TCP 或 UDP。選取「TCP」TCP
    • 系統記錄標準:選取所需的系統記錄訊息格式,包括 RFC 3164、RFC 5424 或 RawLog。選取「RFC 5424」 (建議選項)。
    • 資料格式:輸入資料格式。視環境需求設定資料格式。
  6. 按一下「儲存」,儲存設定。

設定完成後,ADManager Plus 會開始將管理動作的記錄轉送至 Bindplane 代理程式,然後由該代理程式將記錄傳送至 Google SecOps。

UDM 對應表

記錄欄位 UDM 對應 邏輯
ipPhone event.idm.read_only_udm.additional.fields 如果 ipPhone != "",則會合併為標籤,並使用「ipPhone」鍵和 ipPhone 中的值
l event.idm.read_only_udm.additional.fields 如果 l != "",則合併為索引鍵為「l」的標籤,並從 l 取值
lockoutTime event.idm.read_only_udm.additional.fields 如果 lockoutTime != "",則合併為索引鍵為「lockoutTime」的標籤,並從 lockoutTime 取得值
從以下位置移動 event.idm.read_only_udm.additional.fields 如果 Move_From != "",則合併為標籤,並以「Move From」為鍵,以 Move_From 為值
移至 event.idm.read_only_udm.additional.fields 如果 Move_To !=「」,則合併為標籤,並以「移至」為鍵,以 Move_To 為值
msg event.idm.read_only_udm.additional.fields 如果 msg != "",則合併為鍵為「member」且值來自 msg 的標籤
sn event.idm.read_only_udm.additional.fields 如果 sn != "",則合併為鍵為「sn」且值來自 sn 的標籤
st event.idm.read_only_udm.additional.fields 如果 st != "",則合併為索引鍵為「st」且值來自 st 的標籤
範本名稱: event.idm.read_only_udm.additional.fields 如果 Template_Name != "",則合併為標籤,索引鍵為「範本名稱」,值來自 Template_Name
狀態 event.idm.read_only_udm.metadata.description 如果狀態 != "",則取自狀態的值
時間 event.idm.read_only_udm.metadata.event_timestamp 如果時間 != "",則從時間轉換為時間戳記格式
event.idm.read_only_udm.metadata.event_type 衍生:if has_principal_user == "true" then "USER_UNCATEGORIZED"; else if has_principal == "true" then "STATUS_UPDATE"; else "GENERIC_EVENT"
TechnicianName event.idm.read_only_udm.metadata.product_event_type 如果 TechnicianName != "",則取自 TechnicianName 的值
event.idm.read_only_udm.metadata.product_name 設為「ADMANAGER_PLUS」
event.idm.read_only_udm.metadata.vendor_name 設為「ADMANAGER_PLUS」
網域名稱 event.idm.read_only_udm.principal.administrative_domain 如果 Domain_Name != "",則取自 Domain_Name 的值
主機名稱 event.idm.read_only_udm.principal.asset.hostname 如果主機名稱 != "",則取自主機名稱的值
郵件 event.idm.read_only_udm.principal.email 如果郵件 !=「」,則取自郵件的值
主機名稱 event.idm.read_only_udm.principal.hostname 如果主機名稱 != "",則取自主機名稱的值
co event.idm.read_only_udm.principal.location.city 如果 co != "",則取自 co 的值
工作 event.idm.read_only_udm.principal.resource.name 如果 Task != "",則取自 Task 的值
wWWHomePage event.idm.read_only_udm.principal.url 如果 wWWHomePage != "",則取自 wWWHomePage 的值
密碼類型 event.idm.read_only_udm.principal.user.attribute.labels 如果 Password_Type !=「」,則會合併為標籤,並以「Password Type」做為鍵,以 Password_Type 做為值
國家/地區代碼 event.idm.read_only_udm.principal.user.attribute.labels 如果 countryCode != "",則合併為標籤,索引鍵為「countryCode」,值來自 countryCode
密碼 event.idm.read_only_udm.principal.user.attribute.labels 如果密碼 !=「」,則合併為標籤,索引鍵為「password」,值來自密碼
postalCode event.idm.read_only_udm.principal.user.attribute.labels 如果 postalCode != "",則會合併為標籤,並使用「postalCode」鍵和來自 postalCode 的值
primaryGroupID event.idm.read_only_udm.principal.user.attribute.labels 如果 primaryGroupID != "",則會合併為標籤,並以「primaryGroupID」做為鍵,以 primaryGroupID 做為值
userAccountControl event.idm.read_only_udm.principal.user.attribute.labels 如果 userAccountControl != "",則合併為標籤,並以「userAccountControl」做為鍵,以 userAccountControl 做為值
userPrincipalName event.idm.read_only_udm.principal.user.attribute.labels 如果 userPrincipalName != "",則會合併為索引鍵為「userPrincipalName」的標籤,並以 userPrincipalName 做為值
company event.idm.read_only_udm.principal.user.company_name 如果公司 !=「」,則取自公司的值
部門 event.idm.read_only_udm.principal.user.department 如果部門 != "",則與部門合併
givenName event.idm.read_only_udm.principal.user.first_name 如果 givenName != "",則取自 givenName 的值
physicalDeliveryOfficeName event.idm.read_only_udm.principal.user.office_address.name 如果 physicalDeliveryOfficeName != "",則取自 physicalDeliveryOfficeName 的值
streetAddress event.idm.read_only_udm.principal.user.personal_address.name 如果 streetAddress != "",則取自 streetAddress 的值
homePhone event.idm.read_only_udm.principal.user.phone_numbers 如果 homePhone != "",則與 homePhone 合併
使用者名稱 event.idm.read_only_udm.principal.user.user_display_name 如果 User_Name != "",則取自 User_Name;否則取自 Object_Name (如果 Object_Name != "")
sAMAccountName event.idm.read_only_udm.principal.user.userid 如果 sAMAccountName !=「」,則取自 sAMAccountName 的值
行動 event.idm.read_only_udm.security_result.action_details 如果 ACTION !=「」,則取自 ACTION 的值
說明 event.idm.read_only_udm.security_result.description 如果說明 !=「」,則取自說明的值
容器名稱 event.idm.read_only_udm.security_result.detection_fields 衍生自 container_Name grok:合併為標籤,鍵為「Container_Name_DC_value1」,值來自 dc_label_1 (如果 dc_label_1 != "")
容器名稱 event.idm.read_only_udm.security_result.detection_fields 衍生自 container_Name grok:合併為標籤,鍵為「Container_Name_DC_value2」,值來自 dc_label_2 (如果 dc_label_2 != "")
容器名稱 event.idm.read_only_udm.security_result.detection_fields 衍生自 container_Name grok:合併為標籤,鍵為「Container_Name_OU_value1」,值來自 ou_label_1 (如果 ou_label_1 != "")
容器名稱 event.idm.read_only_udm.security_result.detection_fields 衍生自 container_Name grok:合併為標籤,鍵為「Container_Name_OU_value2」,值來自 ou_label_2 (如果 ou_label_2 != "")
容器名稱 event.idm.read_only_udm.security_result.detection_fields 衍生自 container_Name grok:合併為標籤,鍵為「Container_Name_OU_value3」,值來自 ou_label_3 (如果 ou_label_3 != "")
主要群組 event.idm.read_only_udm.security_result.detection_fields 衍生自 Primary_Group grok:合併為標籤,鍵為「Primary_Group_CN_value1」,值來自 cn_label_1 (如果 cn_label_1 != "")
主要群組 event.idm.read_only_udm.security_result.detection_fields 衍生自 Primary_Group grok:合併為標籤,鍵為「Primary_Group_CN_value2」,值來自 cn_label_2 (如果 cn_label_2 != "")
主要群組 event.idm.read_only_udm.security_result.detection_fields 衍生自 Primary_Group grok:合併為標籤,鍵為「Primary_Group_DC_value1」,值來自 primary_dc_label_1 (如果 primary_dc_label_1 != "")
主要群組 event.idm.read_only_udm.security_result.detection_fields 衍生自 Primary_Group grok:合併為標籤,鍵為「Primary_Group_DC_value2」,值來自 primary_dc_label_2 (如果 primary_dc_label_2 != "")
accountExpires event.idm.read_only_udm.security_result.detection_fields 如果 accountExpires !=「」,則會合併為標籤,並以「accountExpires」做為鍵,以 accountExpires 做為值
管理員 event.idm.read_only_udm.security_result.detection_fields 衍生自管理員 grok:如果 manager_cn_value1 != "",則合併為標籤,鍵為「manager_cn_value1」,值來自 manager_cn_value1
管理員 event.idm.read_only_udm.security_result.detection_fields 衍生自管理員 grok:合併為標籤,鍵為「manager_dc_value1」,值來自 manager_dc_value1 (如果 manager_dc_value1 != "")
管理員 event.idm.read_only_udm.security_result.detection_fields 衍生自管理員 grok:合併為標籤,鍵為「manager_dc_value2」,值來自 manager_dc_value2 (如果 manager_dc_value2 != "")
管理員 event.idm.read_only_udm.security_result.detection_fields 衍生自管理員 grok:合併為標籤,鍵為「manager_ou_value1」,值來自 manager_ou_value1 (如果 manager_ou_value1 != "")
管理員 event.idm.read_only_udm.security_result.detection_fields 衍生自管理員 grok:合併為標籤,鍵為「manager_ou_value2」,值來自 manager_ou_value2 (如果 manager_ou_value2 != "")
管理員 event.idm.read_only_udm.security_result.detection_fields 衍生自管理員 grok:合併為標籤,鍵為「manager_ou_value3」,值來自 manager_ou_value3 (如果 manager_ou_value3 != "")
pwdLastSet event.idm.read_only_udm.security_result.detection_fields 如果 pwdLastSet != "",則會合併為標籤,並使用鍵「pwdLastSet」和來自 pwdLastSet 的值
ModuleName event.idm.read_only_udm.target.resource.name 如果 ModuleName != "",則取自 ModuleName 的值

需要其他協助嗎?向社群成員和 Google SecOps 專業人員尋求答案。