Fortinet FortiDDoS のログを収集する
このガイドでは、Bindplane エージェントを使用して Fortinet FortiDDoS ログを Google Security Operations に取り込む方法について説明します。
Fortinet FortiDDoS は、分散型サービス拒否攻撃からネットワークとアプリケーションを保護する DDoS 攻撃緩和アプライアンスです。FortiDDoS は、ネットワーク レイヤとアプリケーション レイヤの両方の攻撃に対して、リアルタイムの攻撃検出、自動軽減、詳細なレポートを提供します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス。
- Windows Server 2016 以降、または systemd を使用する Linux ホスト。
- Bindplane エージェントと Fortinet FortiDDoS アプライアンス間のネットワーク接続。
- プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
- ログとレポートの設定に対する読み取り / 書き込み権限を持つ FortiDDoS ウェブ インターフェースへの特権アクセス。
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インストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
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サービスが [アクティブ(実行中)] と表示されます。
その他のインストール リソース
その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
構成ファイルを見つける
Linux:
sudo nano /etc/bindplane-agent/config.yaml
Windows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
構成ファイルを編集します。
config.yaml の内容全体を次の構成に置き換えます。
receivers:
udplog:
listen_address: "0.0.0.0:514"
exporters:
chronicle/fortiddos:
compression: gzip
creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
customer_id: 'your-customer-id-here'
endpoint: malachiteingestion-pa.googleapis.com
log_type: FORTINET_FORTIDDOS
raw_log_field: body
ingestion_labels:
env: production
service:
pipelines:
logs/fortiddos_to_chronicle:
receivers:
- udplog
exporters:
- chronicle/fortiddos
構成パラメータ
各プレースホルダを次のように置き換えます。
レシーバーの構成:
listen_address: リッスンする IP アドレスとポート。0.0.0.0:514を使用して、ポート 514 のすべてのインターフェースをリッスンします。
エクスポータの構成:
creds_file_path: 取り込み認証ファイルのフルパス:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: 前の手順の顧客 ID。endpoint: リージョン エンドポイント URL:- 米国:
malachiteingestion-pa.googleapis.com - ヨーロッパ:
europe-malachiteingestion-pa.googleapis.com - アジア:
asia-southeast1-malachiteingestion-pa.googleapis.com - 完全なリストについては、リージョン エンドポイントをご覧ください。
- 米国:
log_type:FORTINET_FORTIDDOSでなければなりません。ingestion_labels: YAML 形式の省略可能なラベル。
構成ファイルを保存する
編集が完了したら、ファイルを保存します。
- Linux:
Ctrl+O、Enter、Ctrl+Xの順に押します。 - Windows: [ファイル>保存] をクリックします。
Bindplane エージェントを再起動して変更を適用する
Linux
sudo systemctl restart observiq-otel-collectorサービスが実行されていることを確認します。
sudo systemctl status observiq-otel-collectorログでエラーを確認します。
sudo journalctl -u observiq-otel-collector -f
Windows
次のいずれかのオプションを選択します。
管理者としてコマンド プロンプトまたは PowerShell を使用します。
net stop observiq-otel-collector && net start observiq-otel-collectorServices コンソールを使用する場合:
Win+Rキーを押し、「services.msc」と入力して Enter キーを押します。- observIQ OpenTelemetry Collector を見つけます。
右クリックして [再起動] を選択します。
サービスが実行されていることを確認します。
sc query observiq-otel-collectorログでエラーを確認します。
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
FortiDDoS イベントログのリモート ロギングを構成する
FortiDDoS は、システム イベントのイベントログと DDoS 攻撃イベントの攻撃ログという 2 種類のリモート syslog ロギングをサポートしています。包括的なログを Google SecOps に送信するように両方を構成します。
- FortiDDoS ウェブ インターフェースにログインします。
- [Log & Report] > [Log Configuration] > [Event Log Remote] に移動します。
- [追加] をクリックして、新しいリモートログサーバー構成を作成します。
- 次の構成の詳細を指定します。
- 名前: わかりやすい名前を入力します(例:
Chronicle-Event-Logs)。 - アドレス: Bindplane エージェント ホストの IP アドレスを入力します。
- ポート: 「
514」と入力します。 - 最小ログレベル: 転送する最小重大度レベルを選択します(例: 情報、通知)。
- ファシリティ: syslog ファシリティ(local0 など)を選択します。
- 名前: わかりやすい名前を入力します(例:
- [保存] をクリックして、構成を保存します。
FortiDDoS 攻撃ログのリモート ロギングを構成する
攻撃ログのリモート ロギングは、サービス保護プロファイル(SPP)ごとに構成されます。モニタリングする SPP ごとに攻撃ログ転送を構成する必要があります。
- FortiDDoS ウェブ インターフェースにログインします。
- [Log & Report] > [Log Configuration] > [Attack Log Remote] に移動します。
- [追加] をクリックして、新しいリモートログサーバー構成を作成します。
- 次の構成の詳細を指定します。
- 名前: わかりやすい名前を入力します(例:
Chronicle-Attack-Logs)。 - SPP: 構成するサービス保護プロファイルを選択します。
- アドレス: Bindplane エージェント ホストの IP アドレスを入力します。
- ポート: 「
514」と入力します。 - 間隔: レポートの間隔(1 分や 5 分など)を選択します。
- 名前: わかりやすい名前を入力します(例:
- [保存] をクリックして、構成を保存します。
モニタリングする SPP ごとに手順 3 ~ 5 を繰り返します。
syslog 転送を確認する
リモート ロギングを構成したら、ログが Bindplane エージェントに送信されていることを確認します。
Bindplane エージェント ホストで、受信 syslog トラフィックをモニタリングします。
Linux:
sudo tcpdump -i any -n port 514Windows:
ネットワーク モニタリング ツールを使用するか、Bindplane エージェントのログを確認します。
FortiDDoS アプライアンスで、テスト ログメッセージを生成します。
イベントログのテスト:
- FortiDDoS ウェブ インターフェースで構成を変更して、イベントログを生成します。
攻撃ログのテスト:
- 設定されたレポート間隔(1 分または 5 分)まで待ちます。FortiDDoS は定期的にレポートを作成し、レポートの集計にさらに 2 分かかります。たとえば、5 分の時点で報告されたログは、7 分の時点で syslog サーバーに表示されます。
5 ~ 10 分以内にログが Google SecOps コンソールに表示されることを確認します。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
| 追加の | 追加の | 値を直接コピー |
| additional.fields.additional_label.key | 「type」に設定 | |
| type | additional.fields.additional_label.value.string_value | 値を直接コピー |
| additional.fields.src_label.key | 「device_id」に設定 | |
| devid | additional.fields.src_label.value.string_value | 値を直接コピー |
| log_id | security_result.detection_fields.log_id_label.value | 値を直接コピー |
| security_result.detection_fields.log_id_label.key | 「log_id」に設定 | |
| メタデータ | メタデータ | 値を直接コピー |
| desc_Data | metadata.description | 値を直接コピー |
| sip、dip、user | metadata.event_type | sip と dip が空でない場合は「NETWORK_CONNECTION」、user が空でない場合は「USER_UNCATEGORIZED」、sip が空でない場合は「STATUS_UPDATE」、それ以外の場合は「GENERIC_EVENT」に設定します。 |
| network | network | 値を直接コピー |
| プリンシパル | プリンシパル | 値を直接コピー |
| sip | principal.asset.ip | 値を直接コピー |
| sip | principal.ip | 値を直接コピー |
| date,time,tz | principal.labels.date_label.value | 日付、時刻、タイムゾーンをスペースで連結 |
| principal.labels.date_label.key | 「date」に設定 | |
| dir | principal.labels.direction_label.value | 値を直接コピー |
| principal.labels.direction_label.key | 「direction」に設定 | |
| dport | principal.port | 整数に変換しました |
| ユーザー | principal.user.userid | 値を直接コピー |
| security_result | security_result | 値を直接コピー |
| direction | security_result.detection_fields.direction_label.value | 値を直接コピー |
| security_result.detection_fields.direction_label.key | 「direction」に設定 | |
| dropcount | security_result.detection_fields.dropcount_label.value | 値を直接コピー |
| security_result.detection_fields.dropcount_label.key | 「dropcount」に設定 | |
| evecode | security_result.detection_fields.evecode_label.value | 値を直接コピー |
| security_result.detection_fields.evecode_label.key | 「evecode」に設定 | |
| evesubcode | security_result.detection_fields.evesubcode_label.value | 値を直接コピー |
| security_result.detection_fields.evesubcode_label.key | 「evesubcode」に設定 | |
| facility | security_result.detection_fields.facility_label.value | 値を直接コピー |
| security_result.detection_fields.facility_label.key | 「facility」に設定 | |
| レベル | security_result.detection_fields.level_label.value | 値を直接コピー |
| security_result.detection_fields.level_label.key | 「level」に設定 | |
| msg_id | security_result.detection_fields.msg_id_label.value | 値を直接コピー |
| security_result.detection_fields.msg_id_label.key | 「msg_id」に設定します。 | |
| spp_name | security_result.detection_fields.spp_name_label.value | 値を直接コピー |
| security_result.detection_fields.spp_name_label.key | 「spp_name」に設定 | |
| spp | security_result.detection_fields.spp_label.value | 値を直接コピー |
| security_result.detection_fields.spp_label.key | 「spp」に設定 | |
| sppoperatingmode | security_result.detection_fields.sppoperatingmode_label.value | 値を直接コピー |
| security_result.detection_fields.sppoperatingmode_label.key | 「sppoperatingmode」に設定 | |
| subnet_name | security_result.detection_fields.subnet_name_label.value | 値を直接コピー |
| security_result.detection_fields.subnet_name_label.key | 「subnet_name」に設定します。 | |
| subnetid | security_result.detection_fields.subnetid_label.value | 値を直接コピー |
| security_result.detection_fields.subnetid_label.key | 「subnetid」に設定します。 | |
| subtype | security_result.detection_fields.subtype_label.value | 値を直接コピー |
| security_result.detection_fields.subtype_label.key | 「subtype」に設定します。 | |
| ターゲット | ターゲット | 値を直接コピー |
| dip | target.asset.ip | 値を直接コピー |
| dip | target.ip | 値を直接コピー |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。