OPNsense ファイアウォール ログを収集する
以下でサポートされています。
Google SecOpsSIEM
このパーサーは、OPNsense ファイアウォール ログ(syslog 形式と CSV 形式)からフィールドを抽出し、UDM にマッピングします。「filterlog」アプリケーション ログに grok と CSV 解析を使用し、さまざまなログ形式とネットワーク プロトコル(TCP、UDP、ICMP など)を処理して、principal、target、network、security_result などの UDM フィールドにデータを入力します。また、ベンダー名やプロダクト名などのメタデータを追加し、プリンシパルとターゲットの情報の有無に基づいてイベントタイプを決定します。
始める前に
- Google Security Operations インスタンスがあることを確認します。
- OPNsense ウェブ インターフェースへの特権アクセス権があることを確認します。
Google SecOps 取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [収集エージェント] に移動します。
- 取り込み認証ファイルをダウンロードします。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細] セクションから [お客様 ID] をコピーして保存します。
BindPlane Agent をインストールする
- Windows へのインストールの場合は、次のスクリプトを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Linux へのインストールの場合は、次のスクリプトを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- その他のインストール オプションについては、こちらのインストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように BindPlane エージェントを構成する
- BindPlane がインストールされているマシンにアクセスします。
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
次のコマンドを使用して BindPlane エージェントを再起動して、変更を適用します。
sudo systemctl bindplane restart
OPNsense に Syslog サーバー構成を追加する
- OPNsense ウェブ インターフェースにログインします。
- [システム] > [設定] > [ロギング] に移動します。
- [リモート ロギング] セクションで、[リモート syslog サーバーにログを送信する] チェックボックスをオンにします。
- [リモート syslog サーバー] フィールドに、syslog サーバーの IP アドレスと ポートを入力します(例: 10.10.10.10:54525)。
- syslog 施設として Local0 を選択します。
Syslog レベルを [アラート] に設定します。
[保存] をクリックして変更を適用します。
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.port (column17 が 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.seconds 、timestamp.seconds |
Grok を使用してメッセージ フィールドから解析され、タイムスタンプに変換されます。秒の値は、metadata.event_timestamp.seconds と timestamp.seconds の両方に入力されます。 |
application |
principal.application |
grok で抽出された application から直接マッピングされます。 |
変更点
2023-11-22
- 新しく作成されたパーサー。