OPNsense ファイアウォール ログを収集する

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

このパーサーは、OPNsense ファイアウォール ログ(syslog 形式と CSV 形式)からフィールドを抽出し、UDM にマッピングします。「filterlog」アプリケーション ログに grok と CSV 解析を使用し、さまざまなログ形式とネットワーク プロトコル(TCP、UDP、ICMP など)を処理して、principal、target、network、security_result などの UDM フィールドにデータを入力します。また、ベンダー名やプロダクト名などのメタデータを追加し、プリンシパルとターゲットの情報の有無に基づいてイベントタイプを決定します。

始める前に

  • Google Security Operations インスタンスがあることを確認します。
  • OPNsense ウェブ インターフェースへの特権アクセス権があることを確認します。

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

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイルをダウンロードします。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細] セクションから [お客様 ID] をコピーして保存します。

BindPlane Agent をインストールする

  1. Windows へのインストールの場合は、次のスクリプトを実行します。
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Linux へのインストールの場合は、次のスクリプトを実行します。
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. その他のインストール オプションについては、こちらのインストール ガイドをご覧ください。

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

  1. BindPlane がインストールされているマシンにアクセスします。
  2. config.yaml ファイルを次のように編集します。

    receivers:
      tcplog:
        # Replace the below port <54525> and IP (0.0.0.0) with your specific values
        listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: testNamespace
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 次のコマンドを使用して BindPlane エージェントを再起動して、変更を適用します。sudo systemctl bindplane restart

OPNsense に Syslog サーバー構成を追加する

  1. OPNsense ウェブ インターフェースにログインします。
  2. [システム] > [設定] > [ロギング] に移動します。
  3. [リモート ロギング] セクションで、[リモート syslog サーバーにログを送信する] チェックボックスをオンにします。
  4. [リモート syslog サーバー] フィールドに、syslog サーバーの IP アドレスポートを入力します(例: 10.10.10.10:54525)。
  5. syslog 施設として Local0 を選択します。
  6. Syslog レベルを [アラート] に設定します。

  7. [保存] をクリックして変更を適用します。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
column1 security_result.rule_id column1 から直接マッピングされます。
column10 additional.fields[].key: "tos"
additional.fields[].value.string_value: column10 の値
column10 から直接マッピングされ、キー「tos」で additional.fields の下にネストされています。
column12 additional.fields[].key: "ttl"
additional.fields[].value.string_value: column12 の値
column12 から直接マッピングされ、キー「ttl」で additional.fields の下にネストされます。
column13 additional.fields[].key: 「Id」
additional.fields[].value.string_value: column13 の値
column13 から直接マッピングされ、additional.fields の下にキー「Id」でネストされています。
column14 additional.fields[].key: 「offset」
additional.fields[].value.string_value: column14 の値
column14 から直接マッピングされ、キー「offset」で additional.fields の下にネストされます。
column15 additional.fields[].key: 「flags」
additional.fields[].value.string_value: column15 の値
column15 から直接マッピングされ、キー「flags」で additional.fields の下にネストされています。
column17 network.ip_protocol 大文字に変換した後、column17 から直接マッピングされます。
column18 network.received_bytes 符号なし整数に変換した後、column18 から直接マッピングされます。
column19 principal.ip column19 から直接マッピングされます。
column20 target.ip column20 から直接マッピングされます。
column21 principal.portcolumn17 が TCP または UDP の場合)
additional.fields[].key: "data_length"
additional.fields[].value.string_value: 抽出された値(column17 が ICMP、GRE、ESP、IGMP の場合)
column17 が TCP/UDP の場合、column21 から直接マッピングされ、整数に変換されます。それ以外の場合、「datalength」値は grok を使用して抽出され、キー「data_length」で additional.fields に配置されます。
column22 target.port column17 が TCP または UDP の場合は column22 から直接マッピングされ、整数に変換されます。
column24 additional.fields[].key: "tcp_flags"
additional.fields[].value.string_value: column24 の値
column17 が TCP の場合は column24 から直接マッピングされ、キー「tcp_flags」で additional.fields の下にネストされます。
column29 additional.fields[].key: "tcp_options"
additional.fields[].value.string_value: column29 の値
column17 が TCP の場合は column29 から直接マッピングされ、キー「tcp_options」で additional.fields の下にネストされます。
column4 additional.fields[].key: 「tracker」
additional.fields[].value.string_value: column4 の値
column4 から直接マッピングされ、キー「tracker」で additional.fields の下にネストされています。
column5 additional.fields[].key: "interface"
additional.fields[].value.string_value: column5 の値
column5 から直接マッピングされ、キー「interface」で additional.fields の下にネストされています。
column6 security_result.rule_type column6 から直接マッピングされます。
column7 security_result.action column7 からマッピングされます。「block」の場合は大文字の「BLOCK」に変換されます。「pass」の場合は、「ALLOW」に設定します。
column8 network.direction column8 からマッピングされます。「in」の場合は「INBOUND」に設定します。「out」の場合は、「OUTBOUND」に設定します。
domain principal.administrative_domain grok で抽出された domain から直接マッピングされます。プリンシパルとターゲットの両方の IP アドレスが存在する場合は「NETWORK_CONNECTION」に設定し、それ以外の場合は「GENERIC_EVENT」に設定します。「OPNSENSE」にハードコードされています。「OPNSENSE」にハードコードされました。
message さまざまなフィールド grok フィルタと CSV フィルタを使用して解析され、さまざまなフィールドが抽出されます。特定のマッピングについては、他の行をご覧ください。
ts metadata.event_timestamp.secondstimestamp.seconds Grok を使用してメッセージ フィールドから解析され、タイムスタンプに変換されます。秒の値は、metadata.event_timestamp.secondstimestamp.seconds の両方に入力されます。
application principal.application grok で抽出された application から直接マッピングされます。

変更点

2023-11-22

  • 新しく作成されたパーサー。