Linux auditd と AIX システムログを収集する

以下でサポートされています。

このパーサーは、SYSLOG 形式の Linux 監査ログを処理し、UDM に変換します。JSON 形式とプレーンテキストの両方のログ メッセージを処理し、grok、XML 解析、JSON 解析の手法を使用してフィールドを抽出し、イベントタイプに基づいて適切な UDM フィールドにマッピングします。このパーサーは、AIX システムの特定の監査ログ形式も処理し、security_result や中間詳細などの追加フィールドを使用して UDM を拡充します。

始める前に

  • Google Security Operations インスタンスがあることを確認します。
  • Auditd ホストに対する root 権限があることを確認します。
  • Auditd ホストに rsyslog がインストールされていることを確認します。
  • Windows 2012 SP2 以降または systemd を搭載した Linux ホストがあることを確認します。
  • プロキシの背後で実行している場合は、ファイアウォールのポートが開いていることを確認します。

Google SecOps 取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイルをダウンロードします。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細] セクションから [お客様 ID] をコピーして保存します。

BindPlane Agent をインストールする

  1. Windows へのインストールの場合は、次のスクリプトを実行します。
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Linux へのインストールの場合は、次のスクリプトを実行します。
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. その他のインストール オプションについては、こちらのインストール ガイドをご覧ください。

Syslog を取り込んで Google SecOps に送信するように BindPlane エージェントを構成する

  1. BindPlane がインストールされているマシンにアクセスします。
  2. config.yaml ファイルを次のように編集します。

    receivers:
      tcplog:
        # Replace the below port <54525> and IP <0.0.0.0> with your specific values
        listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: auditd
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 次のコマンドを使用して BindPlane エージェントを再起動して、変更を適用します。sudo systemctl bindplane restart

Auditd から Syslog をエクスポートする

  1. 監査ログをエクスポートするマシンにアクセスします。
  2. Auditd 構成ファイル(通常は /etc/audit/auditd.conf にあります)を開きます。

    sudo vi /etc/audit/auditd.conf
    
  3. auditd を構成するには、次の行を見つけるか追加します。

    active = yes
    output = syslog
    log_format = ENRICHED
    dispatcher = /sbin/audispd
    

省略可: Syslog 施設を指定します。auditd.conf で次の行を追加または変更します。

```none
syslog_facility = LOG_AUTHPRIV
```
  1. audispd 構成ファイル(通常は /etc/audisp/plugins.d/syslog.conf にあります)を開きます。

    sudo vi /etc/audisp/plugins.d/syslog.conf
    
  2. audispd を構成するには、次の行を見つけるか追加します。

    active = yes
    direction = out
    path = builtin_syslog
    type = builtin
    args = LOG_INFO
    format = string
    
  3. Auditd サービスを再起動して変更を適用します。

    sudo systemctl restart auditd
    
  4. tail などのツールを使用して syslog をモニタリングし、Auditd ログが送信されていることを確認します。

    tail -f /var/log/syslog | grep auditd # Follow syslog and filter for auditd messages (path may vary depending on your system)
    
  5. rsyslog.conf を編集するか、カスタム構成を作成します。

    sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
    
  6. ログを転送するルールを追加します。

    • if $programname == 'auditd' then @@<BindPlane_Agent>:<BindPlane_Port>
    • UDP の場合は @、TCP の場合は @@ を使用します。
    • <BindPlane_Agent> は、サーバーの IP またはホスト名に置き換えます。
    • <BindPlane_Port> は、サーバーのポートに置き換えます。
  7. rsyslog サービスを再起動して変更を適用します。

    sudo systemctl restart rsyslog
    

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
acct target.user.user_display_name 元のログの acct の値は、UDM の target.user.user_display_name フィールドにマッピングされます。イベントに関連付けられているアカウントを表します。
addr principal.ip 元のログの addr の値は、UDM の principal.ip フィールドにマッピングされます。これは、イベントに関連するプリンシパルの IP アドレスを表します。
additional.fields additional.fields 解析された Key-Value ペアまたはラベルの追加フィールドが、UDM の additional.fields 配列に追加されます。
agent.googleapis.com/log_file_path (マッピングされていません) このラベルは一部のログに存在しますが、UDM の IDM オブジェクトにはマッピングされていません。
algo (この例では使用していません) このフィールドはパーサーと一部の未加工ログに存在しますが、提供された例では使用されておらず、最終的な UDM には表示されません。
application principal.application ログタイプに応じて、元のログの terminal フィールドまたは exe などの他のフィールドから派生します。関連するアプリケーションを表します。
arch security_result.about.platform_version 元のログの arch フィールドのアーキテクチャは security_result.about.platform_version にマッピングされます。
auid about.user.useridsecurity_result.detection_fields.auid 監査ユーザー ID(auid)は about.user.userid にマッピングされ、検出フィールドとして security_result に追加されます。
cmd target.process.command_line 元のログの cmd フィールドのコマンドは target.process.command_line にマッピングされます。
collection_time (マッピングされていません) このフィールドはログ収集時間であり、UDM の IDM オブジェクトにはマッピングされません。
comm principal.application コマンド名(comm)は principal.application にマッピングされます。
compute.googleapis.com/resource_name principal.hostname このラベルのリソース名は principal.hostname にマッピングされます。
create_time (マッピングされていません) このフィールドは、UDM の IDM オブジェクトにマッピングされていません。
cwd security_result.detection_fields.cwd 現在の作業ディレクトリ(cwd)が security_result の検出フィールドとして追加されます。
data (処理済み) data フィールドにはメインのログ メッセージが含まれ、パーサーによって処理されてさまざまなフィールドが抽出されます。単一の UDM フィールドに直接マッピングされません。
exe principal.process.file.full_pathtarget.process.file.full_path 実行可能パス(exe)は、コンテキストに応じて principal.process.file.full_path または target.process.file.full_path にマッピングされます。
extensions.auth.type extensions.auth.type 認証タイプは、イベントタイプに基づいてパーサー ロジックによって設定されます。多くの場合、MACHINE または AUTHTYPE_UNSPECIFIED に設定されます。
fp network.tls.client.certificate.sha256 フィンガープリント(fp)が解析され、SHA256 ハッシュが抽出されて network.tls.client.certificate.sha256 にマッピングされます。
insertId (マッピングされていません) このフィールドは、UDM の IDM オブジェクトにマッピングされていません。
jsonPayload.message (処理済み) このフィールドには、メインのログ メッセージが JSON 形式で含まれ、パーサーによって処理されます。
key security_result.about.registry.registry_key キーフィールドは security_result.about.registry.registry_key にマッピングされます。
labels (処理済み) 未加工ログのラベルは処理され、さまざまな UDM フィールドにマッピングされるか、additional.fields に追加されます。
logName (マッピングされていません) このフィールドは、UDM の IDM オブジェクトにマッピングされていません。
msg security_result.summary メッセージ(msg)は、security_result.summary フィールドに値を設定するためによく使用されます。
network.application_protocol network.application_protocol イベントタイプに基づいてパーサー ロジックによって設定されます(例:SSH、HTTP)。
network.direction network.direction イベントタイプに基づいてパーサー ロジックによって設定されます(例:INBOUND、OUTBOUND)。
network.ip_protocol network.ip_protocol パーサー ロジックによって設定されます。通常は、SSH イベントの場合は TCP に設定されます。
network.session_id network.session_id ses フィールドからマッピングされるか、他のフィールドから派生します。
network.tls.cipher network.tls.cipher 暗号情報は未加工のログから抽出され、このフィールドにマッピングされます。
network.tls.curve network.tls.curve 鍵交換曲線は未加工ログから抽出され、このフィールドにマッピングされます。
pid principal.process.pidtarget.process.pid プロセス ID(pid)は、コンテキストに応じて principal.process.pid または target.process.pid にマッピングされます。
ppid principal.process.parent_process.pidtarget.process.parent_process.pid 親プロセス ID(ppid)は、コンテキストに応じて principal.process.parent_process.pid または target.process.parent_process.pid にマッピングされます。
principal.asset.hostname principal.asset.hostname principal.hostname からコピーしました。
principal.asset.ip principal.asset.ip principal.ip からコピーしました。
principal.platform principal.platform オペレーティング システムに基づいてパーサー ロジックによって設定されます(例: LINUX)。
principal.port principal.port プリンシパルに関連付けられているポート番号。
principal.user.group_identifiers principal.user.group_identifiers プリンシパル ユーザーに関連付けられたグループ ID。
receiveTimestamp (マッピングされていません) このフィールドはログ受信タイムスタンプであり、UDM の IDM オブジェクトにはマッピングされません。
res security_result.action_details 結果(res)は security_result.action_details にマッピングされます。
resource.labels (マッピングされていません) これらのラベルは一部のロギング データに存在しますが、UDM 内の IDM オブジェクトにはマッピングされていません。
resource.type (マッピングされていません) このフィールドは一部のロギング データに存在しますが、UDM の IDM オブジェクトにはマッピングされていません。
security_result.action security_result.action res フィールドに基づいてパーサー ロジックによって設定されます(ALLOW、BLOCK)を設定します。
security_result.detection_fields security_result.detection_fields 未加工ログのさまざまなフィールドが、コンテキスト用に Key-Value ペアとしてこの配列に追加されます。
security_result.rule_id security_result.rule_id パーサー ロジックによって設定されます。多くの場合、syscall イベントの場合は type_name に設定されます。
security_result.severity security_result.severity 未加工ログの重大度レベルに基づいてパーサー ロジックによって設定されます。
security_result.summary security_result.summary イベントの概要。多くの場合、msg フィールドやその他の関連フィールドから取得されます。
ses network.session_id セッション ID(ses)は network.session_id にマッピングされます。
source (マッピングされていません) このフィールドにはログソースに関するメタデータが含まれ、UDM の IDM オブジェクトにはマッピングされません。
subj (処理済み) 件名フィールド(subj)が処理され、ユーザーとセキュリティのコンテキスト情報が抽出されます。
syscall security_result.about.labels.Syscall syscall 番号は security_result.about 内にラベルとして追加されます。
target.administrative_domain target.administrative_domain ターゲット ユーザーのドメイン。
target.group.group_display_name target.group.group_display_name ターゲット グループの名前。
target.ip target.ip ターゲットの IP アドレス。
target.port target.port ターゲットに関連付けられているポート番号。
target.process.command_line target.process.command_line ターゲット プロセスのコマンドライン。
target.resource.type target.resource.type パーサー ロジックによって設定されるターゲット リソースのタイプ(例: CREDENTIAL、SETTING)。
target.user.attribute.permissions target.user.attribute.permissions 対象ユーザーに関連する権限。
target.user.group_identifiers target.user.group_identifiers ターゲット ユーザーに関連付けられているグループ ID。
target.user.userid target.user.userid ターゲットのユーザー ID。
textPayload (処理済み) ログのテキスト ペイロード。パーサーによって処理され、さまざまなフィールドが抽出されます。
timestamp metadata.event_timestamp イベントのタイムスタンプ。
tty security_result.about.labels.tty tty は security_result.about 内にラベルとして追加されます。
type metadata.product_event_type イベントタイプ(type)は metadata.product_event_type にマッピングされます。
uid principal.user.useridtarget.user.userid ユーザー ID(uid)は、コンテキストに応じて principal.user.userid または target.user.userid にマッピングされます。

変更点

2024-05-08

  • 値が「?」でない場合、「field」を「field33」にマッピングし、「security_result.detection_fields」にマッピングしました。
  • 「type_name」が「CRYPTO_KEY_USER」の場合、「exe」を「principal.process.file.full_path」にマッピングしました。
  • 「type_name」が「CRYPTO_KEY_USER」の場合、「fp」を「network.tls.client.certificate.sha256」にマッピングしました。
  • 「type_name」が「CRYPTO_KEY_USER」の場合、「pid」を「principal.process.pid」にマッピングしました。
  • 新しいログパターンを解析するための Grok パターンを追加しました。
  • 「syslog-tag」を「security_result.detection_fields」にマッピングしました。
  • 「inter_ip」を「intermediary.ip」にマッピングしました。
  • 「inter_hostname」を「intermediary.hostname」にマッピングしました。

2024-05-02

  • 「type_name」が「USER_MGMT」の場合、「grp」を「target.group.group_display_name」にマッピングしました。
  • 「type_name」が「USER_MGMT」の場合、「uid」のマッピングを「principal.user.userid」から「target.user.userid」に変更しました。
  • 「type_name」が「USER_MGMT」で、「op」が「deleting-user-from-group」の場合、「metadata.event_type」を「GROUP_MODIFICATION」に設定します。
  • 「type_name」が「USER_MGMT」の場合、「exe」のマッピングを「target.process.file.full_path」から「principal.process.file.full_path」に変更しました。
  • 「type_name」が「USER_MGMT」の場合、「id」を「about.user.userid」にマッピングしました。

2024-04-08

  • 「type_name」が「ADD_USER」、principal_user_present が「true」、target_user_present が「true」、has_principal が「true」の場合、「metadata.event_type」を「USER_CREATION」に設定します。
  • 「type_name」が「USER_AUTH」の場合、「acct」を「target.user.user_display_name」にマッピングしました。
  • 「type_name」が「USER_AUTH」の場合、「uid」を「principal.user.userid」にマッピングしました。
  • 「type_name」が「ADD_USER」、「USER_AUTH」、「CRED_ACQ」、「USER_MGMT」にない場合は、「auid」を「about.user.userid」にマッピングしました。
  • 「type_name」が「ADD_USER」の場合、「auid」を「target.user.userid」にマッピングしました。
  • 「type_name」が「ADD_USER」または「USER_AUTH」の場合、「exe」を「principal.process.file.full_path」にマッピングしました。
  • 「type_name」が「ADD_USER」の場合、「op」と「id」を「security_result.summary」にマッピングしました。
  • 「type_name」が「USER_AUTH」の場合、「op」と「acct」を「security_result.summary」にマッピングしました。

2024-03-22

  • JSON ログの新しいパターンのサポートを追加しました。
  • 「labels.compute.googleapis.com/resource_name」、「jsonPayload._HOSTNAME」、「CollectorHostName」、「HOSTNAME」、「Computer」を「principal.hostname」にマッピングしました。
  • 「HostIP」を「principal.ip」にマッピングしました。
  • 「ProcessID」と「jsonPayload._PID」を「principal.process.pid」にマッピングしました。
  • 「SyslogMessage」を「metadata.description」にマッピングしました。
  • 「TenantId」、「_ItemId」、「_Internal_WorkspaceResourceId」、「_ResourceId」、「Facility」を「additional.fields」にマッピングしました。
  • 「SeverityLevel」を「security_result.severity」にマッピングしました。
  • 「SourceSystem」を「principal.platform」にマッピングしました。
  • 「jsonPayload._COMM」を「principal.application」にマッピングしました。
  • 「jsonPayload._EXE」を「target.process.file.full_path」にマッピングしました。
  • 「jsonPayload._AUDIT_FIELD_FILE」を「target.file.full_path」にマッピングしました。
  • 「jsonPayload._AUDIT_FIELD_HASH」を「target.file.hash」にマッピングしました。
  • 「jsonPayload._AUDIT_SESSION」を「network.session_id」にマッピングしました。
  • 「jsonPayload._PPID」を「principal.process.parent_process.pid」にマッピングしました。
  • 「jsonPayload._AUDIT_FIELD_A0」、「jsonPayload._AUDIT_FIELD_A1」、「jsonPayload._AUDIT_FIELD_A2」、「jsonPayload._AUDIT_FIELD_A3」、「jsonPayload._BOOT_ID」、「jsonPayload._AUDIT_FIELD_EXIT」を「security_result.detection_fields」にマッピングしました。

2023-11-27

  • 「metadata.event_type」を「USER_LOGIN」に設定する前に、「principal_user_present」、「target_user_present」、「has_principal」のいずれかが true であることを確認する検証チェックを追加しました。
  • 「metadata.event_type」を「USER_LOGOUT」に設定する前に、「principal_user_present」、「target_user_present」、「has_principal」のいずれかが true であることを確認する検証チェックを追加しました。
  • 「metadata.event_type」を「USER_CREATION」に設定する前に、「principal_user_present」、「target_user_present」、「has_principal」のいずれかが true であることを確認する検証チェックを追加しました。
  • 「metadata.event_type」を「USER_DELETION」に設定する前に、「principal_user_present」、「target_user_present」、「has_principal」のいずれかが true であることを確認する検証チェックを追加しました。
  • 「metadata.event_type」を「USER_UNCATEGORIZED」に設定する前に、「principal_user_present」、「target_user_present」、「has_principal」のいずれかが true であることを確認する検証チェックを追加しました。
  • 「metadata.event_type」を「USER_RESOURCE_ACCESS」に設定する前に、「principal_user_present」、「target_user_present」、「has_principal」のいずれかが true であることを確認する検証チェックを追加しました。
  • 「metadata.event_type」を「USER_CHANGE_PERMISSIONS」に設定する前に、「principal_user_present」、「target_user_present」、「has_principal」のいずれかが true であることを確認する検証チェックを追加しました。
  • ユーザーの詳細が存在し、プリンシパル マシンの詳細が存在しない場合、「metadata.event_type」のマッピングを「USER_CREATION」から「USER_UNCATEGORIZED」に変更しました。
  • ユーザーの詳細が存在し、プリンシパル マシンの詳細が存在しない場合、「metadata.event_type」のマッピングを「USER_DELETION」から「USER_UNCATEGORIZED」に変更しました。

2023-09-06

  • 「cron daemon(CROND)」の「CMD」のマッピングを「target.process.command_line」に追加しました。

2023-06-20

  • 機能拡張 - type="ADD_USER" および "DEL_USER" の場合、次のマッピングを追加または変更しました。
  • 「uid」のマッピングを「target.user.userid」から「principal.user.userid」に変更しました。
  • 「id」を「target.user.userid」にマッピングしました。
  • 「ID」を「target.user.user_display_name」にマッピングしました。
  • 「UID」のマッピングを「principal.user.userid」から「principal.user.user_display_name」に変更しました。
  • 「acct」のマッピングを「principal.user.user_display_name」から「target.user.user_display_name」と「target.user.userid」に変更しました。

2023-06-09

  • 機能拡張 - 「type=ADD_USER」の場合に、「event_type」を「USER_LOGIN」から「USER_CREATION」に変更しました。

2023-04-17

  • 強化
  • JSON 構造を壊す「GS - グループ区切り文字」の文字を置き換える gsub 関数を追加しました。

2023-04-10

  • 強化
  • 「gid」、「euid」、「egid」、「suid」、「fsuid」、「sgid」、「fsgid」、「tty」、「items」フィールドを security_result.detection_fields に追加しました。
  • さらに、「gid」を「principal.user.group_identifiers」にマッピングしました。
  • 「euid」を「target.user.userid」にマッピングしました。
  • 「egid」を「target.user.group_identifiers」にマッピングしました。

2023-03-27

  • 機能拡張 - ログを含む「jsonPayload」のサポートを追加しました。

2023-02-28

  • バグの修正 - パーサーを強化して、16 進数でエンコードされた文字列を ASCII に変換できるようにしました。

2023-02-09

  • 機能拡張 - 「type=PATH」を含むログの grok を変更して、ログから正しいホスト名を取得できるようにしました。

2023-01-24

  • 機能強化 -
  • eventType が「tac_plus」のログを解析しました。
  • 異なる event_types である「NETWORK_CONNECTION」、「NETWORK_HTTP」、「USER_LOGIN」をマッピングするための条件を追加しました。

2022-12-02

  • 機能強化 -
  • 「user_name」を「principal.user.userid」にマッピングしました。
  • 「dst_ip」、「dst_port」の条件付きチェックを追加しました。

2022-10-31

  • 機能強化 -
  • パーサーを強化して、type=ADD_USER、USER_MGMT、DEL_USER でログを解析できるようにしました。
  • 「principal_hostname」の null チェックを追加しました。
  • 「principal.process.file.full_path」、「type_syscall_props.key」、「type_syscall_props.arch」、「msg2」の on_error チェックを追加しました。
  • event_type="FILE_OPEN"、"USER_UNCATEGORIZED"、"STATUS_UPDATE"、"USER_DELETION" にマッピングするための条件付きチェックを追加しました。
  • 「principal_user_userid」を「principal.user.userid」にマッピングしました。

2022-11-16

  • 機能強化 -
  • 「アクセスログ」を含むログタイプの「GENERIC_EVENT」を「STATUS_UPDATE」に改善しました。

2022-10-14

  • 機能強化 -
  • お客様のパーサーをデフォルトのパーサーに移行しました。

2022-10-13

  • 機能拡張 - 「vendor_name」を「Linux」にマッピングしました。
  • 「product_name」を「AuditD」にマッピングしました。
  • 「ProxySG」を含むログを解析し、可能な場合「ip」を「target.ip」に、「port」を「target.port」にマッピングしました。
  • 「event_type」を「GENERIC_EVENT」から「STATUS_UPDATE」に変更しました。
  • 「intermediary.hostname」のマッピングを「principal.hostname」に変更しました。

2022-07-28

  • 機能強化 -
  • フィールド「auid」を about.user.userid にマッピングしました。
  • フィールド「AUID」を「about.user.user_display_name」にマッピングしました。
  • フィールド「proctitle」を「target.process.file.full_path」にマッピングしました。
  • パーサーを強化して、type=DAEMON_END、CRYPTO_SESSION、CONFIG_CHANGE、PROCTITLE、USER_ERR、CRYPTO_KEY_USER のログを解析できるようにしました。
  • laddr、addr、cipher、pfs、direction、acct、pid、ppid、cmd、exe、ses の条件付きチェックを追加しました。

2022-06-17

  • 機能拡張 - 次のフィールドをマッピング/変更しました。
  • 「auid」のマッピングを「security_result.about.user.userid」から「about.user.userid」に変更しました。
  • type=SYSCALL の「event_type」を「SYSTEM_AUDIT_LOG_UNCATEGORIZED」から「USER_UNCATEGORIZED」に変更しました。
  • 「success」を「security_result.summary」にマッピングしました。
  • 「syscall」、「exit」、「tty」、「a0」、「a1」、「a2」、「a3」を「security_result.about.labels」にマッピングしました。
  • ログを ASCII 形式でドロップしました。

2022-06-14

  • 機能強化
  • パーサーを強化して、USER_CMD タイプのログを解析できるようにしました。
  • フィールド「cmd」を「principal.process.command_line」にマッピングしました。
  • フィールド「ses」を「network.session_id」にマッピングしました。
  • フィールド「res」を「security_result.action」と「security_result.action_details」にマッピングしました。
  • フィールド「auid」と「cwd」を「security_result.detection_fields」にマッピングしました。

2022-04-26

  • 機能強化
  • 未解析のログをすべて解析することで、解析の割合を増やしました。