macOS システムログを収集する
このドキュメントでは、Bindplane を使用して macOS システムログを Google Security Operations に取り込む方法について説明します。macOS は、Apple Unified Logging システムを使用して、認証、プロセス実行、カーネル アクティビティ、アプリケーションの動作など、システムレベルのイベントをキャプチャします。これらのログは、syslog 経由でリモート コレクタに転送して、セキュリティ モニタリングと分析を一元的に行うことができます。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス。
- Windows 2016 以降または systemd を使用する Linux ホスト。
- プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認してください。
- ログを転送する macOS エンドポイントに対する管理者権限。
- Unified Logging をサポートする macOS 10.12(Sierra)以降。
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [収集エージェント] に移動します。
- 取り込み認証ファイル をダウンロードします。
- Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows へのインストール
- 管理者としてコマンド プロンプト または PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux へのインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
その他のインストール リソース
その他のインストール オプションについては、こちらのインストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
構成ファイルにアクセスします。
config.yamlファイルを見つけます。通常、Linux では/observiq-otel-collector/ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano、vi、メモ帳など)を使用してファイルを開きます。
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: <PLACEHOLDER_CUSTOMER_ID> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'MACOS' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<PLACEHOLDER_CUSTOMER_ID>は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.jsonは、Google SecOps の取り込み認証ファイルを取得する で認証ファイルを保存したファイルパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには:
次のコマンドを実行します。
sudo systemctl restart observiq-otel-collectorサービスが実行されていることを確認します。
sudo systemctl status observiq-otel-collectorログでエラーを確認します。
sudo journalctl -u observiq-otel-collector -f
Windows で Bindplane エージェントを再起動するには:
次のいずれかのオプションを選択します。
- 管理者としてコマンド プロンプトまたは PowerShell を実行する。
net stop observiq-otel-collector && net start observiq-otel-collector- サービス コンソール:
Win+Rを押して「services.msc」と入力し、Enter キーを押します。- [observIQ OpenTelemetry Collector] を見つけます。
- 右クリックして [再起動] を選択します。
サービスが実行されていることを確認します。
sc query observiq-otel-collectorログでエラーを確認します。
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
macOS syslog 転送を構成する
macOS は Unified Logging システムを使用します。syslog 経由でログを Bindplane エージェントに転送するには、各 macOS エンドポイントで組み込みの syslogd サービスを構成します。
オプション 1: syslog.conf を使用して syslog 転送を構成する
- macOS エンドポイントでターミナル を開きます。
syslog 構成ファイルを編集します。
sudo nano /etc/syslog.conf次の行をファイルの末尾に追加して、すべてのログを UDP 経由で Bindplane エージェントに転送します。
*.* @<BINDPLANE_IP_ADDRESS>:514<BINDPLANE_IP_ADDRESS>は、Bindplane エージェント ホストの IP アドレス(192.168.1.100など)に置き換えます。
ファイルを保存して終了します。
syslog デーモンを再起動します。
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
オプション 2: asl.conf を使用して syslog 転送を構成する
- macOS エンドポイントでターミナル を開きます。
ASL 構成ファイルを編集します。
sudo nano /etc/asl.conf次の行を追加して、ログをリモート syslog サーバーに転送します。
? [= Sender kernel] forward <BINDPLANE_IP_ADDRESS>:514 ? [<= Level notice] forward <BINDPLANE_IP_ADDRESS>:514<BINDPLANE_IP_ADDRESS>は、Bindplane エージェント ホストの IP アドレスに置き換えます。
ファイルを保存して終了します。
syslog デーモンを再起動します。
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
ログ転送を確認する
macOS エンドポイントで、テスト ログメッセージを生成します。
logger -p user.notice "Test syslog message for Bindplane"Bindplane エージェント ホストで、エージェント ログで受信メッセージを確認します。
sudo journalctl -u observiq-otel-collector -f
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
activityIdentifier_label |
additional.fields |
統合済み |
backtrace_label |
additional.fields |
統合済み |
bootUUID_label |
additional.fields |
統合済み |
category_label |
additional.fields |
統合済み |
chronicle_log_type_label |
additional.fields |
統合済み |
formatString_label |
additional.fields |
統合済み |
log_type_label |
additional.fields |
統合済み |
machTimestamp_label |
additional.fields |
統合済み |
messageType_label |
additional.fields |
統合済み |
parentActivityIdentifier_label |
additional.fields |
統合済み |
processImageUUID_label |
additional.fields |
統合済み |
senderImageUUID_label |
additional.fields |
統合済み |
senderProgramCounter_label |
additional.fields |
統合済み |
subprocess_label |
additional.fields |
統合済み |
subsystem_label |
additional.fields |
統合済み |
threadID_label |
additional.fields |
統合済み |
traceID_label |
additional.fields |
統合済み |
intermediary_host |
intermediary.hostname |
直接マッピングされます。 |
attributes.message |
metadata.description |
直接マッピングされます。 |
description |
metadata.description |
直接マッピングされます。 |
eventMessage |
metadata.description |
直接マッピングされます。 |
timestamp |
metadata.event_timestamp |
ISO8601 として解析されます。 |
has_principal |
metadata.event_type |
マッピング: true → STATUS_UPDATE |
has_user |
metadata.event_type |
マッピング: true → USER_UNCATEGORIZED |
attributes.process |
metadata.product_event_type |
直接マッピングされます。 |
eventType |
metadata.product_event_type |
直接マッピングされます。 |
attributes.host |
principal.asset.hostname |
直接マッピングされます。 |
hostname |
principal.asset.hostname |
直接マッピングされます。 |
source |
principal.asset.hostname |
直接マッピングされます。 |
senderImagePath |
principal.file.full_path |
直接マッピングされます。 |
attributes.host |
principal.hostname |
直接マッピングされます。 |
hostname |
principal.hostname |
直接マッピングされます。 |
source |
principal.hostname |
直接マッピングされます。 |
command_line |
principal.process.command_line |
直接マッピングされます。 |
processImagePath |
principal.process.file.full_path |
直接マッピングされます。 |
attributes.pid |
principal.process.pid |
直接マッピングされます。 |
processID |
principal.process.pid |
直接マッピングされます。 |
process_id |
principal.process.pid |
直接マッピングされます。 |
userID |
principal.user.userid |
直接マッピングされます。 |
| なし | metadata.event_type |
定数: USER_UNCATEGORIZED |
| なし | metadata.product_name |
定数: MacOS |
| なし | metadata.vendor_name |
定数: Apple |
| なし | principal.platform |
定数: MAC |
さらにサポートが必要な場合コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。