Cisco Prime ログを収集する
このドキュメントでは、Bindplane を使用して Cisco Prime ログを Google Security Operations に取り込む方法について説明します。パーサーは Grok パターンを使用して、さまざまな Syslog メッセージ形式からフィールドを抽出し、統合データモデル(UDM)にマッピングします。キーと値のペアなど、さまざまなログ構造を処理し、ログ メッセージ内で見つかった特定のキーワードとパターンに基づいて、ユーザー、プリンシパル、ターゲット、セキュリティ情報でデータを拡充します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows 2016 以降、または
systemd
を使用する Linux ホスト - プロキシの背後で実行している場合は、ファイアウォール ポートが開いていることを確認する
- Cisco Prime への特権アクセス
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに 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_file_path: '/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 log_type: 'CISCO_PRIME' raw_log_field: body ingestion_labels: 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
変更監査通知を構成し、syslog レシーバを構成する
次のイベントに関連する変更監査の syslog 通知を送信するようにシステムを構成できます。
- デバイス一覧の更新
- 構成の変更
- 構成テンプレートの変更
- テンプレート関連のオペレーション
- ログイン、ログアウト、アカウントの変更などのユーザー アクティビティ
Cisco Prime のウェブ UI にログインします。
[Administration] > [Settings] > [System Settings] に移動します。
[メールと通知] > [監査通知の変更] を選択します。
[Enable Change Audit Notification] チェックボックスをオンにします。
[+] ボタンをクリックして、syslog サーバーを指定します。
次の構成情報を提供してください。
- Bindplane エージェントの IP アドレスを入力します。
- [UDP] プロトコルを選択します。
- Bindplane エージェントのポート番号を入力します。
[保存] をクリックします。
転送システム監査ログを syslog として構成する
- Cisco Prime のウェブ UI にログインします。
- [Administration] > [Settings] > [Logging] > [Syslog Logging Options] に移動します。
- [Syslog を有効にする] チェックボックスをオンにします。
- 次の構成の詳細を入力します。
- Bindplane エージェントの IP アドレスを入力します。
- [UDP] プロトコルを選択します。
- Bindplane エージェントのポート番号を入力します。
- 8 つの施設または
local0
のいずれかを選択します。
- [保存] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
client_ip_address | principal.ip、principal.asset.ip | 値は、kv フィルタを使用して未加工ログから抽出された client_ip_address フィールドから取得されます。 |
日付 | metadata.event_timestamp | 値は date フィールドから取得されます。このフィールドは、grok パターンを使用して未加工ログから抽出され、日付フィルタを使用してタイムスタンプに変換されます。 |
説明 | security_result.description | 値は、grok パターンを使用して未加工ログから抽出された description フィールドから取得されます。 |
dest_mac | target.mac | 値は dest_mac フィールドから取得されます。このフィールドは、Grok パターンを使用して未加工ログから抽出され、小文字に変換されます。 |
device_id | principal.asset_id | 値は、grok パターンを使用して未加工ログから抽出された device_id フィールドから取得されます。最終的な値は「Device ID: |
device_ip | principal.ip、principal.asset.ip | 値は、kv フィルタを使用して未加工ログから抽出された device_ip フィールドから取得されます。値は JSON 配列として解析され、配列内の各 IP アドレスが UDM フィールドに追加されます。 |
device_type | target.resource.attribute.labels.value | 値は、grok パターンを使用して未加工ログから抽出された device_type フィールドから取得されます。 |
dst_user | target.user.userid | 値は、grok パターンを使用して未加工ログから抽出された dst_user フィールドから取得されます。 |
メール | src.hostname | 値は、grok パターンを使用して未加工ログから抽出された email フィールドから取得されます。 |
file_path | principal.process.file.full_path | 値は、grok パターンを使用して未加工ログから抽出された file_path フィールドから取得されます。 |
hostname | target.resource.attribute.labels.value | 値は、grok パターンを使用して未加工ログから抽出された hostname フィールドから取得されます。 |
id | principal.asset_id | 値は、grok パターンを使用して未加工ログから抽出された id フィールドから取得されます。最終値は「Entity ID: |
ip_address | principal.ip、principal.asset.ip | 値は、grok パターンを使用して未加工ログから抽出された ip_address フィールドから取得されます。 |
log_level | security_result.severity | 値は、grok パターンを使用して未加工ログから抽出された log_level フィールドから取得されます。severity が存在しない場合、重大度レベルを決定するために使用されます。 |
mac_address | principal.mac、source_mac | 値は mac_address フィールドから取得されます。このフィールドは、Grok パターンを使用して未加工ログから抽出され、小文字に変換されます。source_mac が空の場合、source_mac の値としても使用されます。 |
oid | principal.asset.product_object_id | 値は、grok パターンを使用して未加工ログから抽出された oid フィールドから取得されます。 |
principal_ip | principal.ip、principal.asset.ip | 値は、grok パターンを使用して未加工ログから抽出された principal_ip フィールドから取得されます。 |
principal_port | principal.port | 値は、Grok パターンを使用して未加工ログから抽出され、整数に変換された principal_port フィールドから取得されます。 |
process_name | principal.resource.name | 値は、grok パターンを使用して未加工ログから抽出された process_name フィールドから取得されます。 |
sec_description | security_result.description | 値は、grok パターンを使用して未加工ログから抽出された sec_description フィールドから取得されます。 |
session_id | network.session_id | 値は、grok パターンを使用して未加工ログから抽出された session_id フィールドから取得されます。 |
重要度 | security_result.severity | 値は、grok パターンを使用して未加工ログから抽出された severity フィールドから取得されます。存在する場合、重大度レベルの決定に使用されます。 |
source_mac | principal.mac | 値は source_mac フィールドから取得されます。このフィールドは、Grok パターンを使用して未加工ログから抽出され、小文字に変換されます。空の場合、mac_address の値が使用されます。 |
概要 | security_result.summary | 値は、grok パターンを使用して未加工ログから抽出された summary フィールドから取得されます。 |
target_ip | target.ip、target.asset.ip | 値は、grok パターンを使用して未加工ログから抽出された target_ip フィールドから取得されます。 |
thread_pool | metadata.product_event_type | 値は、grok パターンを使用して未加工ログから抽出された thread_pool フィールドから取得されます。 |
timestamp | metadata.event_timestamp | 値は timestamp フィールドから取得されます。このフィールドは、grok パターンを使用して未加工ログから抽出され、日付フィルタを使用してタイムスタンプに変換されます。 |
タイプ | metadata.product_event_type | 値は、kv フィルタを使用して未加工ログから抽出された Type フィールドから取得されます。 |
user_name | principal.user.userid | 値は、grok パターンまたは kv フィルタを使用して未加工ログから抽出された user_name フィールドから取得されます。 |
metadata.event_type | metadata.event_type | この値は、未加工ログ内の特定のフィールドとパターンの有無に基づいて決定されます。ロジックには、 - デフォルト値: GENERIC_EVENT - thread_pool が「EmailAlertHelper」の場合: EMAIL_TRANSACTION - application_name が「aesSystem」で、desc に「HealthMonitorHelper」が含まれている場合: STATUS_HEARTBEAT - user_present と target_resource_present の両方が true の場合: USER_RESOURCE_ACCESS - user_present が true の場合: USER_UNCATEGORIZED - principal_present と target_present の両方が true の場合: NETWORK_CONNECTION - principal_present が true の場合: STATUS_UPDATE - dst_user が存在し、description に「logout」が含まれている場合: USER_LOGOUT - dst_user が存在し、description に「logout」が含まれていない場合: USER_LOGIN が含まれます。 |
metadata.vendor_name | metadata.vendor_name | 値は「CISCO」に設定されます。 |
metadata.product_name | metadata.product_name | 値は「CISCO_PRIME」に設定されます。 |
metadata.log_type | metadata.log_type | 値は「CISCO_PRIME」に設定されます。 |
network.session_id | network.session_id | 値は、grok パターンを使用して未加工ログから抽出された session_id フィールドから取得されます。 |
principal.application | principal.application | 値は、grok パターンを使用して未加工ログから抽出された application_name フィールドから取得されます。 |
principal.asset.ip | principal.asset.ip | 値は、client_ip_address 、device_ip 、ip_address 、principal_ip 、target_ip のフィールドから取得できます。 |
principal.asset.product_object_id | principal.asset.product_object_id | 値は、grok パターンを使用して未加工ログから抽出された oid フィールドから取得されます。 |
principal.asset_id | principal.asset_id | 値は、device_id 、id のいずれかのフィールドから取得できます。 |
principal.ip | principal.ip | 値は、client_ip_address 、device_ip 、ip_address 、principal_ip のフィールドから取得できます。 |
principal.mac | principal.mac | 値は、mac_address 、source_mac のいずれかのフィールドから取得できます。 |
principal.port | principal.port | 値は、Grok パターンを使用して未加工ログから抽出され、整数に変換された principal_port フィールドから取得されます。 |
principal.process.file.full_path | principal.process.file.full_path | 値は、grok パターンを使用して未加工ログから抽出された file_path フィールドから取得されます。 |
principal.resource.name | principal.resource.name | 値は、grok パターンを使用して未加工ログから抽出された process_name フィールドから取得されます。 |
principal.user.userid | principal.user.userid | 値は、grok パターンまたは kv フィルタを使用して未加工ログから抽出された user_name フィールドから取得されます。 |
security_result.action | security_result.action | description に「fail」が含まれている場合、値は「BLOCK」に設定されます。 |
security_result.description | security_result.description | 値は、desc 、description 、sec_description のフィールドから取得できます。 |
security_result.severity | security_result.severity | 値は、log_level 、severity のいずれかのフィールドから取得できます。 |
security_result.summary | security_result.summary | 値は、grok パターンを使用して未加工ログから抽出された summary フィールドから取得されます。 |
src.hostname | src.hostname | 値は、grok パターンを使用して未加工ログから抽出された email フィールドから取得されます。 |
target.asset.ip | target.asset.ip | 値は、grok パターンを使用して未加工ログから抽出された target_ip フィールドから取得されます。 |
target.ip | target.ip | 値は、grok パターンを使用して未加工ログから抽出された target_ip フィールドから取得されます。 |
target.mac | target.mac | 値は dest_mac フィールドから取得されます。このフィールドは、Grok パターンを使用して未加工ログから抽出され、小文字に変換されます。 |
target.resource.attribute.labels.key | target.resource.attribute.labels.key | 値は、コンテキストに応じて「デバイスタイプ」または「デバイス ホスト名」に設定されます。 |
target.resource.attribute.labels.value | target.resource.attribute.labels.value | 値は、device_type 、hostname のいずれかのフィールドから取得できます。 |
target.user.userid | target.user.userid | 値は、grok パターンを使用して未加工ログから抽出された dst_user フィールドから取得されます。 |
extensions.auth.mechanism | extensions.auth.mechanism | dst_user が存在し、description に「password」が含まれている場合、値は「USERNAME_PASSWORD」に設定されます。 |
extensions.auth.type | extensions.auth.type | dst_user が存在する場合は、「MACHINE」に設定されます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。