收集 IBM Mainframe Storage 記錄

支援的國家/地區:

本文說明如何使用 Bindplane 將 IBM Mainframe Storage 記錄收集到 Google Security Operations。

IBM Mainframe Storage 包含 IBM DS8000 系列 (包括 DS8900F 和 DS8880) 和 IBM FlashSystem 系列 (包括 FlashSystem 5000、5200、5300、7200、7300、9200 和 9500)。這些企業儲存系統可為大型主機和開放式系統環境提供高效能的區塊儲存空間,並內建稽核記錄、系統事件、驗證事件和作業訊息的 Syslog 轉送功能。

事前準備

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

  • Google SecOps 執行個體
  • Windows Server 2016 以上版本,或搭載 systemd 的 Linux 主機
  • Bindplane 代理程式與 IBM 儲存系統管理 IP 位址之間的網路連線
  • 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 Bindplane 代理程式需求開啟
  • IBM DS8000 儲存空間管理 GUI 或 IBM FlashSystem 管理 GUI 的管理員層級存取權
  • IBM FlashSystem 的 CLI SSH 存取權 (選用,適用於以 CLI 為基礎的設定)

取得 Google SecOps 擷取驗證檔案

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「收集代理程式」
  3. 下載擷取驗證檔案。將檔案安全地儲存在要安裝 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-agent/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-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. 等待安裝完成。

  4. 執行下列指令,確認安裝成功:

    sudo systemctl status observiq-otel-collector
    

    服務應顯示為有效 (執行中)

其他安裝資源

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

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

找出設定檔

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

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

編輯設定檔

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

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/ibm_storage:
            compression: gzip
            creds_file_path: '<CREDS_FILE_PATH>'
            customer_id: '<CUSTOMER_ID>'
            endpoint: <REGION_ENDPOINT>
            log_type: IBM_MAINFRAME_STORAGE
            raw_log_field: body
            ingestion_labels:
                log_source: ibm_storage
    
    service:
        pipelines:
            logs/ibm_storage_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/ibm_storage
    

設定參數

請替換下列預留位置。

匯出工具設定:

  • <CREDS_FILE_PATH>:擷取驗證檔案的完整路徑: - Linux/etc/bindplane-agent/ingestion-auth.json - WindowsC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
  • <CUSTOMER_ID>:從 Google SecOps 控制台複製的客戶 ID
  • <REGION_ENDPOINT>:區域端點網址: - 美國malachiteingestion-pa.googleapis.com - 歐洲europe-malachiteingestion-pa.googleapis.com - 亞洲asia-southeast1-malachiteingestion-pa.googleapis.com - 如需完整清單,請參閱「區域端點

  • 設定範例 (透過 UDP Syslog 的 IBM FlashSystem)

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/ibm_storage:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: IBM_MAINFRAME_STORAGE
            raw_log_field: body
            ingestion_labels:
                log_source: ibm_storage
    
    service:
        pipelines:
            logs/ibm_storage_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/ibm_storage
    
  • 設定範例 (透過 TCP syslog 的 IBM DS8000)

    receivers:
        tcplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/ibm_storage:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: IBM_MAINFRAME_STORAGE
            raw_log_field: body
            ingestion_labels:
                log_source: ibm_ds8000
    
    service:
        pipelines:
            logs/ibm_storage_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/ibm_storage
    

儲存設定檔

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

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

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

如要在 Linux 中重新啟動 Bindplane 代理程式,請執行下列步驟:

  1. 執行下列指令:

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

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

    sudo journalctl -u observiq-otel-collector -f
    

如要在 Windows 中重新啟動 Bindplane 代理程式,請按照下列步驟操作:

  1. 您可以選擇下列其中一個選項:

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

      net stop observiq-otel-collector && net start observiq-otel-collector

    • 服務控制台:

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

    sc query observiq-otel-collector

  3. 檢查記錄中是否有錯誤:

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

設定 IBM Mainframe Storage 系統記錄檔轉送

在特定 IBM 儲存系統上設定系統記錄檔轉送功能。請按照產品系列的說明操作。

選項 A:在 IBM DS8000 系列 (DS8900F、DS8880) 上設定系統記錄

IBM DS8000 儲存空間管理 GUI 支援將稽核記錄、GUI 事件資訊、登入/登出事件和指令稽核追蹤記錄轉送至遠端系統記錄伺服器。DS8000 最多支援八個系統記錄檔目標伺服器。根據預設,DS8000 系統記錄檔會使用通訊埠 514 的 TCP 通訊協定。

  1. 使用具備「管理員」角色的帳戶,登入 DS8000 儲存空間管理 GUI
  2. 依序前往「設定」>「通知」
  3. 在「Syslog」頁面中,按一下「Add Syslog Server」(新增系統記錄伺服器)
  4. 在「新增系統記錄伺服器」視窗中,提供下列設定詳細資料:
    • IP 位址:輸入 Bindplane 代理程式主機的 IP 位址 (例如 192.168.1.100)。
    • 「Port」(通訊埠):輸入 514
  5. 按一下 [確定]

選項 B:在 IBM FlashSystem (5000、5200、5300、7200、7300、9200、9500) 上設定系統記錄檔

IBM Storage Virtualize 基礎的 IBM FlashSystem 系統支援透過管理 GUI 和 CLI 轉送系統記錄。系統最多支援六部系統記錄伺服器,並可使用 UDP、TCP 或 TLS 通訊協定傳輸訊息。

使用管理 GUI

  1. 登入 IBM FlashSystem 管理 GUI
  2. 依序前往「設定」>「通知」>「系統記錄」
  3. 按一下「新增 Syslog 伺服器」,開啟「新增 Syslog 伺服器」視窗。
  4. 選取通訊協定:
    • UDP:減少系統和網路負擔。預設通訊埠為 514
    • TCP:提供可靠的傳輸服務。預設通訊埠為 6514
    • TLS:使用 TLS 傳送加密的系統記錄訊息。
  5. 輸入 Bindplane 代理程式主機的 IP 位址和通訊埠號碼。
  6. 按一下「新增」。

使用 CLI (SSH)

  1. 使用管理員帳戶,透過 SSH 連線至 IBM FlashSystem 系統。
  2. 執行下列指令,建立啟用所有記錄類型的系統記錄伺服器:

    mksyslogserver -name chronicle -ip <BINDPLANE_IP> -protocol udp -port 514 -facility 4 -error on -warning on -info on -audit on -login on
    

    <BINDPLANE_IP> 替換為 Bindplane 代理程式主機的 IP 位址。

  3. 執行下列指令,確認是否已建立系統記錄伺服器:

    lssyslogserver
    
  4. 輸出內容會顯示已設定的系統記錄伺服器,以及 ID、名稱、IP 位址、通訊埠、通訊協定和通知設定。

常見設定的 CLI 範例

  • 以擴充格式建立系統記錄檔伺服器,並在通訊埠 514 上使用 UDP,同時記錄稽核和驗證資訊:

    mksyslogserver -name chronicle -ip 192.168.1.100 -facility 4 -protocol udp -port 514 -error on -warning on -info on -audit on -login on
    
  • 在通訊埠 6514 上使用 TCP 建立系統記錄檔伺服器:

    mksyslogserver -name chronicle -ip 192.168.1.100 -facility 4 -protocol tcp -port 6514 -error on -warning on -info on -audit on -login on
    
  • 修改現有的系統記錄伺服器,啟用稽核記錄:

    chsyslogserver -audit on <syslog_server_id>
    
  • 移除系統記錄伺服器:

    rmsyslogserver <syslog_server_id>
    

FlashSystem 系統記錄通知類型

下表說明 IBM FlashSystem 上可用的系統記錄通知類型:

通知類型 CLI 參數 預設 說明
錯誤 -error on|off 開啟 系統發生嚴重問題
警告 -warning on|off 開啟 問題或非預期狀況
資訊 -info on|off 開啟 預期作業完成
稽核記錄 -audit on|off 關閉 CLI 或管理 GUI 作業
驗證記錄 -login on|off 關閉 驗證成功和失敗的嘗試

UDM 對應表

記錄欄位 UDM 對應 邏輯
device_vendor about.asset.asset_id 由 device_vendor、device_product 和 deviceExternalId 串連而成,格式為「%{device_vendor}.%{device_product}:%{deviceExternalId}」
device_product about.asset.asset_id
deviceExternalId about.asset.asset_id
IPv6_Address about.ip 直接複製值
dvcmac about.mac 如果 MAC 有效,則為 dvcmac 的值;如果已擷取,則為 mac_address 的值
mac_address about.mac
fname about.file.full_path 如果不是「不適用」,則直接複製值
fileHash about.file.full_path 如果不是雜湊,則直接複製值
fileHash about.file.sha256 如果符合雜湊模式,則直接複製值
_hash about.file.sha256 直接複製值
fsize about.file.size 已轉換為 uinteger
File_name about.file.full_path 如果 File_name 不為空白,則為 File_name 的值,否則為 Object、Objekt 或 Infected_Resource
物件 about.file.full_path
Objekt about.file.full_path
Infected_Resource about.file.full_path
關於 關於 從「關於」頁面合併
additional_cs1 additional.fields 從各種 additional_* 欄位合併而來,例如 additional_cs1、additional_cs2 等。
additional_cs2 additional.fields
cs1 additional.fields cs1Label 中的鍵,cs1 中的值
cs1Label additional.fields
cs2 additional.fields cs2Label 中的鍵,cs2 中的值
cs2Label additional.fields
cs3 additional.fields cs3Label 中的鍵,以及 cs3 中的值 (如不為空)
cs3Label additional.fields
cs4 additional.fields cs4Label 中的鍵,gsub 後的 cs4 中的值
cs4Label additional.fields
cs5 additional.fields cs5Label 中的鍵,如果不是「NA」,則為 cs5 中的值
cs5Label additional.fields
cs6 additional.fields cs6Label 中的鍵,以及 cs6 中的值 (如不為空)
cs6Label additional.fields
cs7 additional.fields cs7Label 中的鍵,如果 cs7 不為空白,則為 cs7 中的值
cs7Label additional.fields
flexString1 additional.fields flexString1Label 的鍵,flexString1 的值
flexString1Label additional.fields
cn1 additional.fields cn1Label 的鍵,cn1 的值
cn1Label additional.fields
cn2 additional.fields cn2Label 中的鍵,cn2 中的值
cn2Label additional.fields
cn3 additional.fields cn3Label 中的鍵,以及 cn3 中的值 (如不為空白)
cn3Label additional.fields
cfp1 additional.fields cfp1Label 中的鍵,cfp1 中的值
cfp1Label additional.fields
cfp2 additional.fields cfp2Label 中的鍵,cfp2 中的值
cfp2Label additional.fields
cfp3 additional.fields cfp3Label 中的鍵,cfp3 中的值
cfp3Label additional.fields
cfp4 additional.fields cfp4Label 中的鍵,cfp4 中的值
cfp4Label additional.fields
eventId additional.fields 鍵「eventId」,值來自 eventId
devicePayloadId additional.fields 「devicePayloadId」鍵,值來自 devicePayloadId
fname additional.fields 索引鍵「fname」,值來自 fname (如果不是「N/A」)
cs3Label additional.fields 鍵「cs3Label」,如果 cs3 為空,則值來自 cs3Label
cs4Label additional.fields 鍵「cs4Label」,如果 cs4 為空,則值來自 cs4Label
cs5 additional.fields 鍵「cs5 Label」,值來自 cs5 (如果 cs5Label 為空)
principal_asset_hostname additional.fields 索引鍵「asset_host_name」,如果不同,則值來自 principal_asset_hostname
target_asset_hostname additional.fields 「device_host_name」鍵,如果不同,則為 target_asset_hostname 的值
ssh_key additional.fields 「ssh_key」鍵,如果不是雜湊,則為 ssh_key 的值
註解 additional.fields 鍵為「Comment」,值來自 try_message
動作名稱 additional.fields 索引鍵「動作名稱」,值來自 action_name
錯誤代碼 additional.fields 索引鍵「錯誤代碼」,值來自 error_code
rsyslog 模組 additional.fields 「rsyslog Module」鍵,值來自 module 或 module_name
更多資訊 additional.fields 「更多資訊」鍵,值來自 try_message
動作類型 additional.fields 鍵為「動作類型」,值來自 action_type
已接收 metadata.collected_timestamp 使用日期比對從「Received」或「Mottatt」剖析
Mottatt metadata.collected_timestamp
rt metadata.event_timestamp 從 rt 剖析,使用日期比對和時區
file_full_path metadata.event_type 如果 file_full_path 不為空白,則設為「PROCESS_UNCATEGORIZED」;如果 event_name 屬於特定值,則設為「SCAN_UNCATEGORIZED」;如果 duser 不為空白,則設為「USER_UNCATEGORIZED」;如果 principal_hostname_found 和 target_ip_found 均為 true,則設為「NETWORK_CONNECTION」;如果 principal_hostname_found 或 src 不為空白,則設為「STATUS_UPDATE」;否則設為「GENERIC_EVENT」
event_name metadata.event_type
duser metadata.event_type
principal_hostname_found metadata.event_type
device_product metadata.product_name 直接複製值
device_vendor metadata.vendor_name 直接複製值
device_version metadata.product_version 直接複製值
externalId metadata.product_log_id 直接複製值
event_name metadata.product_event_type 如果兩者皆存在,則串連為「[%{device_event_class_id}] - %{event_name}」,否則為 device_event_class_id 或 event_name
device_event_class_id metadata.product_event_type
app_protocol_src network.application_protocol 根據 app_protocol_src 比對預先定義的值,例如「22」對應「SSH」、「25」對應「SMTP」等。
deviceDirection network.direction 如果 deviceDirection ==「0」,則設為「INBOUND」;如果為「1」,則設為「OUTBOUND」
network.received_bytes 如果 >0,則轉換為 uinteger
out network.sent_bytes 如果 >0,則轉換為 uinteger
proto network.ip_protocol 根據 protocol_number_src 相符號碼設定,例如 1 代表「ICMP」,6 代表「TCP」等。
destinationTranslatedPort network.target.nat_port 如果不是 0,則會轉換為整數
sourceTranslatedPort network.principal.nat_port 如果不是 0,則會轉換為整數
dpt network.target.port 如果不是 0 且有效,則會轉換為整數
spt network.principal.port 如果不是 0 和「{srcPort}」,則會轉換為整數
要求 network.target.url 直接複製值
requestMethod network.http.method 大寫
requestClientApplication network.http.user_agent 直接複製值
principal_hostname principal.asset.hostname 如果 principal_hostname 不為空白,且與 principal_asset_hostname 不同,則為 principal_hostname 的值,否則設為 principal_hostname
principal_asset_hostname principal.asset.hostname
Device_name principal.hostname 如果 Device_name 不為空白,則為該值,否則為 Enhetsnavn
Enhetsnavn principal.hostname
shost principal.hostname 如果不是 IP,則直接複製值
shost principal.ip 如果符合 IP 模式,則會擷取為 IP
sourceTranslatedAddress principal.nat_ip 如果開頭為數字,則直接複製值
smac principal.mac gsub 後擷取為 MAC
spid principal.process.pid 直接複製值
sproc principal.process.command_line 直接複製值
suser principal.user.user_display_name 如果不是以「{」開頭,則直接複製值
suid principal.user.userid 直接複製值
spriv principal.user.attribute.roles.name 直接複製值
sntdom principal.administrative_domain 直接複製值
sourceServiceName principal.application 直接複製值
Group_name principal.group.group_display_name 如果 Group_name 不為空白,則為 Group_name 的值,否則為 Gruppenavn
Gruppenavn principal.group.group_display_name
動作 principal.user.user_authentication_status 如果動作在接受的值中,請設為「ACTIVE」;如果動作是中斷連線,請設為「NO_ACTIVE_CREDENTIALS」;如果動作是已中斷連線,請設為「SUSPENDED」
act security_result.action 如果動作符合允許條件或結果相符,請設為「ALLOW」;如果動作遭拒或遭到封鎖,請設為「BLOCK」;如果結果失敗,請設為「FAIL」
結果 security_result.action
act security_result.action_details 直接複製值
Action_Taken security_result.action_details 直接複製值
categoryOutcome security_result.category_details 直接複製值
嚴重性 security_result.severity 如果值為 [0,1,2,3,"LOW"],則設為「LOW」;如果值為 [4,5,6,"MEDIUM","SUBSTANTIAL","INFO"],則設為「MEDIUM」;如果值為 [7,8,"HIGH","SEVERE"],則設為「HIGH」;如果值為 [9,10,"VERY-HIGH","CRITICAL"],則設為「CRITICAL」
間諜軟體 security_result.threat_name 如果間諜軟體的值不為空,則為該值;否則為 Virus_Malware_Name,否則為 Unknown_Threat
Virus_Malware_Name security_result.threat_name
Unknown_Threat security_result.threat_name
類型 security_result.description 如果「類型」不為空白,則為「類型」的值,否則為「掃描類型」
Scan_Type security_result.description
msg_data_2 security_result.description 如果 msg_data_2 不為空白,則為 msg_data_2 的值,否則為 msg
msg security_result.description
原因 security_result.summary 如果不是空白或空格,則直接複製值
appcategory security_result.summary 直接複製值
結果 security_result.summary 直接複製值
mwProfile security_result.rule_name 直接複製值
作業 security_result.detection_fields 「Operation」鍵,值來自 Operation 或 Operasjon
Operasjon security_result.detection_fields
權限 security_result.detection_fields 「Permission」鍵,值來自 Permission 或 Tillatelse
Tillatelse security_result.detection_fields
Infection_Channel security_result.detection_fields 「感染管道」鍵,值來自 Infection_Channel
Spyware_Grayware_Type security_result.detection_fields 鍵:「Spyware/Grayware_Type」,值來自 Spyware_Grayware_Type
Threat_Probability security_result.detection_fields 「Threat_Probability」鍵,值來自 Threat_Probability
Resource_Type security_result.detection_fields 鍵「Resource_Type」,值來自 Resource_Type
security_result security_result 從 security_result 合併
target_hostname target.asset.hostname 如果 target_hostname 不為空白,且與 target_asset_hostname 不同,則為 target_hostname 的值,否則設為 target_hostname
target_asset_hostname target.asset.hostname
temp_dhost target.hostname 如果不是 IP,則直接複製值
temp_dhost_ip target.hostname 如果已擷取 IP,請設為空白
temp_dhost_ip target.ip 如果已擷取值,則直接複製
temp_dhost_ip target.ip temp_dhost_ip 或 IPv6_Address 的值
IPv6_Address target.ip
temp_dhost_ip target.asset.ip 如果已擷取值,則直接複製
destinationTranslatedAddress target.nat_ip 擷取為 IP
dmac target.mac gsub 後擷取為 MAC
dpid target.process.pid 直接複製值
dproc target.process.command_line 直接複製值
temp_duser target.user.user_display_name 直接複製值
temp_duid target.user.userid 使用 grok 擷取,已複製值
使用者 target.user.userid 如果使用者提供值,則使用該值,否則使用 Bruker
Bruker target.user.userid
CustomerName target.user.user_display_name 直接在 gsub 後複製值
dpriv target.user.attribute.roles.name 直接複製值
dntdom target.administrative_domain 直接複製值
destinationServiceName target.application 直接複製值
File_name target.process.file.full_path 如果 File_name 不為空白,則為 File_name 的值,否則為 Object、Objekt 或 Infected_Resource
物件 target.process.file.full_path
Objekt target.process.file.full_path
Infected_Resource target.process.file.full_path
oldFileSize target.src.file.size 如果不是 0,則轉換為 uinteger
oldFilePath target.src.file.full_path 直接複製值
oldFilePermission target.src.resource.attribute.permissions.name 直接複製值
filePermission target.resource.attribute.permissions.name 直接複製值
resource_Type_label target.resource.attribute.labels 已與「Resource_Type」鍵合併,值來自 Resource_Type
metadata.vendor_name metadata.vendor_name 設為「IBM」
metadata.product_name metadata.product_name 設為「MAINFRAME STORAGE」
cs3Label", and "cs4Label additional.fields 從變更記錄對應

變更記錄

查看這個剖析器的變更記錄

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