Linux 監査ログと 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 Settings] > [Collection Agents] に移動します。
- Ingestion Authentication File をダウンロードします。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
- 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 Agent を構成する
- 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 Agent を再起動して、変更を適用します。
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 Facility を指定します。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 にマッピングされます。 |
COMMAND |
target.process.command_line |
|
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 |
target.process.file.full_path |
実行可能ファイルのパス(exe )が 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 にマッピングされます。 |
_Item_Id |
metadata.product_log_id |
|
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 オブジェクトにマッピングされません。 |
metadata.product_event_type |
SECCOMP | 鍵交換曲線が未加工ログから抽出され、このフィールドにマッピングされます。 |
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。 |
process.name |
target.process.file.full_path |
|
receiveTimestamp |
(マッピングされていません) | このフィールドはログ受信タイムスタンプであり、UDM の IDM オブジェクトにマッピングされません。 |
res |
security_result.action_details |
結果(res )は security_result.action_details にマッピングされます。 |
_Resource_Id |
target.resource.product_object_id |
|
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。 |
TenantId |
metadata.product_deployment_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 |
target.user.userid |
ユーザー ID(uid )は target.user.userid にマッピングされます。 |
UDM マッピング デルタ リファレンス
2025 年 9 月 23 日に、Google SecOps は Okta パーサーの新しいバージョンをリリースしました。このバージョンには、Okta ログフィールドから UDM フィールドへのマッピングの大きな変更と、イベントタイプのマッピングの変更が含まれています。
ログフィールド マッピングの差分
次の表に、2025 年 9 月 23 日より前とそれ以降に公開された Okta ログから UDM へのフィールドのマッピングの差分を示します(それぞれ [以前のマッピング] 列と [現在のマッピング] 列に記載されています)。
ログフィールド | 以前のマッピング | 現在のマッピング | リファレンス ログのサンプル |
---|---|---|---|
1.1.1.1 (IP アドレス) |
src.ip |
principal.ip |
「<163>Apr 10 09:00:05 hostname.com sshd[3318513]: Accepted password for abc from 1.1.1.1 port 33988 ssh2」 |
1.1.1.1 (IP アドレス) |
principal.ip |
target.ip |
"<29>Oct 5 08:37:16 abc ProxySG: E0000 アクセスログ HTTP(メイン): ポート 4433 でサーバー 1.1.1.1 に接続しています。(0) NORMAL_EVENT alog_stream_http.cpp 261" |
abc (ユーザー) |
principal.user.userid |
target.user.userid |
"<85>Feb 27 08:26:55 offozcav login: FAILED LOGIN 1 FROM ::ffff:1.1.1.1 FOR abc, Authentication failure\r\n\r\n" |
abc.abc (ユーザー) |
principal.user.userid |
target.user.userid |
"<86>Feb 27 08:29:19 offozcav login: LOGIN ON pts/43 BY abc.abc FROM\r\n\r\n::ffff:1.1.1.1" |
COMMAND |
principal.process.command_line |
target.process.command_line |
"<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number" |
exe |
target.process.file.full_path |
principal.process.file.full_path |
|
_ItemId |
additional.fields |
metadata.product_log_id |
|
metadata.product_event_type |
PATH |
SECCOMP |
|
process.name |
principal.process.file.full_path |
target.process.file.full_path |
|
_ResourceId |
additional.fields |
target.resource.product_object_id |
|
TenantId |
additional.fields |
metadata.product_deployment_id |
|
uid |
principal.user.userid |
target.user.userid |
|
USER |
principal.user.user_display_name |
target.user.userid |
"<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number" |
user |
principal.user.userid |
target.user.userid |
「29>Jan 16 11:28:00 san-auth-1-irl2 tac_plus[17329]: login failure: user 1.1.1.1 (1.1.1.1) vty0」 |
user |
principal.user.userid |
target.user.userid |
「<87>Jul 15 10:27:01 xpgjrconfdb01 crond[1045]: pam_unix(crond:account): expired password for user root (password aged)」 |
イベントタイプ マッピングの差分
以前は汎用イベントとして分類されていた複数のイベントが、意味のあるイベントタイプで適切に分類されるようになりました。
次の表に、2025 年 9 月 23 日より前と以降の Okta イベントタイプの処理の差分を示します(それぞれ [以前の event_type] 列と [現在のイベントタイプ] 列に記載)。
ログの eventType | 以前の event_type | 現在の event_type |
---|---|---|
aix_event_type=CRON_Start |
USER_LOGIN |
PROCESS_LAUNCH |
CRYPTO_KEY_USER |
NETWORK_CONNECTION |
USER_LOGIN |
FILE_Mknod |
USER_LOGIN |
FILE_CREATION |
FILE_Rename |
USER_LOGIN |
FILE_MODIFICATION |
FILE_Stat |
USER_LOGIN |
FILE_OPEN |
FILE_Unlink |
USER_LOGIN |
FILE_DELETION |
FS_Chabc |
USER_LOGIN |
PROCESS_UNCATEGORIZED |
FS_Mkdir |
USER_LOGIN |
FILE_CREATION |
FS_Rmdir |
USER_LOGIN |
FILE_DELETION |
PROC_Execute |
USER_LOGIN |
PROCESS_LAUNCH |
type=ANOM_ABEND |
STATUS_UPDATE |
PROCESS_TERMINATION |
type=ANOM_PROMISCUOUS |
SETTING_MODIFICATION |
|
type=CRED_REFR |
USER_LOGIN |
USER_CHANGE_PERMISSIONS |
type=PROCTILE |
PROCESS_UNCATEGORIZED |
PROCESS_LAUNCH |
type=SERVICE_START |
USER_RESOURCE_ACCESS |
SERVICE_START |
type=SERVICE_STOP |
USER_RESOURCE_ACCESS |
SERVICE_STOP |
type=USER_ACCT |
USER_LOGIN/SETTING_MODIFICTION |
USER_LOGIN |
type=USER_MGMT |
SETTING_MODIFICATION/GROUP_MODIFICATION |
GROUP_MODIFICATION |
USER_ERR |
USER_LOGOUT |
USER_LOGIN |
その他の変更
security_result.description
からres
の重複するマッピングを削除しました。security_result.action_details
で取得されます。- 追加フィールドから不要な
auditd_msg_data
を削除しました。 security_result.summary
から不要なauditd_msg_data
を削除しました。type=ADD_USER
の場合、acct
からtarget.user.display_name
への重複マッピングを削除しました。target.user.userid
にすでにマッピングされています。principal.process.command_line
とprincipal.process.file.names
からcomm
の重複マッピングを削除しました。principal.application
で取得されます。principal
に値がある場合にtarget.hostname
の重複マッピングを削除しました。target.resource.type
からSETTING
への不要なハードコード マッピングを削除しました。- 非推奨になったため、ラベルのマッピングに関する情報を削除しました。
- マッピングを修正しました。IP は
principal.hostname
ではなくprincipal.ip
にルーティングされるようになりました。 - イベントの繰り返し生成を修正しました。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。