Versa Networks Secure Access Service Edge(SASE)ログを収集する
このドキュメントでは、Versa Networks Secure Access Service Edge(SASE)ログを収集する方法について説明します。パーサーは、最初の grok フィルタの後に Key-Value ペアを抽出します。次に、これらの値を統合データモデル(UDM)にマッピングします。ファイアウォール イベント、アプリケーション ログ、アラームログなどのさまざまなログ形式を処理し、IP プロトコルやリスクスコアなどの特定のフィールドの変換と拡充を行います。
始める前に
- Google Security Operations インスタンスがあることを確認します。
- Windows 2016 以降、または
systemdを使用する Linux ホストを使用していることを確認します。 - プロキシの背後で実行している場合は、ファイアウォール ポートが開いていることを確認します。
- Versa SASE への特権アクセス権があることを確認します。
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane エージェントがインストールされるシステムに、ファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
Windows へのインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux へのインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
その他のインストール リソース
- その他のインストール オプションについては、こちらのインストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane Agent を構成する
構成ファイルにアクセスします。
config.yamlファイルを見つけます。通常、Linux では/etc/bindplane-agent/ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano、vi、メモ帳など)を使用してファイルを開きます。
config.yamlファイルを次のように編集します。receivers: tcplog: # Replace the port and IP address as required listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: `/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 ingestion_labels: log_type: SYSLOG namespace: versa_networks_sase raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<customer_id>は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.jsonの値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane Agent を再起動して変更を適用する
Linux で Bindplane Agent を再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agentWindows で Bindplane Agent を再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
Versa Networks SASE を構成する
管理者は、各 Versa Analytics ノードでリモート コレクタを構成して、ログをサードパーティ システムに転送する必要があります。
Versa 分析ノードを構成するには、次の操作を行います。
- ログ転送を有効にする
- セッション ID のロギングを有効にする
ログ転送を有効にする
- Versa アナリティクス サーバーにログインします。
cliコマンドを実行して CLI に移動します。configureコマンドを実行して構成モードに切り替え、load merge terminalを入力します。次のコマンドをコピーして貼り付け、ログ転送を設定します。
<collector_ip>と<collector_port>は、Syslog コレクタ(Bindplane)の 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構成を保存します。
save
セッション ID のロギングを有効にする
IP 関連の情報をログに記録するには、セッション ID のロギングを有効にします。
- Versa Director にログインします。
- [ディレクター ビュー] に切り替えます。
- [Configuration] > [Devices] > [Tenant] > [Device] に移動して、アプライアンス ビューにアクセスします。
- [Configuration> Others> System> Configuration> Configuration] を選択します。
- [パラメータ] ペインで、[編集] をクリックします。
- [パラメータを編集] ウィンドウで、[LEF] を選択します。
[ファイアウォール] セクションで、[セッション ID のロギングを含める] チェックボックスをオンにします。
[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 |
action、type、idpAction、avAction、urlAction のいずれかが「許可」の場合、ALLOW。action、type、idpAction、avAction、urlAction が「reject」、「drop」、「block」、「deny」の場合、BLOCK。idpAction がそれ以外の場合は 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: appFamilysecurity_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 |
値は applianceName、siteName、site フィールドから直接取得されます。 |
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: destIpdestinationIPv4Address: 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(または sourceIPv4Address、user、sourceIPv6Address)と destinationIPv4Address(または remoteSite、destinationIPv6Address、clientIPv4Address、hostname)の両方が存在する場合は、NETWORK_CONNECTION。それ以外の場合は STATUS_UPDATE。applianceName が空の場合、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: fromCountrytarget.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_typemetadata.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: networkPrefixtarget.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」の場合(大文字と小文字を区別しない)、LOW。signaturePriority が「medium」の場合(大文字と小文字を区別しない)、MEDIUM。signaturePriority が「high」の場合(大文字と小文字を区別しない)、HIGH。 |
site |
principal.hostname: siteapplianceName: site |
値は site フィールドから直接取得されます。 |
siteId |
additional.fields[].key: "siteId"additional.fields[].value.string_value: siteId |
値は siteId フィールドから直接取得されます。 |
siteName |
principal.hostname: siteNameapplianceName: 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 のプロフェッショナルから回答を得ることができます。