Fortinet FortiWeb のログを収集する

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

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

このパーサーは、Fortinet FortiWeb KV 形式のログからフィールドを抽出します。grok または kv を使用してログ メッセージを解析し、これらの値を統合データモデル(UDM)にマッピングします。また、イベントのソースとタイプのデフォルトのメタデータ値も設定します。

始める前に

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

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • Fortinet FortiWeb ウェブ インターフェースへの特権アクセス

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。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
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sc query observiq-otel-collector
    

サービスは RUNNING と表示されます。

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
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    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/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'FORTINET_FORTIWEB'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

構成パラメータ

  • 各プレースホルダを次のように置き換えます。

    • レシーバーの構成:

      • udplog: UDP Syslog には udplog、TCP Syslog には tcplog を使用します。
      • 0.0.0.0: リッスンする IP アドレス(すべてのインターフェースでリッスンする場合は 0.0.0.0
      • 514: リッスンするポート番号(標準の syslog ポート)
    • エクスポータの構成:

      • creds_file_path: 取り込み認証ファイルのフルパス:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: 「顧客 ID を取得する」セクションの顧客 ID
      • endpoint: リージョン エンドポイント URL:
        • 米国: malachiteingestion-pa.googleapis.com
        • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
        • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
        • 完全なリストについては、リージョン エンドポイントをご覧ください。
      • log_type: Chronicle に表示されるログタイプ(FORTINET_FORTIWEB

構成ファイルを保存する

  • 編集後、ファイルを保存します。
    • Linux: Ctrl+OEnterCtrl+X の順に押します。
    • Windows: [ファイル>保存] をクリックします。

Bindplane エージェントを再起動して変更を適用する

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart observiq-otel-collector
    
    1. サービスが実行されていることを確認します。

        sudo systemctl status observiq-otel-collector
      
    2. ログでエラーを確認します。

        sudo journalctl -u observiq-otel-collector -f
      
  • Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を開きます。

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • サービス コンソール:

      1. Win+R キーを押し、「services.msc」と入力して Enter キーを押します。
      2. observIQ OpenTelemetry Collector を見つけます。
      3. 右クリックして [再起動] を選択します。

      4. サービスが実行されていることを確認します。

        sc query observiq-otel-collector
        
      5. ログでエラーを確認します。

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Fortinet FortiWeb の syslog 転送を構成する

  1. FortiWeb ウェブ インターフェースにログインします。
  2. [Log & Report] > [Log Config] > [Other Log Settings] に移動します。
  3. [Syslog Policy] で、[Create New] をクリックして新しい syslog ポリシーを追加します。
  4. 次の構成の詳細を指定します。
    • ポリシー名: わかりやすい名前を入力します(例: Google-SecOps-Bindplane)。
    • IP アドレス: Bindplane エージェント ホストの IP アドレスを入力します。
    • ポート: 「514」と入力します。
    • 有効にする: [有効にする] を選択します。
    • ファシリティ: local0(または任意のファシリティ)を選択します。
    • ログレベル: [情報](または任意のレベル)を選択します。
  5. [ログの種類] セクションで、次の項目を有効にします。
    • 攻撃ログ
    • イベントログ
    • トラフィック ログ
  6. [OK] をクリックして保存します。
  7. Bindplane エージェントのログを確認して、syslog メッセージが送信されていることを確認します。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
アクション additional.fields[].value.string_value 値は直接マッピングされます。
アクション security_result.action_details アクションが「Allow」または「accept」の場合、security_result.action_details は「ALLOW」に設定されます。アクションが「Denied」、「deny」、「block」、「Block」の場合、security_result.action_details は「BLOCK」に設定されます。
アプリ network.application_protocol 値は大文字に変換された後、直接マッピングされます。値が HTTPS、HTTP、DNS、DHCP、SMB のいずれかの場合のみ。
app_name additional.fields[].key キーが「appName」に設定されます。
app_name additional.fields[].value.string_value 値は直接マッピングされます。
backend_service additional.fields[].key キーが「backend_service」に設定されます。
backend_service additional.fields[].value.string_value 値は直接マッピングされます。
security_result.category_details 値は直接マッピングされます。
client_level security_result.category client_level が「Malicious」の場合、security_result.category は「NETWORK_MALICIOUS」に設定されます。
cn1 additional.fields[].value.string_value threatWeight フィールドにマッピングされます。
cn1Label additional.fields[].key キーが cn1Label 値に設定されます。
cn2 additional.fields[].value.string_value length フィールドにマッピングされます。
cn2Label additional.fields[].key キーが cn2Label 値に設定されます。
cn3 additional.fields[].value.string_value signatureID フィールドにマッピングされます。
cn3Label additional.fields[].key キーが cn3Label 値に設定されます。
cs1 additional.fields[].value.string_value 値は直接マッピングされます。
cs1Label additional.fields[].key キーが cs1Label 値に設定されます。
cs1 principal.user.product_object_id cs1Label が「userID」と一致する場合(大文字と小文字を区別しない)、値は直接マッピングされます。
cs2 additional.fields[].value.string_value 値は直接マッピングされます。
cs2Label additional.fields[].key キーが cs2Label 値に設定されます。
cs2 principal.user.userid cs2Label が「userName」(大文字と小文字を区別しない)と一致し、suid が空の場合、値は直接マッピングされます。
cs3 additional.fields[].value.string_value 値は直接マッピングされます。
cs3Label additional.fields[].key キーが cs3Label 値に設定されます。
cs3 metadata.severity cs3Label が「level」で、cs3 が空でない場合、値は直接マッピングされます。
cs4 additional.fields[].value.string_value subType フィールドにマッピングされます。
cs4Label additional.fields[].key キーが cs4Label 値に設定されます。
cs5 additional.fields[].value.string_value threatLevel フィールドにマッピングされます。
cs5Label additional.fields[].key キーが cs5Label 値に設定されます。
cs6 additional.fields[].value.string_value owaspTop10 フィールドにマッピングされます。
cs6Label additional.fields[].key キーが cs6Label 値に設定されます。
日付 metadata.event_timestamp.seconds 時刻と組み合わされ、解析されてエポック秒が生成されます。
dev_id principal.resource.id 値は直接マッピングされます。
devname principal.resource.name 値は直接マッピングされます。
device_event_class_id metadata.product_event_type CEF の解析で使用されます。
device_product metadata.product_name CEF の解析で使用されます。
device_vendor metadata.vendor_name CEF の解析で使用されます。
device_version metadata.product_version CEF の解析で使用されます。
dhost target.hostname 値は直接マッピングされます。
dpt target.port 値は直接マッピングされ、整数に変換されます。
dst target.ip 値は直接マッピングされます。
dst_port target.port 値は直接マッピングされ、整数に変換されます。
dstepid target.process.pid 値は直接マッピングされます。
dsteuid target.user.userid 値は直接マッピングされます。
event_name metadata.product_event_type CEF の解析で使用されます。
http_agent network.http.parsed_user_agent 値はユーザー エージェント文字列として解析されます。
http_method network.http.method 値は直接マッピングされます。
http_refer network.http.referral_url 値は直接マッピングされます。
http_session_id network.session_id 値は直接マッピングされます。
http_url target.url 値は直接マッピングされます。
http_version metadata.product_version 値は直接マッピングされます。
長さ additional.fields[].key キーが「length」に設定されます。
長さ additional.fields[].value.string_value 値は直接マッピングされます。
log_type metadata.log_type 「FORTINET_FORTIWEB」にハードコードされます。
main_type additional.fields[].key キーが「mainType」に設定されます。
main_type additional.fields[].value.string_value 値は直接マッピングされます。
メッセージ 各種フィールド grok フィルタと kv フィルタを使用して解析し、さまざまなフィールドを抽出します。
ml_allow_method additional.fields[].key キーが「ml_allow_method」に設定されます。
ml_allow_method additional.fields[].value.string_value 値は直接マッピングされます。
ml_arg_dbid additional.fields[].key キーが「ml_arg_dbid」に設定されます。
ml_arg_dbid additional.fields[].value.string_value 値は直接マッピングされます。
ml_domain_index additional.fields[].key キーは「ml_domain_index」に設定されます。
ml_domain_index additional.fields[].value.string_value 値は直接マッピングされます。
ml_log_arglen additional.fields[].key キーは「ml_log_arglen」に設定されます。
ml_log_arglen additional.fields[].value.string_value 値は直接マッピングされます。
ml_log_hmm_probability additional.fields[].key キーは「ml_log_hmm_probability」に設定されます。
ml_log_hmm_probability additional.fields[].value.string_value 値は直接マッピングされます。
ml_log_sample_arglen_mean additional.fields[].key キーは「ml_log_sample_arglen_mean」に設定されます。
ml_log_sample_arglen_mean additional.fields[].value.string_value 値は直接マッピングされます。
ml_log_sample_prob_mean additional.fields[].key キーは「ml_log_sample_prob_mean」に設定されます。
ml_log_sample_prob_mean additional.fields[].value.string_value 値は直接マッピングされます。
ml_svm_accuracy additional.fields[].key キーは「ml_svm_accuracy」に設定されます。
ml_svm_accuracy additional.fields[].value.string_value 値は直接マッピングされます。
ml_svm_log_main_types additional.fields[].key キーは「ml_svm_log_main_types」に設定されます。
ml_svm_log_main_types additional.fields[].value.string_value 値は直接マッピングされます。
ml_svm_log_match_types additional.fields[].key キーは「ml_svm_log_match_types」に設定されます。
ml_svm_log_match_types additional.fields[].value.string_value 値は直接マッピングされます。
ml_url_dbid additional.fields[].key キーは「ml_url_dbid」に設定されます。
ml_url_dbid additional.fields[].value.string_value 値は直接マッピングされます。
monitor_status additional.fields[].key キーが「monitor_status」に設定されます。
monitor_status additional.fields[].value.string_value 値は直接マッピングされます。
msg metadata.description 値は直接マッピングされます。
owasp_top10 additional.fields[].key キーは「owaspTop10」に設定されます。
owasp_top10 additional.fields[].value.string_value 値は直接マッピングされます。
principal_app principal.application 値は直接マッピングされます。
principal_host principal.hostname 値は直接マッピングされます。
proto network.ip_protocol 値は、大文字に変換された後で直接マッピングされます。
リクエスト target.url 値は直接マッピングされます。
requestMethod network.http.method 値は直接マッピングされます。
rt metadata.event_timestamp.seconds エポックからのミリ秒数として解析され、秒数に変換されます。
security_result.severity security_result.severity severity_level から取得されます。未加工のログ値に基づいて、さまざまな UDM の重大度値にマッピングされます。一致するものが見つからない場合、デフォルトは UNKNOWN_SEVERITY です。
server_pool_name additional.fields[].key キーは「server_pool_name」に設定されます。
server_pool_name additional.fields[].value.string_value 値は直接マッピングされます。
サービス network.application_protocol 値は大文字に変換された後、直接マッピングされます。
サービス target.application HTTPS、HTTP、DNS、DHCP、SMB のいずれでもない場合、値は大文字に変換されてから直接マッピングされます。
重要度 security_result.severity 重大度が空で、cs3Label が「level」の場合、cs3 の値が使用されます。次に、UDM の重大度値(LOW、HIGH など)にマッピングされます。
signature_id security_result.rule_id 値は直接マッピングされます。
signature_subclass security_result.detection_fields[].key キーが「signature_subclass」に設定されます。
signature_subclass security_result.detection_fields[].value 値は直接マッピングされます。
src principal.ip 値は直接マッピングされます。
src_country principal.location.country_or_region 値は直接マッピングされます。
src_ip principal.ip 値は直接マッピングされます。
src_port principal.port 値は直接マッピングされ、整数に変換されます。
srccountry principal.location.country_or_region 値は直接マッピングされます。
sub_type additional.fields[].key キーが「subType」に設定されます。
sub_type additional.fields[].value.string_value 値は直接マッピングされます。
subtype target.resource.resource_subtype 値は直接マッピングされます。
suid principal.user.userid 値は直接マッピングされます。
threat_level additional.fields[].key キーが「threatLevel」に設定されます。
threat_level additional.fields[].value.string_value 値は直接マッピングされます。
threat_weight security_result.detection_fields[].key キーは「threat_weight」に設定されます。
threat_weight security_result.detection_fields[].value 値は直接マッピングされます。
時間 metadata.event_timestamp.seconds 日付と組み合わされ、解析されてエポック秒が生成されます。
user_id principal.user.product_object_id 値は直接マッピングされます。
user_name additional.fields[].key キーが「userName」に設定されます。
user_name additional.fields[].value.string_value 値は直接マッピングされます。
user_name principal.user.userid 値は直接マッピングされます。
なし metadata.event_type principal.ip と target.ip の両方が存在する場合は、「NETWORK_CONNECTION」に設定されます。principal.ip と principal.user が存在する場合は、「USER_UNCATEGORIZED」に設定されます。principal.ip のみが存在する場合は「STATUS_UPDATE」に設定されます。それ以外の場合は、「GENERIC_EVENT」に設定されます。
なし metadata.log_type 「FORTINET_FORTIWEB」にハードコードされます。
なし metadata.product_name ログ形式に基づいて「FORTINET FORTIWEB」または「FortiWEB Cloud」にハードコードされます。
なし metadata.vendor_name ログ形式に基づいて「FORTINET」または「Fortinet」にハードコードされます。
なし principal.resource.resource_type dev_id が存在する場合は「DEVICE」にハードコードされます。

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