McAfee Firewall Enterprise のログを収集する
このドキュメントでは、McAfee Firewall Enterprise のログを収集する方法について説明します。パーサー コードは、まず一連の Grok パターンを使用してフィールドを抽出し、SYSLOG 形式と JSON 形式の両方を処理します。次に、特定のログカテゴリに応じて、特定の Grok パターンとキーバリュー抽出を適用し、データを Google Security Operations UDM スキーマにマッピングします。
始める前に
- Google Security Operations インスタンスがあることを確認します。
- Windows 2016 以降、または
systemd
を使用する Linux ホストを使用していることを確認します。 - プロキシの背後で実行している場合は、ファイアウォールのポートが開いていることを確認します。
- McAfee ESM への特権アクセス権があることを確認します。
Google SecOps 取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [収集エージェント] に移動します。
- 取り込み認証ファイルをダウンロードします。BindPlane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細] セクションから [お客様 ID] をコピーして保存します。
BindPlane Agent をインストールする
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 Agent を構成する
構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/etc/bindplane-agent/
ディレクトリ、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
config.yaml
ファイルを次のように編集します。receivers: udplog: # Replace with your specific IP and port listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Path to the ingestion authentication file creds: '/path/to/your/ingestion-auth.json' # Your Chronicle customer ID customer_id: 'your_customer_id' endpoint: malachiteingestion-pa.googleapis.com ingestion_labels: log_type: SYSLOG namespace: mcafee_esm raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
インフラストラクチャの要件に応じてポートと IP アドレスを置き換えます。
<customer_id>
は、実際のお客様 ID に置き換えます。[Google SecOps 取り込み認証ファイルを取得する] セクションで、
/path/to/ingestion-authentication-file.json
を認証ファイルが保存されているパスに更新します。
BindPlane Agent を再起動して変更を適用する
Linux で BindPlane Agent を再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agent
Windows で BindPlane Agent を再起動するには、[サービス] コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
Syslog を転送するように McAfee ESM を構成する
- McAfee ESM コンソールにログインします。
- [システムのプロパティ] > [イベント転送] に移動します。
- [追加] をクリックして、新しい Syslog 転送ルールを作成します。
- 以下の設定を構成します。
- [名前] にわかりやすい名前を入力します(例: Google SecOps Forwarding)。
- 宛先 IP アドレス: Syslog サーバー(または BindPlane エージェント)の IP を入力します。
- 宛先ポート: UDP の場合は 514 を使用します(Syslog サーバーまたは Bindplane の構成に応じて、別のポートを指定することもできます)。
- プロトコル: [UDP] を選択します(Syslog サーバーまたは Bindplane の構成に応じて、TCP または TLS を選択することもできます)。
- 形式: CEF(共通イベント形式)または ASCII(McAfee ログに推奨される形式)を選択します。
- フィルタ: 転送するイベントタイプ(ファイアウォール ログ、認証イベント、脅威検出など)を定義します。
- [保存] をクリックします。
- 変更を有効にするには、McAfee ESM サービスを再起動します。
UDM マッピング テーブル
ログフィールド | UDM マッピング | 論理 |
---|---|---|
act | security_result.action_details | 値は、解析された JSON ペイロードの「act」フィールドから取得されます。 |
cat | security_result.category_details | 値は、解析された JSON ペイロードの「cat」フィールドから取得されます。 |
data.AppID | target.application | 値は、解析された JSON ペイロードの「AppID」フィールドから取得されます。 |
data.Destination_Hostname | target.hostname | 値は、解析された JSON ペイロードの「Destination_Hostname」フィールドから取得されます。 |
data.Destination_UserID | target.user.windows_sid | 値は、解析された JSON ペイロードの「Destination_UserID」フィールドから取得されます。 |
data.DomainID | target.administrative_domain | 値は、解析された JSON ペイロードの「DomainID」フィールドから取得されます。 |
data.dst_ip | target.ip | 値は、解析された JSON ペイロードの「dst_ip」フィールドから取得されます。 |
data.dst_mac | target.mac | 値は、解析された JSON ペイロードの「dst_mac」フィールドから取得されます。 |
data.dst_port | target.port | 値は、解析された JSON ペイロードの「dst_port」フィールドから取得され、整数に変換されます。 |
data.HostID | target.hostname | 値は、解析された JSON ペイロードの「HostID」フィールドから取得されます。 |
data.norm_sig.name | このフィールドの値に基づいてイベントタイプが決まります。 | |
data.PID | target.process.pid | 値は、解析された JSON ペイロードの「PID」フィールドから取得されます。 |
data.Process_Name | target.process.command_line | 値は、解析された JSON ペイロードの「Process_Name」フィールドから取得されます。 |
data.severity | security_result.severity | 値は、解析された JSON ペイロードの「severity」フィールドから取得され、整数に変換されます。その値に基づいて、UDM の重大度レベル(LOW(1 ~ 32)、MEDIUM(33 ~ 65)、HIGH(66 ~ 100))にマッピングされます。 |
data.sig.name | security_result.description | 値は、解析された JSON ペイロードの「sig.name」フィールドから取得されます。 |
data.Source_Logon_ID | about.labels.value | 値は、解析された JSON ペイロードの「Source_Logon_ID」フィールドから取得されます。 |
data.Source_UserID | principal.user.windows_sid | 値は、解析された JSON ペイロードの「Source_UserID」フィールドから取得されます。 |
data.src_ip | principal.ip | 値は、解析された JSON ペイロードの「src_ip」フィールドから取得されます。 |
data.src_mac | principal.mac | 値は、解析された JSON ペイロードの「src_mac」フィールドから取得されます。 |
data.src_port | principal.port | 値は、解析された JSON ペイロードの「src_port」フィールドから取得され、整数に変換されます。 |
data.UserIDDst | target.user.userid | 値は、解析された JSON ペイロードの「UserIDDst」フィールドから取得されます。 |
data.UserIDSrc | principal.user.userid | 値は、解析された JSON ペイロードの「UserIDSrc」フィールドから取得されます。 |
deviceExternalId | about.asset.asset_id | 値は、解析された JSON ペイロードの「deviceExternalId」フィールドから取得され、プロダクト名と組み合わせて一意のアセット ID が作成されます。 |
deviceTranslatedAddress | about.nat_ip | 値は、解析された JSON ペイロードの「deviceTranslatedAddress」フィールドから取得されます。 |
dst | target.ip | 値は、解析された JSON ペイロードの「dst」フィールドから取得されます。 |
dpt | target.port | 値は、解析された JSON ペイロードの「dpt」フィールドから取得され、整数に変換されます。 |
eventId | additional.fields.value.string_value | 値は、解析された JSON ペイロードの「eventId」フィールドから取得されます。 |
externalId | metadata.product_log_id | 値は、解析された JSON ペイロードの「externalId」フィールドから取得されます。 |
ホスト名 | principal.hostname | 値は、Grok パターンによって抽出された「hostname」フィールドから取得されます。 |
log_category | metadata.log_type | 値は、Grok パターンによって抽出された「log_category」フィールドから取得されます。 |
log_type | metadata.product_event_type | 値は、Grok パターンによって抽出された「log_type」フィールドから取得されます。 |
メッセージ | このフィールドは解析され、ログカテゴリに応じてさまざまなフィールドが抽出されます。 | |
nitroURL | このフィールドは、UDM の IDM オブジェクトにマッピングされていません。 | |
pid | principal.process.pid | 値は、Grok パターンによって抽出された「pid」フィールドから取得されます。 |
process_id | about.process.pid | 値は、Grok パターンによって抽出された「process_id」フィールドから取得されます。 |
proto | network.ip_protocol | 値は、解析された JSON ペイロードの「proto」フィールドから取得され、対応する IP プロトコルにマッピングされます。 |
rhost | principal.ip | 値は、Grok パターンによって抽出された「rhost」フィールドから取得され、IP アドレスとして解析されます。 |
shost | principal.hostname | 値は、解析された JSON ペイロードの「shost」フィールドから取得されます。 |
sntdom | principal.administrative_domain | 値は、解析された JSON ペイロードの「sntdom」フィールドから取得されます。 |
spt | principal.port | 値は、解析された JSON ペイロードの「spt」フィールドから取得され、整数に変換されます。 |
src | principal.ip | 値は、解析された JSON ペイロードの「src」フィールドから取得されます。 |
時間 | timestamp | 値は、Grok パターンによって抽出された「time」フィールドから取得され、タイムスタンプとして解析されます。 |
type | metadata.product_event_type | 値は、kv フィルタによって抽出された「type」フィールドから取得されます。 |
uid | principal.user.userid | 値は、kv フィルタによって抽出された「uid」フィールドから取得されます。 |
metadata.event_type | metadata.event_type | 値は、イベント名とログ内の他のフィールドに基づいて設定されます。イベントタイプを決定するロジックは次のとおりです: - イベント名に「TCP」が含まれている場合、イベントタイプは「NETWORK_CONNECTION」に設定されます。- イベント名に「Mail」が含まれている場合、イベントタイプは「EMAIL_TRANSACTION」に設定されます。- イベント名に「HTTP」または「http」が含まれている場合、イベントタイプは「NETWORK_HTTP」に設定されます。- イベント名に「User Accessed」または「denied by access-list」が含まれている場合、イベントタイプは「USER_RESOURCE_ACCESS」に設定されます。- イベント名に「Data Source Idle」が含まれている場合、イベントタイプは「STATUS_UPDATE」に設定されます。- イベント名に「Comm with snowflex」が含まれている場合、イベントタイプは「SERVICE_UNSPECIFIED」に設定されます。- イベント名に「An account was successfully logged on」が含まれている場合、イベントタイプは「USER_LOGIN」に設定されます。- イベント名に「Initialization status for service objects」が含まれている場合、イベントタイプは「GENERIC_EVENT」に設定されます。- 上記の条件がいずれも満たされない場合、イベントタイプは「GENERIC_EVENT」に設定されます。 |
metadata.vendor_name | metadata.vendor_name | 値は「MCAFEE」に設定されます。 |
network.direction | network.direction | 解析された JSON ペイロードの「deviceDirection」フィールドが 0 の場合、この値は「INBOUND」に設定されます。それ以外の場合は「OUTBOUND」に設定されます。 |
security_result.severity | security_result.severity | 値は、解析された JSON ペイロードの「cef_event_severity」フィールドが 1 の場合は「LOW」、2 の場合は「MEDIUM」、3 の場合は「HIGH」、9 の場合は「CRITICAL」に設定されます。 |
変更
2024-03-21
- 新しく作成されたパーサー。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps の専門家から回答を得る。