ESET AV ログを収集する
パーサーのバージョン: 6.0
このドキュメントでは、Bindplane エージェントを使用して ESET ウイルス対策ログを Google Security Operations に取り込む方法について説明します。
ESET は、脅威の検出、ファイアウォール イベント、HIPS アラート、監査アクションに関する syslog メッセージを生成するエンドポイント セキュリティ ソリューションです。パーサーは、JSON 形式の syslog から Key-Value ペアを抽出し、統合データモデル(UDM)にマッピングします。
始める前に
次の前提条件を満たしていることを確認してください。
Google SecOps インスタンス
Windows Server 2016 以降、または
systemdを使用する Linux ホストBindplane エージェントと ESET PROTECT サーバー間のネットワーク接続
プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
ESET PROTECT コンソール(オンプレミスまたはクラウド)への特権アクセス
Bindplane エージェントの Google SecOps 認証情報を取得する
Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。
- 新規デプロイ: Chronicle API を使用します(オプション 1)。
- 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
オプション 1: Chronicle API のサービス アカウントを作成する(推奨)
- Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
- [IAM と管理] > [サービス アカウント] に移動します。
- [サービス アカウントを作成] をクリックします。
- 次の構成情報を指定します。
- サービス アカウント名: アカウントの名前を入力します(例:
bindplane-ingest)。 - サービス アカウントの説明: 説明を入力します(例:
Bindplane agent log ingestion)。
- サービス アカウント名: アカウントの名前を入力します(例:
- [作成して続行] をクリックします。
- [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
- [続行] をクリックして [完了] をクリックします。
- 作成したサービス アカウントをクリックし、[キー] タブに移動します。
- [鍵を追加] > [新しい鍵を作成] の順にクリックします。
- [JSON] を選択し、[作成] をクリックします。鍵ファイルがパソコンにダウンロードされます。
- 鍵ファイルを
ingestion-auth.jsonとして Bindplane コレクタ ディレクトリ(Linux の場合は/opt/observiq-otel-collector/ingestion-auth.json、Windows の場合はC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)に保存するか、config.yamlのcreds_file_pathを更新して、保存先のパスと一致させます。 - [IAM と管理] > [設定] に移動し、プロジェクト番号をコピーします。これはエクスポータの構成に必要です。
オプション 2: 取り込み認証ファイルをダウンロードする(レガシー)
- Google SecOps コンソールにログインします。
- [設定] > [データ管理] > [収集エージェント] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [収集エージェント] に移動します。
- 取り込み認証ファイルをダウンロードします。
- Bindplane エージェントがインストールされるシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [Settings] > [Administration] > [Profile] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [プロファイル] に移動します。
[組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows へのインストール
- 管理者としてコマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietインストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
sc query observiq-otel-collectorサービスが RUNNING と表示されます。
Linux へのインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shインストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
sudo systemctl status observiq-otel-collectorサービスが active (running) と表示されます。
その他のインストール リソース
その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。
syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
構成ファイルを探す
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
構成ファイルを編集します。
config.yamlの内容全体を次の構成に置き換えます。receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/eset_av: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: ESET_AV raw_log_field: body service: pipelines: logs/eset_av_to_chronicle: receivers: - udplog exporters: - chronicle/eset_av
構成パラメータ
各プレースホルダを次のように置き換えます。
レシーバーの構成:
listen_address: リッスンする IP アドレスとポート。0.0.0.0: すべてのインターフェースでリッスンします(推奨)。- ポート
514は標準の syslog ポートです(Linux では root が必要です。root 以外の場合は1514を使用します)。
エクスポータの構成:
creds_file_path: サービス アカウントの JSON キーファイルのフルパス(オプション 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Google SecOps コンソールからコピーしたお客様 IDlocation:<LOCATION>は、Google SecOps インスタンスのリージョン(us、europe、asia-southeast1など)に置き換えます。エクスポーターは、chronicle.googleapis.comの前にこの値を付加します。完全なリストについては、リージョン エンドポイントをご覧ください。project:<PROJECT_NUMBER>を、[IAM と管理] > [設定] のプロジェクト番号に置き換えます。endpoint:chronicle.googleapis.comに設定したままにします。
以前の Ingestion API エクスポータ
オプション 2 の取り込み認証ファイルを使用する場合は、
exportersブロックを次のように置き換えます。creds_file_pathを取り込み認証ファイルのパスに設定します。インスタンスが米国以外にある場合は、malachiteingestion-pa.googleapis.comをリージョン エンドポイント(例:europe-malachiteingestion-pa.googleapis.com)に置き換えます。exporters: chronicle/eset_av: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: ESET_AV raw_log_field: body
構成ファイルを保存する
- 編集が完了したら、ファイルを保存します。
- Linux:
Ctrl+O、Enter、Ctrl+Xの順に押します。 - Windows の場合: [ファイル] > [保存] をクリックします。
- Linux:
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"
ESET PROTECT オンプレミスで syslog を構成する
- ESET PROTECT ウェブコンソールにログインします。
- [More] > [Settings] > [Advanced Settings] > [Syslog Server] をクリックします。
- [Syslog を有効にする] スイッチを切り替えて、Syslog を有効にします。
- 次の構成情報を指定します。
- ホスト: Bindplane エージェントの IP アドレスを入力します。
- ポート: 「
514」と入力します。 - 形式: [Syslog] を選択します。
- Transport: [UDP] を選択します。
- トレースログの詳細度: [情報] を選択します。
- Export logs to Syslog: [Enable] に設定します。
- エクスポートされたログの形式: [JSON] を選択します。
- [保存] をクリックします。
ESET PROTECT Cloud で syslog を構成する
- ESET PROTECT Cloud コンソールにログインします。
- [More] > [Settings] > [Syslog サーバー] をクリックします。
- [Syslog を有効にする] スイッチを切り替えて、Syslog を有効にします。
- 次の構成情報を指定します。
- ペイロードの形式: [JSON] を選択します。
- Format of envelope: [Syslog] を選択します。
- 最小ログレベル: [情報] を選択します。
- ログに記録するイベントの種類: [すべて](または必要に応じて特定の種類)を選択します。
- 宛先 IP: Bindplane エージェントの IP アドレスを入力します。
- ポート: 「
514」と入力します。
- [保存] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
| アカウント | principal.administrative_domain | Grok パターン %{DATA:admin_domain}\\\\%{WORD:user_id} を使用して account フィールドから抽出されます。 |
| アカウント | principal.user.userid | Grok パターン %{DATA:admin_domain}\\\\%{WORD:user_id} を使用して account フィールドから抽出されます。 |
| アクション | security_result.action | action が Block(大文字と小文字を区別しない)の場合は、BLOCK に設定します。action が Start(大文字と小文字を区別しない)の場合は、ALLOW に設定します。 |
| action_taken | security_result.action_details | action_taken フィールドから直接マッピングされます。 |
| computer_severity_score | security_result.detection_fields | キー computer_severity_score と computer_severity_score フィールドの値を使用して Key-Value ペアが作成されます。このペアは security_result.detection_fields 配列に追加されます。 |
| 詳細 | security_result.description | detail フィールドから直接マッピングされます。 |
| ドメイン | principal.domain.name | domain フィールドから直接マッピングされます。 |
| eialarmid | security_result.detection_fields | キー eialarmid と eialarmid フィールドの値を使用して Key-Value ペアが作成されます。このペアは security_result.detection_fields 配列に追加されます。 |
| eiconsolelink | principal.url | eiconsolelink フィールドから直接マッピングされます。 |
| イベント | metadata.description | event から event_desc に名前が変更され、metadata.description にマッピングされます。 |
| event_type | metadata.product_event_type | event_type フィールドから直接マッピングされます。 |
| group_name | principal.group.group_display_name | group_name フィールドから直接マッピングされます。 |
| ハッシュ | principal.file.sha1 | 小文字に変換されている。小文字の値が SHA-1 正規表現と一致する場合、principal.file.sha1 にマッピングされます。 |
| ハッシュ | principal.resource.attribute.labels | キー hash と hash フィールドの値を使用して Key-Value ペアが作成されます。このペアは principal.resource.attribute.labels 配列に追加されます。 |
| hostname | principal.asset.hostname | hostname フィールドから直接マッピングされます。 |
| hostname | principal.hostname | hostname フィールドから直接マッピングされます。 |
| インバウンド | network.direction | true の場合は INBOUND に設定します。false の場合は OUTBOUND に設定します。 |
| ipv4 | target.asset.ip | target_address が空の場合、ipv4 フィールドから直接マッピングされます。 |
| ipv4 | target.ip | target_address が空の場合、ipv4 フィールドから直接マッピングされます。 |
| json_data | JSON として解析され、さまざまなフィールドが抽出されます。 | |
| メッセージ | grok を使用して解析し、timestamp、host、json_data を抽出します。 | |
| need_restart | additional.fields | キー need_restart と need_restart フィールドの値(文字列に変換)を使用して Key-Value ペアが作成されます。このペアは additional.fields 配列に追加されます。 |
| os_name | principal.platform | Window または window(大文字と小文字を区別しない)が含まれている場合は、WINDOWS に設定します。Linux または linux(大文字と小文字を区別しない)が含まれている場合は、LINUX に設定します。Mac または mac(大文字と小文字を区別しない)が含まれている場合は、MAC に設定します。 |
| os_name | principal.platform_version | os_name フィールドから直接マッピングされます。 |
| process_name | principal.process.file.full_path | process_name フィールドから直接マッピングされます。空の場合、processname の値が使用されます。 |
| processname | principal.process.file.full_path | process_name が空の場合、process_name にマッピングされます。 |
| プロトコル | network.ip_protocol | 大文字に変換されている。大文字の値が既知のプロトコル(TCP、UDP、ICMP など)と一致する場合、network.ip_protocol にマッピングされます。 |
| 結果 | security_result.summary | result フィールドから直接マッピングされます。 |
| rulename | security_result.rule_name | rulename フィールドから直接マッピングされます。 |
| scan_id | security_result.detection_fields | キー scan_id と scan_id フィールドの値を使用して Key-Value ペアが作成されます。このペアは security_result.detection_fields 配列に追加されます。 |
| scanner_id | security_result.detection_fields | キー scanner_id と scanner_id フィールドの値を使用して Key-Value ペアが作成されます。このペアは security_result.detection_fields 配列に追加されます。 |
| 重要度 | security_result.severity | Warn または warn(大文字と小文字を区別しない)が含まれている場合は、HIGH に設定します。Info または info が含まれている場合(大文字と小文字を区別しない)、LOW に設定します。 |
| severity_score | security_result.detection_fields | キー severity_score と severity_score フィールドの値を使用して Key-Value ペアが作成されます。このペアは security_result.detection_fields 配列に追加されます。 |
| source_address | principal.asset.ip | source_address フィールドから直接マッピングされます。 |
| source_address | principal.ip | source_address フィールドから直接マッピングされます。 |
| source_port | principal.port | 文字列に変換され、その後整数に変換されます。principal.port にマッピングされます。 |
| source_uuid | metadata.product_log_id | source_uuid フィールドから直接マッピングされます。 |
| ターゲット | 名前が target1 に変わりました。 |
|
| target_address | target.asset.ip | target_address フィールドから直接マッピングされます。 |
| target_address | target.ip | target_address フィールドから直接マッピングされます。 |
| target_port | target.port | 文字列に変換され、その後整数に変換されます。target.port にマッピングされます。 |
| threat_handled | security_result.detection_fields | キー threat_handled と threat_handled フィールドの値(文字列に変換)を使用して Key-Value ペアが作成されます。このペアは security_result.detection_fields 配列に追加されます。 |
| threat_name | security_result.threat_name | threat_name フィールドから直接マッピングされます。 |
| threat_type | security_result.threat_id | threat_type フィールドから直接マッピングされます。 |
| 時間 | metadata.event_timestamp | metadata.event_timestamp の入力に使用されます。 |
| ユーザー名 | principal.user.userid | user_id と user が空の場合、username フィールドから直接マッピングされます。 |
| ユーザー | principal.user.userid | user_id が空の場合、user フィールドから直接マッピングされます。 |
| metadata.event_type | source_address と target_address が空でない場合は、NETWORK_CONNECTION に設定します。それ以外の場合、has_user が true であれば USER_UNCATEGORIZED に設定します。それ以外の場合、has_principal が true であれば STATUS_UPDATE に設定します。それ以外の場合は GENERIC_EVENT に設定します。 |
|
| metadata.log_type | ESET_AV に設定します。 |
|
| metadata.product_name | ESET_AV に設定します。 |
|
| metadata.vendor_name | ESET_AV に設定します。 |
|
| intermediary.hostname | このフィールドの値は、ログ メッセージから抽出された host フィールドから取得されます。 |
|
| principal.user.userid | フィールド account が空でない場合、パーサーは grok パターンを使用して account フィールドからユーザー ID を抽出します。それ以外の場合は、user フィールドが空でないかどうかを確認し、空でない場合はその値を取得します。account と user の両方が空の場合、username フィールドが空でないかどうかを確認し、空でない場合はその値を取得します。 |
|
timestamp |
event.idm.read_only_udm.metadata.collected_timestamp |
変更履歴からマッピング |
event_id |
event.idm.read_only_udm.metadata.product_log_id |
変更履歴からマッピング |
process_pid |
event.idm.read_only_udm.principal.process.pid |
変更履歴からマッピング |
desc |
event.idm.read_only_udm.additional.fields |
変更履歴からマッピング |
occurred |
event.idm.read_only_udm.metadata.event_timestamp |
変更履歴からマッピング |
threatHandled |
event.idm.read_only_udm.security_result.detection_fields |
変更履歴からマッピング |
actionTaken |
event.idm.read_only_udm.security_result.action_details |
変更履歴からマッピング |
threatName |
event.idm.read_only_udm.security_result.threat_name |
変更履歴からマッピング |
threatType |
event.idm.read_only_udm.security_result.summary |
変更履歴からマッピング |
target |
target.resource.attribute.labels |
変更履歴からマッピング |
object_uri |
target.url |
変更履歴からマッピング |
severity |
security_result.severity_details |
変更履歴からマッピング |
threat_flags |
security_result.detection_fields |
変更履歴からマッピング |
category |
security_result.category_details |
変更履歴からマッピング |
object_type" and "engine_version |
principal.resource.attribute.labels |
変更履歴からマッピング |
circumstances |
security_result.description |
変更履歴からマッピング |
security_result_action |
BLOCK |
変更履歴からマッピング |
security_result_action |
ALLOW |
変更履歴からマッピング |
scan_id", "scanner_id", and "threat_handled |
security_result.detection_fields |
変更履歴からマッピング |
group_name |
principal.group_display_name |
変更履歴からマッピング |
変更ログ
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。