Versa Networks Secure Access Service Edge(SASE)のログを収集する

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

このドキュメントでは、Bindplane エージェントを使用して Versa Networks Secure Access Service Edge(SASE)ログを Google Security Operations に取り込む方法について説明します。

Versa Networks SASE は、ファイアウォール イベント、脅威ログ、アプリケーション分類、URL フィルタリング、IDS/IPS 検出、アラーム イベントの syslog メッセージを生成する統合セキュリティ ネットワーキング プラットフォームです。パーサーは syslog メッセージから Key-Value ペアを抽出し、統合データモデル(UDM)にマッピングします。

始める前に

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

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

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
    

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

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

その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。

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

構成ファイルを見つける

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

構成ファイルを編集します。

  • config.yaml の内容全体を次の構成に置き換えます。

    receivers:
        tcplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/versa_firewall:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: VERSA_FIREWALL
            raw_log_field: body
    
    service:
        pipelines:
            logs/versa_firewall_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/versa_firewall
    

構成パラメータ

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

  • レシーバーの構成:

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

    • 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"
        

Versa Networks SASE を構成する

管理者は、各 Versa Analytics ノードでリモート コレクタを構成して、ログをサードパーティ システムに転送する必要があります。

ログ転送を有効にする

  1. Versa アナリティクス サーバーにログインします。
  2. cli コマンドを実行して CLI に移動します。
  3. configure コマンドを実行して構成モードに切り替え、load merge terminal を入力します。
  4. 次のコマンドをコピーして貼り付け、ログ転送を設定します(<collector_ip><collector_port> は、Syslog コレクタの IP アドレスとポートに置き換えます)。

    set system analytics log-collector-exporter destination-address <collector_ip>
    set system analytics log-collector-exporter destination-port <collector_port>
    set system analytics log-collector-exporter transport tcp
    set system analytics log-collector-exporter log-types firewall-log
    set system analytics log-collector-exporter log-types threat-log
    commit
    
  5. 構成を保存します。

    save
    

セッション ID のロギングを有効にする

IP 関連の情報をログに記録するには、セッション ID のロギングを有効にします。

  1. Versa Director にログインします。
  2. [ディレクター ビュー] に切り替えます。
  3. [Configuration] > [Devices] > [Tenant] > [Device] に移動して、アプライアンス ビューにアクセスします。
  4. [Configuration] > [Others] > [System] > [Configuration] > [Configuration] を選択します。
  5. [パラメータ] ペインで、[編集] をクリックします。
  6. [パラメータを編集] ウィンドウで、[LEF] を選択します。
  7. [ファイアウォール] セクションで、[セッション ID のロギングを含める] チェックボックスをオンにします。
  8. [OK] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
accCkt additional.fields[].key: "accCkt"
additional.fields[].value.string_value: accCkt
値は accCkt フィールドから直接取得されます。
accCktId additional.fields[].key: "accCktId"
additional.fields[].value.string_value: accCktId
値は accCktId フィールドから直接取得されます。
accCktName additional.fields[].key: "accCktName"
additional.fields[].value.string_value: accCktName
値は accCktName フィールドから直接取得されます。
accessType additional.fields[].key: "accessType"
additional.fields[].value.string_value: accessType
値は accessType フィールドから直接取得されます。
action security_result.action: action actiontypeidpActionavActionurlAction のいずれかが「許可」の場合、ALLOWactiontypeidpActionavActionurlAction のいずれかが「reject」、「drop」、「block」、「deny」の場合、BLOCKidpAction がそれ以外の場合は UNKNOWN_ACTION
alarmCause security_result.detection_fields[].key: "alarmCause"
security_result.detection_fields[].value: alarmCause
値は alarmCause フィールドから直接取得されます。
alarmClass security_result.detection_fields[].key: "alarmClass"
security_result.detection_fields[].value: alarmClass
値は alarmClass フィールドから直接取得されます。
alarmClearable security_result.detection_fields[].key: "alarmClearable"
security_result.detection_fields[].value: alarmClearable
値は alarmClearable フィールドから直接取得されます。
alarmEventType metadata.product_event_type: alarmEventType 値は alarmEventType フィールドから直接取得されます。
alarmKey security_result.detection_fields[].key: "alarmKey"
security_result.detection_fields[].value: alarmKey
値は alarmKey フィールドから直接取得されます。
alarmKind security_result.detection_fields[].key: "alarmKind"
security_result.detection_fields[].value: alarmKind
値は alarmKind フィールドから直接取得されます。
alarmOwner security_result.detection_fields[].key: "alarmOwner"
security_result.detection_fields[].value: alarmOwner
値は alarmOwner フィールドから直接取得されます。
alarmSeqNo security_result.detection_fields[].key: "alarmSeqNo"
security_result.detection_fields[].value: alarmSeqNo
値は alarmSeqNo フィールドから直接取得されます。
alarmSeverity security_result.severity_details: alarmSeverity 値は alarmSeverity フィールドから直接取得されます。
alarmText security_result.summary: alarmText 値は alarmText フィールドから直接取得され、二重引用符は削除されます。
alarmType security_result.description: alarmType 値は alarmType フィールドから直接取得されます。
appFamily metadata.product_event_type: appFamily
security_result.detection_fields[].key: "appFamily"
security_result.detection_fields[].value: appFamily
値は appFamily フィールドから直接取得されます。
appId security_result.detection_fields[].key: "アプリケーション ID"
security_result.detection_fields[].value: appId
値は appId フィールドから直接取得されます。
appIdStr security_result.detection_fields[].key: "appIdStr"
security_result.detection_fields[].value: appIdStr
値は appIdStr フィールドから直接取得されます。
applianceName principal.hostname: applianceName 値は applianceNamesiteNamesite フィールドから直接取得されます。
appProductivity security_result.detection_fields[].key: "appProductivity"
security_result.detection_fields[].value: appProductivity
値は appProductivity フィールドから直接取得されます。
appRisk security_result.severity_details: appRisk 値は appRisk フィールドから直接取得されます。
appSubFamily security_result.detection_fields[].key: "appSubFamily"
security_result.detection_fields[].value: appSubFamily
値は appSubFamily フィールドから直接取得されます。
avAccuracy additional.fields[].key: "avAccuracy"
additional.fields[].value.string_value: avAccuracy
値は avAccuracy フィールドから直接取得されます。
avAction security_result.action: avAction ロジックについては、action をご覧ください。
avMalwareName security_result.threat_name: avMalwareName 値は avMalwareName フィールドから直接取得されます。
avMalwareType security_result.category_details: avMalwareType 値は avMalwareType フィールドから直接取得されます。
classMsg security_result.description: classMsg 値は classMsg フィールドから直接取得され、二重引用符は削除されます。
clientIPv4Address target.ip: clientIPv4Address 値は clientIPv4Address フィールドから直接取得されます。
destIp target.ip: destIp
destinationIPv4Address: destIp
値は destIp フィールドから直接取得されます。
destinationIPv4Address target.ip: destinationIPv4Address 値は destinationIPv4Address から直接取得されるか、networkPrefix フィールドから派生します。
destinationIPv6Address target.ip: destinationIPv6Address 値は destinationIPv6Address フィールドから直接取得されます。
destinationPort target.port: destinationPort 値は destinationPort フィールドから直接取得され、整数に変換されます。
destinationTransportPort target.port: destinationTransportPort 値は destinationTransportPort フィールドから直接取得され、整数に変換されます。
deviceKey about.resource.attribute.labels[].key: "deviceKey"
about.resource.attribute.labels[].value: deviceKey
「Unknown」でない場合、deviceKey フィールドから直接取得された値。
deviceName about.resource.attribute.labels[].key: "deviceName"
about.resource.attribute.labels[].value: deviceName
「Unknown」でない場合、deviceName フィールドから直接取得された値。
duration network.session_duration.seconds: duration 値は duration フィールドから直接取得され、整数に変換されます。
egressInterfaceName additional.fields[].key: "egressInterfaceName"
additional.fields[].value.string_value: egressInterfaceName
値は egressInterfaceName フィールドから直接取得されます。
event.type metadata.event_type: event.type applianceName(または sourceIPv4AddressusersourceIPv6Address)と destinationIPv4Address(または remoteSitedestinationIPv6AddressclientIPv4Addresshostname)の両方が存在する場合は、NETWORK_CONNECTION。それ以外の場合は STATUS_UPDATEapplianceName が空の場合は、GENERIC_EVENT
eventType principal.resource.attribute.labels[].key: "eventType"
principal.resource.attribute.labels[].value: eventType
値は eventType フィールドから直接取得されます。
family security_result.detection_fields[].key: "family"
security_result.detection_fields[].value: family
値は family フィールドから直接取得されます。
fc security_result.detection_fields[].key: "ForwardingClass"
security_result.detection_fields[].value: fc
値は fc フィールドから直接取得されます。
fileTransDir additional.fields[].key: "fileTransDir"
additional.fields[].value.string_value: fileTransDir
値は fileTransDir フィールドから直接取得されます。
filename target.file.names: filename 値は filename フィールドから直接取得されます。
flowCookie metadata.collected_timestamp: flowCookie flowCookie フィールドから直接取得された値が、UNIX 形式を使用してタイムスタンプに変換されます。
flowId principal.resource.product_object_id: flowId 値は flowId フィールドから直接取得されます。
forwardForwardingClass security_result.detection_fields[].key: "forwardForwardingClass"
security_result.detection_fields[].value: forwardForwardingClass
値は forwardForwardingClass フィールドから直接取得されます。
fromCountry principal.location.country_or_region: fromCountry
target.location.country_or_region: fromCountry
値は fromCountry フィールドから直接取得されます。
fromUser principal.user.userid: fromUser 空でないか、「unknown」または「Unknown」でない場合、fromUser フィールドから直接取得された値。
fromZone additional.fields[].key: "fromZone"
additional.fields[].value.string_value: fromZone
値は fromZone フィールドから直接取得されます。
generateTime metadata.collected_timestamp: generateTime generateTime フィールドから直接取得された値が、UNIX 形式を使用してタイムスタンプに変換されます。
hostname target.hostname: hostname 値は hostname フィールドから直接取得されます。
httpUrl target.url: httpUrl 値は httpUrl フィールドから直接取得されます。
icmpTypeIPv4 additional.fields[].key: "icmpTypeIPv4"
additional.fields[].value.string_value: icmpTypeIPv4
値は icmpTypeIPv4 フィールドから直接取得されます。
idpAction security_result.action: idpAction ロジックについては、action をご覧ください。
ingressInterfaceName additional.fields[].key: "ingressInterfaceName"
additional.fields[].value.string_value: ingressInterfaceName
値は ingressInterfaceName フィールドから直接取得されます。
ipsApplication additional.fields[].key: "ipsApplication"
additional.fields[].value.string_value: ipsApplication
値は ipsApplication フィールドから直接取得されます。
ipsDirection security_result.detection_fields[].key: "ipsDirection"
security_result.detection_fields[].value: ipsDirection
値は ipsDirection フィールドから直接取得されます。
ipsProfile security_result.detection_fields[].key: "ipsProfile"
security_result.detection_fields[].value: ipsProfile
値は ipsProfile フィールドから直接取得されます。
ipsProfileRule security_result.rule_name: ipsProfileRule 値は ipsProfileRule フィールドから直接取得されます。
ipsProtocol network.ip_protocol: ipsProtocol 値は ipsProtocol フィールドから直接取得されます。
log_type metadata.description: log_type
metadata.log_type: log_type
値は log_type フィールドから直接取得されます。
mstatsTimeBlock metadata.collected_timestamp: mstatsTimeBlock mstatsTimeBlock フィールドから直接取得された値が、UNIX 形式を使用してタイムスタンプに変換されます。
mstatsTotRecvdOctets network.received_bytes: mstatsTotRecvdOctets mstatsTotRecvdOctets フィールドから直接取得され、符号なし整数に変換されます。
mstatsTotSentOctets network.sent_bytes: mstatsTotSentOctets mstatsTotSentOctets フィールドから直接取得され、符号なし整数に変換されます。
mstatsTotSessCount additional.fields[].key: "mstatsTotSessCount"
additional.fields[].value.string_value: mstatsTotSessCount
値は mstatsTotSessCount フィールドから直接取得されます。
mstatsTotSessDuration network.session_duration.seconds: mstatsTotSessDuration 値は mstatsTotSessDuration フィールドから直接取得され、整数に変換されます。
mstatsType security_result.category_details: mstatsType 値は mstatsType フィールドから直接取得されます。
networkPrefix target.ip: networkPrefix
target.port: networkPrefix
networkPrefix フィールドから抽出された IP アドレス。networkPrefix フィールドから抽出され、整数に変換されたポート。
protocolIdentifier network.ip_protocol: protocolIdentifier protocolIdentifier フィールドから直接取得された値が整数に変換され、ルックアップを使用して IP プロトコル名にマッピングされます。
recvdOctets network.received_bytes: recvdOctets recvdOctets フィールドから直接取得され、符号なし整数に変換されます。
recvdPackets network.received_packets: recvdPackets 値は recvdPackets フィールドから直接取得され、整数に変換されます。
remoteSite target.hostname: remoteSite 値は remoteSite フィールドから直接取得されます。
reverseForwardingClass security_result.detection_fields[].key: "reverseForwardingClass"
security_result.detection_fields[].value: reverseForwardingClass
値は reverseForwardingClass フィールドから直接取得されます。
risk security_result.risk_score: risk 値は risk フィールドから直接取得され、浮動小数点数に変換されます。
rule security_result.rule_name: rule 値は rule フィールドから直接取得されます。
sentOctets network.sent_bytes: sentOctets sentOctets フィールドから直接取得され、符号なし整数に変換されます。
sentPackets network.sent_packets: sentPackets 値は sentPackets フィールドから直接取得され、整数に変換されます。
serialNum security_result.detection_fields[].key: "serialNum"
security_result.detection_fields[].value: serialNum
値は serialNum フィールドから直接取得されます。
signatureId security_result.detection_fields[].key: "signatureID"
security_result.detection_fields[].value: signatureId
値は signatureId フィールドから直接取得されます。
signatureMsg security_result.detection_fields[].key: "signatureMsg"
security_result.detection_fields[].value: signatureMsg
値は signatureMsg フィールドから直接取得されます。
signaturePriority security_result.severity: signaturePriority signaturePriority が「low」の場合(大文字と小文字を区別しない)、LOWsignaturePriority が「medium」の場合(大文字と小文字を区別しない)、MEDIUMsignaturePriority が「high」の場合(大文字と小文字を区別しない)、HIGH
site principal.hostname: site
applianceName: site
値は site フィールドから直接取得されます。
siteId additional.fields[].key: "siteId"
additional.fields[].value.string_value: siteId
値は siteId フィールドから直接取得されます。
siteName principal.hostname: siteName
applianceName: siteName
値は siteName フィールドから直接取得されます。
sourceIPv4Address principal.ip: sourceIPv4Address 値は sourceIPv4Address フィールドから直接取得されます。
sourceIPv6Address principal.ip: sourceIPv6Address 値は sourceIPv6Address フィールドから直接取得されます。
sourcePort principal.port: sourcePort 値は sourcePort フィールドから直接取得され、整数に変換されます。
sourceTransportPort principal.port: sourceTransportPort 値は sourceTransportPort フィールドから直接取得され、整数に変換されます。
subFamily security_result.detection_fields[].key: "subFamily"
security_result.detection_fields[].value: subFamily
値は subFamily フィールドから直接取得されます。
tcpConnAborted additional.fields[].key: "tcpConnAborted"
additional.fields[].value.string_value: tcpConnAborted
空でないか「0」でない場合、値は tcpConnAborted フィールドから直接取得されます。
tcpConnRefused additional.fields[].key: "tcpConnRefused"
additional.fields[].value.string_value: tcpConnRefused
空でないか「0」でない場合、値は tcpConnRefused フィールドから直接取得されます。
tcpPktsFwd network.sent_packets: tcpPktsFwd 値は tcpPktsFwd フィールドから直接取得され、整数に変換されます。
tcpPktsRev network.received_packets: tcpPktsRev 値は tcpPktsRev フィールドから直接取得され、整数に変換されます。
tcpReXmitFwd additional.fields[].key: "tcpReXmitFwd"
additional.fields[].value.string_value: tcpReXmitFwd
空でないか「0」でない場合、値は tcpReXmitFwd フィールドから直接取得されます。
tcpReXmitRev additional.fields[].key: "tcpReXmitRev"
additional.fields[].value.string_value: tcpReXmitRev
空でないか「0」でない場合、値は tcpReXmitRev フィールドから直接取得されます。
tcpSAA additional.fields[].key: "tcpSAA"
additional.fields[].value.string_value: tcpSAA
空でないか「0」でない場合、値は tcpSAA フィールドから直接取得されます。
tcpSSA additional.fields[].key: "tcpSSA"
additional.fields[].value.string_value: tcpSSA
空でないか「0」でない場合、値は tcpSSA フィールドから直接取得されます。
tcpSessCnt additional.fields[].key: "tcpSessCnt"
additional.fields[].value.string_value: tcpSessCnt
値は tcpSessCnt フィールドから直接取得されます。
tcpSessDur network.session_duration.seconds: tcpSessDur 値は tcpSessDur フィールドから直接取得され、整数に変換されます。
tcpSynAckReXmit additional.fields[].key: "tcpSynAckReXmit"
additional.fields[].value.string_value: tcpSynAckReXmit
空でないか「0」でない場合、値は tcpSynAckReXmit フィールドから直接取得されます。
tcpSynReXmit additional.fields[].key: "tcpSynReXmit"
additional.fields[].value.string_value: tcpSynReXmit
空でないか「0」でない場合、値は tcpSynReXmit フィールドから直接取得されます。
tcpTWHS additional.fields[].key: "tcpTWHS"
additional.fields[].value.string_value: tcpTWHS
空でないか「0」でない場合、値は tcpTWHS フィールドから直接取得されます。
tenantId principal.resource.attribute.labels[].key: "tenantId"
principal.resource.attribute.labels[].value: tenantId
値は tenantId フィールドから直接取得されます。
tenantName observer.hostname: tenantName 値は tenantName フィールドから直接取得されます。
threatType security_result.detection_fields[].key: "threatType"
security_result.detection_fields[].value: threatType
値は threatType フィールドから直接取得されます。
toCountry target.location.country_or_region: toCountry 値は toCountry フィールドから直接取得されます。
toZone additional.fields[].key: "toZone"
additional.fields[].value.string_value: toZone
値は toZone フィールドから直接取得されます。
traffType additional.fields[].key: "traffType"
additional.fields[].value.string_value: traffType
値は traffType フィールドから直接取得されます。
ts metadata.event_timestamp: ts ts フィールドから直接取得され、タイムスタンプに変換されます。
type security_result.action: type ロジックについては、action をご覧ください。
urlAction security_result.action: urlAction ロジックについては、action をご覧ください。
urlActionMessage security_result.summary: urlActionMessage 値は urlActionMessage フィールドから直接取得されます。
urlCategory principal.resource.attribute.labels[].key: "urlCategory"
principal.resource.attribute.labels[].value: urlCategory
値は urlCategory フィールドから直接取得されます。
urlProfile additional.fields[].key: "urlProfile"
additional.fields[].value.string_value: urlProfile
値は urlProfile フィールドから直接取得されます。
urlReputation security_result.severity_details: urlReputation 値は urlReputation フィールドから直接取得されます。
user principal.ip: user 値は user フィールドから直接取得されます。
vsnId principal.resource.attribute.labels[].key: "vsnId"
principal.resource.attribute.labels[].value: vsnId
値は vsnId フィールドから直接取得されます。ハードコードされた値。ハードコードされた値。

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