OPNsense ファイアウォール ログを収集する
以下でサポートされています。
Google SecOps
SIEM
このパーサーは、OPNsense ファイアウォール ログ(Syslog 形式と CSV 形式)からフィールドを抽出し、UDM にマッピングします。「filterlog」アプリケーション ログに grok と CSV の解析を使用し、さまざまなログ形式とネットワーク プロトコル(TCP、UDP、ICMP など)を処理して、プリンシパル、ターゲット、ネットワーク、security_result などの UDM フィールドに入力します。また、ベンダーやプロダクト名などのメタデータを追加し、プリンシパルとターゲットの情報が存在するかどうかに基づいてイベントタイプを特定します。
始める前に
- Google Security Operations インスタンスがあることを確認します。
- OPNsense ウェブ インターフェースへの特権アクセス権があることを確認します。
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM Settings] > [Collection Agents] に移動します。
- Ingestion Authentication File をダウンロードします。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
- 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 Agent を構成する
- 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 Agent を再起動して、変更を適用します。
sudo systemctl bindplane restart
OPNsense に Syslog サーバーの構成を追加する
- OPNsense ウェブ インターフェースにログインします。
- [System] > [Settings] > [Logging] に移動します。
- [リモート ロギング] セクションで、[ログをリモート syslog サーバーに送信する] のチェックボックスをオンにして、この機能を有効にします。
- [Remote Syslog Servers] フィールドに、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 から直接マッピングされ、additional.fields の下に「tos」キーでネストされます。 |
column12 |
additional.fields[].key : 「ttl」additional.fields[].value.string_value : column12 の値 |
column12 から直接マッピングされ、additional.fields の下に「ttl」キーでネストされます。 |
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 から直接マッピングされ、additional.fields の下に「offset」キーでネストされます。 |
column15 |
additional.fields[].key : 「flags」additional.fields[].value.string_value : column15 の値 |
column15 から直接マッピングされ、additional.fields の下に「flags」キーでネストされます。 |
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 から直接マッピングされ、additional.fields の下に「tcp_flags」キーでネストされます。 |
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 から直接マッピングされ、additional.fields の下に「tracker」キーでネストされます。 |
column5 |
additional.fields[].key : 「interface」additional.fields[].value.string_value : column5 の値 |
column5 から直接マッピングされ、additional.fields の下に「interface」キーでネストされます。 |
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 から直接マッピングされます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。