Ubiquiti Unifi スイッチのログを収集する

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

このドキュメントでは、Bindplane を使用して Ubiquiti Unifi スイッチのログを Google Security Operations に取り込む方法について説明します。パーサーは、grok パターンを使用して syslog メッセージからフィールドを抽出し、未加工のログデータを Unified Data Model(UDM)に準拠した構造化形式に変換します。さまざまなログ形式を処理し、タイムスタンプ、ホスト名、説明、ネットワークの詳細などのキー情報を抽出し、追加のコンテキストでデータを拡充してから、最終的な UDM イベントに統合します。

始める前に

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

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

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
    

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
    

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

Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

  1. 構成ファイルにアクセスします。

    1. config.yaml ファイルを見つけます。通常、Linux では /etc/bindplane-agent/ ディレクトリに、Windows ではインストール ディレクトリにあります。
    2. テキスト エディタ(nanovi、メモ帳など)を使用してファイルを開きます。
  2. config.yaml ファイルを次のように編集します。

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'UBIQUITI_SWITCH'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
    • <CUSTOMER_ID は、実際の顧客 ID に置き換えます。
    • /path/to/ingestion-authentication-file.json の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。

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

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

    sudo systemctl restart bindplane-agent
    
  • Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。

    net stop BindPlaneAgent && net start BindPlaneAgent
    

コントロール プレーンの Syslog を送信するように Ubiquiti スイッチを構成する

  1. Unifi Controller UI にログインします。
  2. Unifi Network を開きます。
  3. [設定> コントロール プレーン > [統合] タブ] に移動します。
  4. [アクティビティ ロギング](Syslog)セクションを見つけます。
  5. [SIEM サーバー] オプションを有効にします。
  6. 次の構成の詳細を指定します。
    • [カテゴリを編集] をクリックし、必要なログカテゴリを追加します。
    • サーバー アドレス: Bindplane エージェントの IP アドレスを入力します。
    • ポート: Bindplane エージェントのポート番号を入力します(UDP が必要です)。
  7. [変更を適用] をクリックします。

CyberSecure Syslog を送信するように Ubiquiti スイッチを構成する

  1. Unifi Controller UI にログインします。
  2. Unifi Network を開きます。
  3. [設定> CyberSecure > トラフィック ロギング] タブに移動します。
  4. [アクティビティ ロギング](Syslog)セクションを見つけます。
  5. [SIEM サーバー] オプションを有効にします。
  6. 次の構成の詳細を指定します。
    • [カテゴリを編集] をクリックし、必要なログカテゴリを追加します。
    • サーバー アドレス: Bindplane エージェントの IP アドレスを入力します。
    • ポート: Bindplane エージェントのポート番号を入力します(UDP が必要です)。
    • [デバッグログ] を無効にします。
  7. [変更を適用] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
anomalies security_result.detection_fields[].key: "anomalies"
security_result.detection_fields[].value: ログの anomalies
未加工ログの anomalies フィールドから直接マッピングされます。
application observer.application 未加工ログの application フィールドから直接マッピングされます。
assoc_status security_result.detection_fields[].key: 「assoc_status」
security_result.detection_fields[].value: ログの assoc_status
未加工ログの assoc_status フィールドから直接マッピングされます。
asset_details observer.asset.product_object_id: grok パターン %{GREEDYDATA:asset_id},%{GREEDYDATA:asset_version} を使用して抽出
asset_software.version: grok パターン %{GREEDYDATA:asset_id},%{GREEDYDATA:asset_version} を使用して抽出
asset_details フィールドは、grok パターンを使用して解析され、asset_idasset_version が抽出されます。
asset_id observer.asset.product_object_id asset_details から抽出された asset_id フィールドから直接マッピングされます。
asset_version observer.asset.software.version asset_details から抽出された asset_version フィールドから直接マッピングされます。
bssid principal.mac 未加工ログの bssid フィールドから直接マッピングされます。
description metadata.description 未加工ログの description フィールドから直接マッピングされます。
device metadata.product_name 未加工ログの device フィールドから直接マッピングされます。device が存在しない場合は、「UBIQUITI_SWITCH」の値が使用されます。
dns_resp_seen security_result.detection_fields[].key: 「dns_resp_seen」
security_result.detection_fields[].value: ログの dns_resp_seen
未加工ログの dns_resp_seen フィールドから直接マッピングされます。
DST target.ip 未加工ログの DST フィールドから直接マッピングされます。
DPT principal.port 未加工ログの DPT フィールドから直接マッピングされ、整数に変換されます。
event_type security_result.detection_fields[].key: 「event_type」
security_result.detection_fields[].value: ログの event_type
未加工ログの event_type フィールドから直接マッピングされます。
host principal.hostname 未加工ログの host フィールドから直接マッピングされます。
ID additional.fields[].key: "ID"
additional.fields[].value.string_value: ログの ID
未加工ログの ID フィールドから直接マッピングされます。
IN additional.fields[].key: "IN"
additional.fields[].value.string_value: ログの IN
未加工ログの IN フィールドから直接マッピングされます。
interface additional.fields[].key: 「interface」
additional.fields[].value.string_value: ログの interface
未加工ログの interface フィールドから直接マッピングされます。
LEN additional.fields[].key: "LEN"
additional.fields[].value.string_value: ログの LEN
未加工ログの LEN フィールドから直接マッピングされます。
mac principal.mac 未加工ログの mac フィールドから直接マッピングされます。
metadata.event_type metadata.event_type パーサー ロジックから取得されます。state が「Down」の場合は「STATUS_SHUTDOWN」、state が「Up」の場合は「STATUS_STARTUP」、kv_msgDST が存在する場合または principal_present が true の場合は「STATUS_UPDATE」、それ以外の場合は「GENERIC_EVENT」に設定します。
metadata.log_type metadata.log_type: 「UBIQUITI_SWITCH」 パーサーによって設定された定数値。
metadata.vendor_name metadata.vendor_name: 「UBIQUITI」 パーサーによって設定された定数値。
principal_ip principal.ip 未加工ログの principal_ip フィールドから直接マッピングされます。
process_id observer.process.pid 未加工ログの process_id フィールドから直接マッピングされます。
product_event_type metadata.product_event_type 未加工ログの product_event_type フィールドから直接マッピングされます。
PROTO network.ip_protocol 未加工ログの PROTO フィールドから直接マッピングされます。PROTO が「ICMPv6」の場合、値は「ICMP」に変更されます。
query_1 target.administrative_domain 未加工ログの query_1 フィールドから直接マッピングされます。
query_server_1 target.ip 未加工ログの query_server_1 フィールドから直接マッピングされます。
radio security_result.detection_fields[].key:「radio」
security_result.detection_fields[].value: ログの radio
未加工ログの radio フィールドから直接マッピングされます。
satisfaction_now security_result.detection_fields[].key: 「satisfaction_now」
security_result.detection_fields[].value: ログの satisfaction_now
未加工ログの satisfaction_now フィールドから直接マッピングされます。
source_port principal.port 未加工ログの source_port フィールドから直接マッピングされ、整数に変換されます。
SPT target.port 未加工ログの SPT フィールドから直接マッピングされ、整数に変換されます。
SRC principal.ipprincipal.hostname 未加工ログの SRC フィールドから直接マッピングされます。
sta principal.mac 未加工ログの sta フィールドから直接マッピングされます。
state additional.fields[].key: "state"
additional.fields[].value.string_value: ログの state
未加工ログの state フィールドから直接マッピングされます。
timestamp metadata.event_timestamp 日付フィルタで解析された後、未加工ログの timestamp フィールドから直接マッピングされます。
TTL additional.fields[].key: "TTL"
additional.fields[].value.string_value: ログの TTL
未加工ログの TTL フィールドから直接マッピングされます。
vap metadata.ingestion_labels[].key: "Vap"
metadata.ingestion_labels[].value: ログの vap
未加工ログの vap フィールドから直接マッピングされます。
version metadata.product_version 未加工ログの version フィールドから直接マッピングされます。

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