Linux Audit Daemon ログを収集する

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

このドキュメントでは、Bindplane を使用して Linux Audit Daemon(auditd)ログを Google Security Operations に取り込む方法について説明します。

Linux Audit Daemon は、Linux 監査システムのユーザー空間コンポーネントです。ファイル アクセス、システムコール、認証イベント、SELinux 拒否など、システム上のセキュリティ関連のイベントを記録します。Auditd ログは、Linux ホストでのコンプライアンス モニタリング、侵入検知、フォレンジック分析に不可欠です。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス。
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト。
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • auditd を実行している Linux ホストに対する root または sudo アクセス権。
  • ソース Linux ホストに auditd パッケージがインストールされ、実行されている。
  • 移行元の Linux ホストにインストールされた audispd-plugins パッケージ(audisp-syslog プラグインを提供します)。

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
    

Linux のインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

その他のインストール リソース

その他のインストール オプションについては、Bindplane エージェントのインストール ガイドをご覧ください。

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

  1. 構成ファイルにアクセスします。

    • Linux: /status observiq-otel-collector/config.yaml
    • Windows: C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
  2. config.yaml ファイルを次のように編集します。

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: '<your_customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'AUDITD'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  • 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
  • <your_customer_id> は、実際の顧客 ID に置き換えます。
  • /path/to/ingestion-authentication-file.json の値を、取り込み認証ファイルを取得するの手順で認証ファイルを保存したファイルパスに更新します。

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"
    

syslog 経由でログを転送するように auditd を構成する

audisp syslog プラグインは監査イベントを syslog に転送し、syslog は Bindplane エージェントに転送します。これは、auditd ログの転送に推奨される方法です。

audisp syslog プラグインをインストールする

  1. root 権限または sudo 権限で auditd を実行している Linux ホストにログインします。
  2. 次の方法で、audispd-plugins パッケージをインストールします。

    • RHEL/CentOS/Fedora:
    sudo yum install audispd-plugins
    
    • Debian/Ubuntu:
    sudo apt install audispd-plugins
    

syslog プラグインを構成する

  1. syslog プラグインの構成ファイルを編集します。

    sudo nano /etc/audit/plugins.d/syslog.conf
    
  2. ファイルに次の値を設定します。

    active = yes
    direction = out
    path = /sbin/audisp-syslog
    type = always
    args = LOG_LOCAL6
    format = string
    
    • active: yes に設定すると、プラグインが有効になります。
    • path: audisp-syslog バイナリのパス。
    • type: プラグインを外部プログラムとして実行するには、always に設定します。
    • args: 使用する syslog ファシリティ。監査ログを他の syslog メッセージと分離するには、LOG_LOCAL6 を使用することをおすすめします。
    • format: syslog に適したテキスト形式でイベントを渡すには、string に設定します。

監査ルールを構成する(省略可)

  1. 監査ルール ファイルを編集して、キャプチャするイベントを定義します。

    sudo nano /etc/audit/rules.d/audit.rules
    
  2. モニタリング要件に基づいてルールを追加します。次に例を示します。

    ## Delete all existing rules
    -D
    
    ## Set buffer size (increase for high-volume systems)
    -b 8192
    
    ## Set failure mode (1 = printk, 2 = panic)
    -f 1
    
    ## Monitor authentication-related files
    -w /etc/passwd -p wa -k identity
    -w /etc/group -p wa -k identity
    -w /etc/shadow -p wa -k identity
    -w /etc/sudoers -p wa -k sudoers
    
    ## Monitor login events
    -w /var/log/faillog -p wa -k logins
    -w /var/log/lastlog -p wa -k logins
    
    ## Monitor process execution
    -a always,exit -F arch=b64 -S execve -k exec
    
    ## Monitor network configuration changes
    -a always,exit -F arch=b64 -S sethostname -S setdomainname -k network
    
    ## Make the configuration immutable (must be the last rule)
    -e 2
    
  3. 新しい監査ルールを読み込みます。

    sudo augenrules --load
    

auditd を再起動する

  1. auditd サービスを再起動して、プラグインとルールの変更を適用します。

    sudo service auditd restart
    

監査ログを Bindplane に転送するように rsyslog を構成する

  1. 監査ログ転送用の新しい rsyslog 構成ファイルを作成します。

    sudo nano /etc/rsyslog.d/audit-forward.conf
    
  2. 次の行を追加して、UDP 経由で Bindplane エージェントにログを転送します。

    local6.* @<BINDPLANE_IP>:514
    
  3. rsyslog を再起動して変更を適用します。

    sudo systemctl restart rsyslog
    

ログ転送を確認する

  1. ソース Linux ホストで、テスト監査イベントを生成します。

    sudo auditctl -w /tmp/test_audit -p wa -k test_chronicle
    
  2. ファイルをタップしてウォッチをトリガーします。

    touch /tmp/test_audit
    
  3. Bindplane エージェント ホストで、ログが受信されていることを確認します。

    sudo journalctl -u observiq-otel-collector -f
    

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
acct target.user.userid 値は acct フィールドから取得されます。
addr principal.ip 有効な IP アドレスの場合、値は addr フィールドから取得されます。
arch additional.fields キー「arch」で Key-Value ペアとして追加されます。
auid principal.user.userid 値は auid フィールドから取得されます。監査ユーザー ID として使用されます。
comm target.process.command_line 値は comm フィールドから取得されます。
cwd additional.fields キー「cwd」で Key-Value ペアとして追加されます。
exe target.process.file.full_path 値は exe フィールドから取得されます。
exit additional.fields キー「exit」で Key-Value ペアとして追加されます。
gid principal.user.group_identifiers 値は gid フィールドから取得されます。
hostname principal.hostname 値は hostname フィールドから取得されます。
key security_result.detection_fields キー「audit_key」で Key-Value ペアとして追加されます。
msg metadata.description msg フィールドから解析されます。監査イベント メッセージが含まれます。
name target.file.full_path 該当する場合は、name フィールドから値を取得します。
node principal.hostname hostname が存在しない場合は、node フィールドから値が取得されます。
op metadata.product_event_type op フィールド(オペレーション タイプ)から取得された値。
pid principal.process.pid 値は pid フィールドから取得されます。
ppid principal.process.parent_process.pid 値は ppid フィールドから取得されます。
res security_result.action res が「success」または「1」の場合は「ALLOW」に設定されます。res が「failed」または「0」の場合、「BLOCK」に設定します。
ses network.session_id 値は ses フィールド(セッション ID)から取得されます。
subj principal.process.file.full_path subj フィールド(SELinux サブジェクト コンテキスト)から取得された値。
syscall additional.fields キー「syscall」で Key-Value ペアとして追加されます。
terminal additional.fields キー「terminal」で Key-Value ペアとして追加されます。
type metadata.product_event_type type フィールドから取得された値(監査レコード タイプ(SYSCALL、USER_LOGIN、EXECVE など))。
uid principal.user.userid 値は uid フィールドから取得されます。
metadata.event_type 監査レコード タイプから派生します。ログイン イベントの場合は「USER_LOGIN」、ログアウト イベントの場合は「USER_LOGOUT」、実行イベントの場合は「PROCESS_LAUNCH」、ファイル イベントの場合は「FILE_MODIFICATION」に設定します。デフォルトは「GENERIC_EVENT」です。
metadata.product_name 「auditd」に設定します。
metadata.vendor_name 「Linux」に設定します。
home event.idm.read_only_udm.additional.fields 変更履歴からマッピング
shell event.idm.read_only_udm.additional.fields 変更履歴からマッピング
name event.idm.read_only_udm.target.user.userid 変更履歴からマッピング
name event.idm.read_only_udm.target.group.group_display_name 変更履歴からマッピング
UID event.idm.read_only_udm.target.user.product_object_id 変更履歴からマッピング
GID event.idm.read_only_udm.target.user.group_identifiers 変更履歴からマッピング
GID event.idm.read_only_udm.target.group.product_object_id 変更履歴からマッピング
key_type event.idm.read_only_udm.additional.fields 変更履歴からマッピング
hash event.idm.read_only_udm.additional.fields 変更履歴からマッピング
key_fingerprint event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
user event.idm.read_only_udm.target.user.userid 変更履歴からマッピング
error_detail1 event.idm.read_only_udm.security_result.summary 変更履歴からマッピング
service_name event.idm.read_only_udm.additional.fields 変更履歴からマッピング
ssh_disconnect_code event.idm.read_only_udm.additional.fields 変更履歴からマッピング
labels.bp_csoc event.idm.read_only_udm.additional.fields 変更履歴からマッピング
labels.bp_env_id event.idm.read_only_udm.additional.fields 変更履歴からマッピング
labels.log.file.name event.idm.read_only_udm.additional.fields 変更履歴からマッピング
resource.labels.node_id event.idm.read_only_udm.additional.fields 変更履歴からマッピング
intermediary_host event.idm.read_only_udm.intermediary.hostname 変更履歴からマッピング
PWD event.idm.read_only_udm.target.file.full_path 変更履歴からマッピング
log_details event.idm.read_only_udm.additional.fields 変更履歴からマッピング
indicator.SUID event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
indicator.UID event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
indicator.AUID event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
type_crypto_props.msg event.idm.read_only_udm.additional.fields 変更履歴からマッピング
usr event.idm.read_only_udm.principal.user.userid 変更履歴からマッピング
pi event.idm.read_only_udm.principal.process.pid 変更履歴からマッピング
cmnd event.idm.read_only_udm.target.process.command_line 変更履歴からマッピング
proctitle_value event.idm.read_only_udm.principal.process.file.full_path 変更履歴からマッピング
filename event.idm.read_only_udm.principal.process.file.names 変更履歴からマッピング
filepath event.idm.read_only_udm.target.file.full_path 変更履歴からマッピング
uid event.idm.read_only_udm.principal.user.userid 変更履歴からマッピング
acct event.idm.read_only_udm.principal.user.user_display_name 変更履歴からマッピング
exe event.idm.read_only_udm.target.process.file.full_path 変更履歴からマッピング
pid event.idm.read_only_udm.principal.process.pid 変更履歴からマッピング
auid event.idm.read_only_udm.about.user.userid 変更履歴からマッピング
ses event.idm.read_only_udm.network.session_id 変更履歴からマッピング
addr event.idm.read_only_udm.principal.ipevent.idm.read_only_udm.principal.asset.ip 変更履歴からマッピング
subj event.idm.read_only_udm.additional.fields 変更履歴からマッピング
res event.idm.read_only_udm.security_result.summary 変更履歴からマッピング
op event.idm.read_only_udm.security_result.summary 変更履歴からマッピング
msg_value event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
grantors_value event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
indicator.msg event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
indicator.grantors event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
terminal event.idm.read_only_udm.principal.application 変更履歴からマッピング
sec_result event.idm.read_only_udm.security_result 変更履歴からマッピング
hostname event.idm.read_only_udm.principal.hostname 変更履歴からマッピング
indicator.mode event.idm.read_only_udm.src.user.attribute.permissions 変更履歴からマッピング
indicator.nametype event.idm.read_only_udm.security_result.rule_name 変更履歴からマッピング
indicator.cap_frootid event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
indicator.cap_fver event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
indicator.cap_fi event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
indicator.cap_fp event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
indicator.cap_fe event.idm.read_only_udm.security_result.detection_fields 変更履歴からマッピング
OUID event.idm.read_only_udm.principal.user.userid 変更履歴からマッピング
OGID event.idm.read_only_udm.principal.group.group_display_name 変更履歴からマッピング
action_data event.idm.read_only_udm.security_result.action_details 変更履歴からマッピング
target_email event.idm.ready_only_udm.target.user.email_addresses 変更履歴からマッピング
target_port event.idm.ready_only_udm.target.port 変更履歴からマッピング
status event.idm.ready_only_udm.security_result.action_details 変更履歴からマッピング
to_email event.idm.ready_only_udm.network.email.to 変更履歴からマッピング
target_hostname event.idm.ready_only_udm.target.hostname 変更履歴からマッピング
"relay_data" event.idm.ready_only_udm.additional.fields 変更履歴からマッピング
"delays_data" event.idm.ready_only_udm.additional.fields 変更履歴からマッピング
"delay_data" event.idm.ready_only_udm.additional.fields 変更履歴からマッピング
and "dns_data" event.idm.ready_only_udm.additional.fields 変更履歴からマッピング
bytes_sent event.idm.ready_only_udm.network.sent_bytes 変更履歴からマッピング
bytes_received event.idm.ready_only_udm.network.received_bytes 変更履歴からマッピング
response_code event.idm.ready_only_udm.network.http.response_code 変更履歴からマッピング
principal_user_name principal.user.userid 変更履歴からマッピング
remote principal.ip 変更履歴からマッピング
method network.http.method 変更履歴からマッピング
path principal.file.full_path 変更履歴からマッピング
code additional.fields 変更履歴からマッピング
size principal.file.size 変更履歴からマッピング
agent network.http.user_agent 変更履歴からマッピング
az principal.location.name 変更履歴からマッピング
ec2_instance_id principal.asset.product_object_id 変更履歴からマッピング
private_ip principal.ip 変更履歴からマッピング
ProviderName additional.fields 変更履歴からマッピング
Version additional.fields 変更履歴からマッピング
Task additional.fields 変更履歴からマッピング
EventRecordID additional.fields 変更履歴からマッピング
ThreadID additional.fields 変更履歴からマッピング
messageType target.resource.attribute.labels 変更履歴からマッピング
owner principal.user.userid 変更履歴からマッピング
logevent.id metadata.product_log_id 変更履歴からマッピング
logGroup secu_result.about.resource.name 変更履歴からマッピング
logStream secu_result.about.resource.attribute.labels 変更履歴からマッピング
ip_addr principal.ip 変更履歴からマッピング
gd secu_result.description 変更履歴からマッピング
process target.application 変更履歴からマッピング
pid target.process.pid 変更履歴からマッピング
status_code network.http.response_code 変更履歴からマッピング
url network.http.referral_url 変更履歴からマッピング
useragent network.http.user_agent 変更履歴からマッピング
request additional.fields 変更履歴からマッピング
tls_version network.tls.version 変更履歴からマッピング
hostname_is principal.hostname 変更履歴からマッピング
referrer network.http.referral_url 変更履歴からマッピング
metadata.event_type USER_LOGIN 変更履歴からマッピング
metadata.event_type PROCESS_UNCATEGORIZED 変更履歴からマッピング
srcIP principal.ip 変更履歴からマッピング
username principal.user.user_display_name 変更履歴からマッピング
type_syscall_props.msg additional.fields 変更履歴からマッピング
sw", "sw_type", and "subj security_result.detection_fields 変更履歴からマッピング
indicator.SYSCALL security_result.detection_fields 変更履歴からマッピング
exe principal.process.file.full_path 変更履歴からマッピング
target.user.userid principal.user.userid 変更履歴からマッピング
target_user_name target.user.userid 変更履歴からマッピング
field field33 変更履歴からマッピング
fp network.tls.client.certificate.sha256 変更履歴からマッピング
pid principal.process.pid 変更履歴からマッピング
syslog-tag security_result.detection_fields 変更履歴からマッピング
inter_ip intermediary.ip 変更履歴からマッピング
inter_hostname intermediary.hostname 変更履歴からマッピング
grp target.group.group_display_name 変更履歴からマッピング
id about.user.userid 変更履歴からマッピング
acct target.user.user_display_name 変更履歴からマッピング
uid principal.user.userid 変更履歴からマッピング
auid about.user.userid 変更履歴からマッピング
auid target.user.userid 変更履歴からマッピング
op" and "id security_result.summary 変更履歴からマッピング
op" and "acct security_result.summary 変更履歴からマッピング
labels.compute.googleapis.com/resource_name","jsonPayload._HOSTNAME" , "CollectorHostName", "HOSTNAME", and "Computer principal.hostname 変更履歴からマッピング
HostIP principal.ip 変更履歴からマッピング
ProcessID" and "jsonPayload._PID principal.process.pid 変更履歴からマッピング
SyslogMessage metadata.description 変更履歴からマッピング
TenantId", "_ItemId", "_Internal_WorkspaceResourceId", "_ResourceId", and "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", and "jsonPayload._AUDIT_FIELD_EXIT security_result.detection_fields 変更履歴からマッピング
id target.user.userid 変更履歴からマッピング
ID target.user.user_display_name 変更履歴からマッピング
user_name principal.user.userid 変更履歴からマッピング
principal_user_userid principal.user.userid 変更履歴からマッピング
vendor_name Linux 変更履歴からマッピング
product_name AuditD 変更履歴からマッピング
ip target.ip 変更履歴からマッピング
success security_result.summary 変更履歴からマッピング
syscall", "exit", "tty", "a0", "a1", "a2", "a3 security_result.about.labels 変更履歴からマッピング

変更履歴

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。