Fortinet FortiMail のログを収集する

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

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

Fortinet FortiMail は、メール トランザクション、スパム フィルタリング、ウイルス検出、認証イベント、ポリシー適用に関する syslog メッセージを生成するメール セキュリティ ゲートウェイです。パーサーは、Key-Value ペアを抽出し、タイムスタンプと IP アドレスを正規化して、Unified Data Model(UDM)にマッピングします。

始める前に

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

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

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

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。
  4. 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
    

    サービスが [active (running)] と表示されます。

その他のインストール リソース

その他のインストール オプションとトラブルシューティングについては、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/fortinet_fortimail:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: FORTINET_FORTIMAIL
            raw_log_field: body
    
    service:
        pipelines:
            logs/fortinet_fortimail_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/fortinet_fortimail
    

構成パラメータ

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

  • レシーバーの構成:

    • listen_address: リッスンする IP アドレスとポート:
      • すべてのインターフェースでリッスンする 0.0.0.0(推奨)
      • ポート 514 は標準の syslog ポートです(Linux で root が必要。root 以外の場合は 1514 を使用)
  • エクスポータの構成:

    • creds_file_path: 取り込み認証ファイルのフルパス:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: Google SecOps コンソールからコピーしたお客様 ID
    • endpoint: リージョナル エンドポイント URL:
      • 米国: malachiteingestion-pa.googleapis.com
      • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
      • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
      • 完全なリストについては、リージョン エンドポイントをご覧ください。

構成ファイルを保存する

  • 編集後、ファイルを保存します。
    • 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 FortiMail syslog を構成する

  1. FortiMail デバイスのウェブ インターフェースにログインします。
  2. [Log & Report] > [Log Settings] > [Remote] を選択します。
  3. [新規] をクリックして、新しいエントリを作成します。
  4. 表示されたダイアログで、[有効にする] を選択して、リモートホストへのロギングを許可します。
  5. 以下の詳細を入力します。
    • 名前: 一意でわかりやすい名前を入力します。
    • サーバー名/IP: Bindplane の IP アドレスを入力します。
    • サーバーポート: Bindplane UDP ポート番号を入力します。
    • レベル: 重大度レベルとして [情報] を選択します。
    • 施設: 一意の施設識別子を入力し、他のネットワーク デバイスが同じ施設識別子を使用していないことを確認します。
    • [CSV 形式] の選択を解除します。
    • ログ プロトコル: [Syslog] を選択します。
    • ロギング ポリシーの構成: すべてのタイプのイベントまたはログを転送できるようにします。
  6. [作成] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
authid read_only_udm.target.user.email_addresses authid フィールドに @ が含まれている場合は、このフィールドにマッピングします。
authid read_only_udm.target.user.userid authid フィールドをこのフィールドにマッピングします
暗号 read_only_udm.network.tls.cipher cipher フィールドをこのフィールドにマッピングします
client_ip read_only_udm.principal.ip client_ip フィールドをこのフィールドにマッピングします
client_name read_only_udm.principal.hostname client_name フィールドをこのフィールドにマッピングします
詳細 read_only_udm.security_result.summary detail フィールドをこのフィールドにマッピングします
device_id read_only_udm.principal.resource.id device_id フィールドをこのフィールドにマッピングします
devname read_only_udm.principal.resource.name devname フィールドをこのフィールドにマッピングします
direction read_only_udm.network.direction direction フィールドが out と等しい場合は値 OUTBOUND をマッピングし、direction フィールドが in と等しい場合は値 INBOUND をマッピングし、それ以外の場合は値 UNKNOWN_DIRECTION をマッピングします。
disposition read_only_udm.security_result.detection_fields.value キーフィールドが Disposition の場合、disposition フィールドをこのフィールドにマッピングします。
ドメイン read_only_udm.principal.administrative_domain domain フィールドをこのフィールドにマッピングします
dst_ip read_only_udm.target.ip dst_ip フィールドをこのフィールドにマッピングします
from read_only_udm.network.email.from from フィールドに @ が含まれている場合は、このフィールドにマッピングします。
log_id read_only_udm.metadata.product_log_id log_id フィールドをこのフィールドにマッピングします
message_id read_only_udm.network.email.mail_id message_id フィールドをこのフィールドにマッピングします
message_length read_only_udm.additional.fields.value.number_value キーフィールドが message_length の場合、message_length フィールドをこのフィールドにマッピングします。
msg read_only_udm.security_result.description msg フィールドをこのフィールドにマッピングします
polid read_only_udm.security_result.detection_fields.value キーフィールドが Polid の場合、polid フィールドをこのフィールドにマッピングします。
リレー read_only_udm.intermediary.ip relay フィールドをこのフィールドにマッピングします
解決済み read_only_udm.security_result.detection_fields.value キーフィールドが Resolved の場合、resolved フィールドをこのフィールドにマッピングします。
session_id read_only_udm.network.session_id session_id フィールドをこのフィールドにマッピングします
src_type read_only_udm.additional.fields.value.string_value キーフィールドが src_type の場合、src_type フィールドをこのフィールドにマッピングします。
stat read_only_udm.metadata.description stat フィールドをこのフィールドにマッピングします
件名 read_only_udm.network.email.subject subject フィールドをこのフィールドにマッピングします
read_only_udm.network.email.to to フィールドに @ が含まれている場合は、このフィールドにマッピングします。
ユーザー read_only_udm.principal.user.userid user フィールドをこのフィールドにマッピングします
なし read_only_udm.extensions.auth.mechanism authid フィールドが存在する場合、このフィールドの値はパーサーコードで USERNAME_PASSWORD としてハードコードされます。
なし read_only_udm.extensions.auth.type authid フィールドが存在する場合、このフィールドの値はパーサーコードで AUTHTYPE_UNSPECIFIED としてハードコードされます。
なし read_only_udm.metadata.event_type このフィールドの値は、使用可能なフィールドの組み合わせに基づいてパーサー ロジックによって決定されます。from フィールドが存在する場合、値は EMAIL_TRANSACTIONto フィールドが存在する場合、値は EMAIL_UNCATEGORIZEDclient_ip フィールドと dst_ip フィールドの両方が存在する場合、値は NETWORK_CONNECTIONauthid フィールドが存在する場合、値は USER_LOGINuser フィールドが存在する場合、値は USER_UNCATEGORIZEDclient_ip フィールドが存在する場合、値は STATUS_UPDATE。それ以外の場合、値は GENERIC_EVENT
なし read_only_udm.metadata.log_type このフィールドの値は、パーサーコードで FORTINET_FORTIMAIL としてハードコードされています。
なし read_only_udm.metadata.product_name このフィールドの値は、パーサーコードで FORTINET_FORTIMAIL としてハードコードされています。
なし read_only_udm.metadata.vendor_name このフィールドの値は、パーサーコードで FORTINET としてハードコードされています。
なし read_only_udm.principal.resource.resource_type このフィールドの値は、パーサーコードで DEVICE としてハードコードされています。

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