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 取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [収集エージェント] に移動します。
- 取り込み認証ファイルをダウンロードします。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細] セクションから [お客様 ID] をコピーして保存します。
BindPlane Agent をインストールする
- Windows へのインストールの場合は、次のスクリプトを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Linux へのインストールの場合は、次のスクリプトを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- その他のインストール オプションについては、こちらのインストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように BindPlane エージェントを構成する
- BindPlane がインストールされているマシンにアクセスします。
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
次のコマンドを使用して BindPlane エージェントを再起動して、変更を適用します。
sudo systemctl bindplane restart
Auditd から Syslog をエクスポートする
- 監査ログをエクスポートするマシンにアクセスします。
Auditd 構成ファイル(通常は
/etc/audit/auditd.conf
にあります)を開きます。sudo vi /etc/audit/auditd.conf
auditd を構成するには、次の行を見つけるか追加します。
active = yes output = syslog log_format = ENRICHED dispatcher = /sbin/audispd
省略可: Syslog 施設を指定します。auditd.conf
で次の行を追加または変更します。
```none
syslog_facility = LOG_AUTHPRIV
```
audispd 構成ファイル(通常は
/etc/audisp/plugins.d/syslog.conf
にあります)を開きます。sudo vi /etc/audisp/plugins.d/syslog.conf
audispd を構成するには、次の行を見つけるか追加します。
active = yes direction = out path = builtin_syslog type = builtin args = LOG_INFO format = string
Auditd サービスを再起動して変更を適用します。
sudo systemctl restart auditd
tail
などのツールを使用して syslog をモニタリングし、Auditd ログが送信されていることを確認します。tail -f /var/log/syslog | grep auditd # Follow syslog and filter for auditd messages (path may vary depending on your system)
rsyslog.conf
を編集するか、カスタム構成を作成します。sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
ログを転送するルールを追加します。
if $programname == 'auditd' then @@<BindPlane_Agent>:<BindPlane_Port>
- UDP の場合は
@
、TCP の場合は@@
を使用します。 <BindPlane_Agent>
は、サーバーの IP またはホスト名に置き換えます。<BindPlane_Port>
は、サーバーのポートに置き換えます。
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.userid 、security_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_path 、target.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.pid 、target.process.pid |
プロセス ID(pid )は、コンテキストに応じて principal.process.pid または target.process.pid にマッピングされます。 |
ppid |
principal.process.parent_process.pid 、target.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.userid 、target.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
- 機能強化
- 未解析のログをすべて解析することで、解析の割合を増やしました。