Nokia ルーターのログを収集する
このドキュメントでは、Bindplane エージェントを使用して Nokia ルーターのログを Google Security Operations に収集する方法について説明します。パーサーは、まず Grok パターンを使用して、タイムスタンプ、IP アドレス、ホスト名、イベントの詳細などのフィールドを抽出します。次に、抽出されたフィールドを Google SecOps UDM スキーマの対応するフィールドにマッピングし、特定のイベントタイプと条件に基づいてデータ変換を行い、追加のコンテキストでデータを拡充します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Windows 2016 以降、または
systemd
を使用する Linux ホストを使用していることを確認します。 - プロキシの背後で実行している場合は、ファイアウォール ポートが開いていることを確認します。
- Nokia Router への特権アクセス権があることを確認します。
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 エージェントを構成する
構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/etc/bindplane-agent/
ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
config.yaml
ファイルを次のように編集します。receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" 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: NOKIA_ROUTER raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<customer_id>
は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.json
の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agent
Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
Nokia サービス ルーターで Syslog を構成する
構成モードに入ります。
config# log
Syslog の宛先を定義します。
config>log# syslog 1
Syslog パラメータを構成します。
config>log>syslog# address <syslog-server-ip> config>log>syslog# port <port-number> config>log>syslog# facility local0 config>log>syslog# level info config>log>syslog# log-prefix "Nokia-SR" config>log>syslog# description "Google SecOps syslog server"
<syslog-server-ip>
は Bindplane エージェントの IP アドレスに置き換え、<port-number>
は適切なポートに置き換えます(UDP の場合は514
など)。
Syslog の宛先をログファイルに適用する:
config>log# log-id 1 config>log>log-id# to syslog 1
ログファイルを有効にします。
config>log>log-id# no shutdown
構成を保存します。
config>log>log-id# exit config>log# save
完全な構成の例:
```bash
config# log
config>log# syslog 1
config>log>syslog# address 192.168.1.100
config>log>syslog# port 514
config>log>syslog# facility local0
config>log>syslog# level info
config>log>syslog# log-prefix "Nokia-SR"
config>log>syslog# description "Google SecOps syslog server"
config>log>syslog# exit
config>log# log-id 1
config>log>log-id# to syslog 1
config>log>log-id# no shutdown
config>log>log-id# exit
config>log# save
```
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
%{SYSLOGTIMESTAMP:date_time} |
metadata.event_timestamp |
未加工ログから抽出され、タイムスタンプに変換されます。 |
%{IP:src_ip} |
principal.ip |
未加工ログから抽出されます。 |
%{HOSTNAME:host_name} |
principal.hostname |
未加工ログから抽出されます。 |
%{INT:sequence_id} |
metadata.product_log_id |
未加工ログから抽出されます。 |
%{DATA:router_name} |
metadata.product_name |
未加工ログから抽出されます。 |
%{DATA:application} |
target.application |
未加工ログから抽出されます。 |
%{WORD:severity} |
security_result.severity |
次のロジックに基づいて、未加工ログの重大度からマッピングされます。 - CLEARED、INFO -> INFORMATIONAL - MINOR -> ERROR - WARNING -> LOW - MAJOR -> HIGH - CRITICAL -> CRITICAL |
%{DATA:event_name} |
metadata.product_event_type |
未加工ログから抽出されます。 |
%{INT:event_id} |
additional.fields.value.string_value |
未加工のログから抽出され、キー Event Id を含む additional fields 内に配置されます。 |
%{GREEDYDATA:message1} |
event_name に基づいてさまざまなフィールドを抽出するために使用されます。特定のフィールドのロジックについては、以下をご覧ください。 |
|
Group %{NOTSPACE:group_id} |
target.group.product_object_id |
event_name が BGP イベントに関連している場合は、message1 から抽出されます。 |
%{WORD} %{IP:dest_ip} |
target.ip |
event_name が BGP イベントに関連している場合は、message1 から抽出されます。 |
%{GREEDYDATA:desc} |
security_result.description |
さまざまな event_name シナリオの message1 から抽出されます。 |
SAP %{DATA:sap_id} |
additional.fields.value.string_value |
event_name が sapStatusChanged のときに message1 から抽出され、キー SAP Id を使用して additional fields 内に配置されます。 |
in service %{INT:service_id} |
additional.fields.value.string_value |
event_name が sapStatusChanged のときに message1 から抽出され、キー Service Id を使用して additional fields 内に配置されます。 |
\\(customer %{INT:customer_id}\\) |
additional.fields.value.string_value |
event_name が sapStatusChanged のときに message1 から抽出され、キー Customer Id を使用して additional fields 内に配置されます。 |
admin=%{WORD:admin_status} |
additional.fields.value.string_value |
event_name が sapStatusChanged のときに message1 から抽出され、キー Admin Status を使用して additional fields 内に配置されます。 |
oper=%{WORD:operation_status} |
additional.fields.value.string_value |
event_name が sapStatusChanged のときに message1 から抽出され、キー Operation Status を使用して additional fields 内に配置されます。 |
flags=%{WORD:flag} |
additional.fields.value.string_value |
event_name が sapStatusChanged のときに message1 から抽出され、キー Flag を使用して additional fields 内に配置されます。 |
with MI:SCI %{DATA:mi_sci} |
additional.fields.value.string_value |
event_name が tmnxMkaSessionEstablished のときに message1 から抽出され、キー MI:SCI を使用して additional fields 内に配置されます。 |
on port %{DATA:port_id} |
additional.fields.value.string_value |
event_name が tmnxMkaSessionEstablished のときに message1 から抽出され、キー Port Id を使用して additional fields 内に配置されます。 |
sub-port %{INT:sub_port_id} |
additional.fields.value.string_value |
event_name が tmnxMkaSessionEstablished のときに message1 から抽出され、キー Sub-port Id を使用して additional fields 内に配置されます。 |
CA %{INT:ca} |
additional.fields.value.string_value |
event_name が tmnxMkaSessionEstablished のときに message1 から抽出され、キー CA を使用して additional fields 内に配置されます。 |
EAPOL-destination %{MAC:dest_mac} |
target.mac |
event_name が tmnxMkaSessionEstablished の場合、message1 から抽出されます。 |
local port-id %{DATA:local_port_id} |
target.resource.attribute.labels.value |
特定の event_name 値の message1 から抽出され、キー local_port_id を持つ target.resource.attribute.labels 内に配置されます。 |
dest-mac-type %{NOTSPACE:mac_type} |
target.resource.attribute.labels.value |
特定の event_name 値の message1 から抽出され、キー mac_type を持つ target.resource.attribute.labels 内に配置されます。 |
remote system name %{HOSTNAME:dest_host} |
target.hostname |
特定の event_name 値の message1 から抽出されます。 |
remote chassis-id %{DATA:dest_mac} |
target.mac |
特定の event_name 値の message1 から抽出されます。 |
remote port-id %{DATA:port_id} |
target.resource.attribute.labels.value |
特定の event_name 値の message1 から抽出され、キー port_id を持つ target.resource.attribute.labels 内に配置されます。 |
remote-index %{INT:remote_index} |
target.resource.attribute.labels.value |
特定の event_name 値の message1 から抽出され、キー remote_index を持つ target.resource.attribute.labels 内に配置されます。 |
remote management address %{IP:dest_ip} |
target.ip |
特定の event_name 値の message1 から抽出されます。 |
advRtr:%{HOSTNAME:dest_host}%{GREEDYDATA}, ip@:%{IP:dest_ip}/%{INT:dest_port} |
target.hostname 、target.ip 、target.port |
特定の event_name 値の message1 から抽出されます。 |
SID:%{INT:sid} |
network.session_id |
特定の event_name 値の message1 から抽出されます。 |
level:%{DATA:level} |
target.resource.attribute.labels.value |
特定の event_name 値の message1 から抽出され、キー level を持つ target.resource.attribute.labels 内に配置されます。 |
mtid:%{INT:mtid} |
target.resource.attribute.labels.value |
特定の event_name 値の message1 から抽出され、キー mtid を持つ target.resource.attribute.labels 内に配置されます。 |
type:%{WORD:type} |
target.resource.attribute.labels.value |
特定の event_name 値の message1 から抽出され、キー type を持つ target.resource.attribute.labels 内に配置されます。 |
flags:%{WORD:flag} |
target.resource.attribute.labels.value |
特定の event_name 値の message1 から抽出され、キー flag を持つ target.resource.attribute.labels 内に配置されます。 |
, algo:%{INT:algo} |
target.resource.attribute.labels.value |
特定の event_name 値の message1 から抽出され、キー algo を持つ target.resource.attribute.labels 内に配置されます。 |
Description:%{GREEDYDATA:desc}. |
security_result.description |
event_name が mafEntryMatch の場合、message1 から抽出されます。 |
SrcIP |
principal.ip |
event_name が mafEntryMatch の場合、kv_data フィールドから抽出されます。 |
SrcIP: %{INT:src_port} |
principal.port |
event_name が mafEntryMatch の場合、kv_data フィールドから抽出されます。 |
DstIP |
target.ip |
event_name が mafEntryMatch の場合、kv_data フィールドから抽出されます。 |
DstIP: %{INT:dest_port} |
target.port |
event_name が mafEntryMatch の場合、kv_data フィールドから抽出されます。 |
Protocol |
network.ip_protocol |
event_name が mafEntryMatch の場合、kv_data フィールドから抽出されます。 |
なし | metadata.vendor_name |
NOKIA_ROUTER に設定します。 |
なし | metadata.event_type |
抽出されたフィールドの有無と組み合わせに基づいて決定されます。 - src_ip 、dest_ip 、network が存在する場合 -> NETWORK_CONNECTION- principal が存在する場合 -> STATUS_UPDATE- それ以外の場合 -> GENERIC_EVENT |
%{GREEDYDATA:description} |
metadata.description |
event_name が tmnxMkaSessionEstablished の場合、message1 から抽出されます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。