Cisco Secure ACS のログを収集する
このドキュメントでは、Bindplane を使用して Cisco Secure ACS ログを Google Security Operations に取り込む方法について説明します。
パーサーは、Cisco Secure ACS syslog と Key-Value 形式のログからフィールドを抽出します。grok または kv を使用してログ メッセージを解析し、これらの値を統合データモデル(UDM)にマッピングします。また、イベントのソースとタイプのデフォルトのメタデータ値も設定します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows Server 2016 以降、または
systemdを使用する Linux ホスト - プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
- Cisco Secure ACS ウェブ インターフェースへの特権アクセス
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インストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
sc query observiq-otel-collector
サービスは RUNNING と表示されます。
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shインストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
sudo systemctl status observiq-otel-collector
サービスが [アクティブ(実行中)] と表示されます。
その他のインストール リソース
その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
構成ファイルを見つける
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
構成ファイルを編集します。
config.yamlの内容全体を次の構成に置き換えます。receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: 'CISCO_ACS' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
構成パラメータ
各プレースホルダを次のように置き換えます。
レシーバーの構成:
udplog: UDP Syslog にはudplog、TCP Syslog にはtcplogを使用します。0.0.0.0: リッスンする IP アドレス(すべてのインターフェースでリッスンする場合は0.0.0.0)514: リッスンするポート番号(標準の syslog ポート)
エクスポータの構成:
creds_file_path: 取り込み認証ファイルのフルパス:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
YOUR_CUSTOMER_ID: 「顧客 ID を取得する」セクションの顧客 IDendpoint: リージョン エンドポイント URL:- 米国:
malachiteingestion-pa.googleapis.com - ヨーロッパ:
europe-malachiteingestion-pa.googleapis.com - アジア:
asia-southeast1-malachiteingestion-pa.googleapis.com - 完全なリストについては、リージョン エンドポイントをご覧ください。
- 米国:
log_type: Chronicle に表示されるログタイプ(CISCO_ACS)
構成ファイルを保存する
- 編集後、ファイルを保存します。
- Linux:
Ctrl+O、Enter、Ctrl+Xの順に押します。 - Windows: [ファイル>保存] をクリックします。
- Linux:
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart observiq-otel-collectorサービスが実行されていることを確認します。
sudo systemctl status observiq-otel-collectorログでエラーを確認します。
sudo journalctl -u observiq-otel-collector -f
Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。
管理者としてコマンド プロンプトまたは PowerShell を開きます。
net stop observiq-otel-collector && net start observiq-otel-collectorサービス コンソール:
Win+Rキーを押し、「services.msc」と入力して Enter キーを押します。- observIQ OpenTelemetry Collector を見つけます。
右クリックして [再起動] を選択します。
サービスが実行されていることを確認します。
sc query observiq-otel-collectorログでエラーを確認します。
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Cisco Secure ACS で Syslog 転送を構成する
- Cisco Secure ACS のウェブ インターフェースにログインします。
- [システム管理] > [構成] > [ログ構成] > [リモート ログ ターゲット] に移動します。
- [作成] をクリックして、新しいリモートログ ターゲットを追加します。
- 次の構成の詳細を指定します。
- 名前: わかりやすい名前を入力します(例:
Google-SecOps-Bindplane)。 - 説明: 説明を入力します(省略可)。
- IP アドレス: Bindplane エージェント ホストの IP アドレスを入力します。
- ポート: 「
514」と入力します。 - ファシリティ コード: LOCAL6(または任意のファシリティ)を選択します。
- 名前: わかりやすい名前を入力します(例:
- [送信] をクリックします。
- [System Administration] > [Configuration] > [Log Configuration] > [Logging Categories] に移動します。
- 転送するログカテゴリを選択します。
- AAA 監査
- AAA 診断
- 管理および運用の監査
- システム診断
- 選択したカテゴリごとに、カテゴリ名をクリックします。
- [Remote Log Target] タブに移動します。
- 作成したリモートログのターゲット(
Google-SecOps-Bindplaneなど)を [利用可能] から [選択済み] に移動します。 - [保存] をクリックします。
- Bindplane エージェントのログを確認して、syslog メッセージが送信されていることを確認します。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
| Acct-Authentic | additional.fields[].value.string_value | 値は Acct-Authentic フィールドから取得されます。 |
| Acct-Delay-Time | additional.fields[].value.string_value | 値は Acct-Delay-Time フィールドから取得されます。 |
| Acct-Input-Octets | additional.fields[].value.string_value | 値は Acct-Input-Octets フィールドから取得されます。 |
| Acct-Input-Packets | additional.fields[].value.string_value | 値は Acct-Input-Packets フィールドから取得されます。 |
| Acct-Output-Octets | additional.fields[].value.string_value | 値は Acct-Output-Octets フィールドから取得されます。 |
| Acct-Output-Packets | additional.fields[].value.string_value | 値は Acct-Output-Packets フィールドから取得されます。 |
| Acct-Session-Id | additional.fields[].value.string_value | 値は Acct-Session-Id フィールドから取得されます。 |
| Acct-Session-Time | additional.fields[].value.string_value | 値は Acct-Session-Time フィールドから取得されます。 |
| Acct-Status-Type | additional.fields[].value.string_value | 値は Acct-Status-Type フィールドから取得されます。 |
| Acct-Terminate-Cause | additional.fields[].value.string_value | 値は Acct-Terminate-Cause フィールドから取得されます。 |
| ACSVersion | additional.fields[].value.string_value | 値は ACSVersion フィールドから取得されます。 |
| AD-Domain | principal.group.group_display_name | 値は AD-Domain フィールドから取得されます。 |
| AD-IP-Address | principal.ip | 値は AD-IP-Address フィールドから取得されます。 |
| Called-Station-ID | additional.fields[].value.string_value | 値は Called-Station-ID フィールドから取得されます。 |
| Calling-Station-ID | additional.fields[].value.string_value | 値は Calling-Station-ID フィールドから取得されます。 |
| クラス | additional.fields[].value.string_value | 値は Class フィールドから取得されます。 |
| CmdSet | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| ConfigVersionId | additional.fields[].value.number_value | 値は ConfigVersionId フィールドから取得され、浮動小数点数に変換されます。 |
| DestinationIPAddress | target.ip、intermediary.ip | 値は DestinationIPAddress フィールドから取得されます。intermediary.ip はデバイスの IP アドレスから派生します。 |
| DestinationPort | target.port | 値は DestinationPort フィールドから取得され、整数に変換されます。 |
| デバイスの IP アドレス | intermediary.ip | 値は [デバイスの IP アドレス] フィールドから取得されます。 |
| デバイスポート | intermediary.port | 値は [Device Port] フィールドから取得され、整数に変換されます。 |
| DetailedInfo | security_result.summary、security_result.description、security_result.action | DetailedInfo が「Authentication succeed」の場合、security_result.summary は「successful login occurred」、security_result.action は ALLOW です。DetailedInfo に「Invalid username or password specified」が含まれている場合、security_result.summary は「failed login occurred」、security_result.action は BLOCK になります。security_result.description は log_header から派生します。 |
| Framed-IP-Address | principal.ip | 値は Framed-IP-Address フィールドから取得されます。 |
| Framed-Protocol | additional.fields[].value.string_value | 値は Framed-Protocol フィールドから取得されます。 |
| NAS-IP-Address | target.ip | 値は NAS-IP-Address フィールドから取得されます。 |
| NAS-Port | additional.fields[].value.string_value | 値は NAS-Port フィールドから取得されます。 |
| NAS-Port-Id | target.port | 値は NAS-Port-Id フィールドから取得され、整数に変換されます。 |
| NAS-Port-Type | additional.fields[].value.string_value | 値は NAS-Port-Type フィールドから取得されます。 |
| NetworkDeviceName | target.hostname | 値は NetworkDeviceName フィールドから取得されます。 |
| プロトコル | additional.fields[].value.string_value | 値は Protocol フィールドから取得されます。 |
| RadiusPacketType | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| Remote-Address | principal.ip、target.ip | 値は Remote-Address フィールドから取得され、IP アドレスとして解析されます。認証イベントの場合は principal.ip に、アカウンティング イベントと診断イベントの場合は target.ip にマッピングされます。 |
| RequestLatency | additional.fields[].value.string_value | 値は RequestLatency フィールドから取得されます。 |
| レスポンス | principal.user.userid | レスポンスに「User-Name」が含まれている場合、ユーザー名が抽出され、principal.user.userid にマッピングされます。 |
| SelectedAccessService | additional.fields[].value.string_value | 値は SelectedAccessService フィールドから取得されます。 |
| SelectedAuthenticationIdentityStores | security_result.detection_fields[].value | 値は SelectedAuthenticationIdentityStores フィールドから取得されます。 |
| SelectedAuthorizationProfiles | security_result.detection_fields[].value | 値は SelectedAuthorizationProfiles フィールドから取得されます。 |
| Service-Type | additional.fields[].value.string_value | 値は Service-Type フィールドから取得されます。 |
| Tunnel-Client-Endpoint | additional.fields[].value.string_value | 値は Tunnel-Client-Endpoint フィールドから取得され、IP アドレスとして解析されます。 |
| ユーザー | target.user.userid | 値は User フィールドから取得されます。 |
| ユーザー名 | target.user.userid、principal.mac | UserName が MAC アドレスの場合、解析されて principal.mac にマッピングされます。それ以外の場合は、target.user.userid にマッピングされます。 |
| ac-user-agent | network.http.user_agent | 値は ac-user-agent フィールドから取得されます。 |
| 猫 | metadata.description | 値は cat フィールドから取得されます。 |
| device-mac | principal.mac | 値は device-mac フィールドから取得され、コロンが追加され、値は小文字に変換されます。device-mac が「00」の場合、「00:00:00:00:00:00」に置き換えられます。 |
| device-platform | principal.asset.platform_software.platform | device-platform が「win」の場合、値「WINDOWS」が principal.asset.platform_software.platform に割り当てられます。 |
| device-platform-version | principal.asset.platform_software.platform_version | 値は device-platform-version フィールドから取得されます。 |
| device-public-mac | principal.mac | 値は device-public-mac フィールドから取得され、ハイフンはコロンに置き換えられ、値は小文字に変換されます。 |
| device-type | principal.asset.hardware.model | 値は device-type フィールドから取得されます。 |
| device-uid | principal.asset.asset_id | 値は device-uid フィールドから取得され、「ASSET ID: 」という接頭辞が付加されます。 |
| device-uid-global | principal.asset.product_object_id | 値は device-uid-global フィールドから取得されます。 |
| hostname | principal.hostname | 値は hostname フィールドから取得されます。 |
| ip:source-ip | principal.ip | 値は ip:source-ip フィールドから取得されます。 |
| kv.ADDomain | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.Airespace-Wlan-Id | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.AuthenticationIdentityStore | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.AVPair | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.CVPN3000/ASA/PIX7.x-DAP-Tunnel-Group-Name | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.CVPN3000/ASA/PIX7.x-Group-Based-Address-Pools | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.ExternalGroups | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.FailureReason | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.IdentityAccessRestricted | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.IdentityGroup | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.NAS-Identifier | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.SelectedShellProfile | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.ServiceSelectionMatchedRule | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.State | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.Step | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.Tunnel-Medium-Type | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.Tunnel-Private-Group-ID | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.Tunnel-Type | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.UseCase | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.UserIdentityGroup | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.VendorSpecific | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.attribute-131 | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.attribute-89 | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.cisco-av-pair | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| kv.cisco-av-pair:CiscoSecure-Group-Id | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| leef_version | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| log_header | metadata.description | 値は log_header フィールドから取得されます。 |
| log_id | metadata.product_log_id | 値は log_id フィールドから取得されます。 |
| log_type | metadata.product_event_type | 値は log_type フィールドから取得されます。 |
| message_severity | (マッピングされません) | IDM オブジェクトにはマッピングされません。 |
| product | metadata.product_name | 値は product フィールドから取得されます。 |
| product_version | metadata.product_version | 値は product_version フィールドから取得されます。 |
| server_host | target.hostname | 値は server_host フィールドから取得されます。 |
| timestamp | metadata.event_timestamp | 値は、タイムスタンプ フィールドとタイムゾーン フィールドから取得されます(コロンを削除した後)。結合された値はタイムスタンプとして解析されます。 |
| URL | network.dns.questions[].name | 値は url フィールドから取得されます。 |
| vendor | metadata.vendor_name | 値はベンダー フィールドから取得されます。最初は「GENERIC_EVENT」に設定されますが、log_type と解析されたフィールドに基づいて上書きされる可能性があります。「USER_LOGIN」、「USER_UNCATEGORIZED」、「NETWORK_DNS」、「NETWORK_CONNECTION」、「STATUS_UPDATE」、「STATUS_UNCATEGORIZED」のいずれかです。最初は「Cisco」に設定されますが、ベンダー フィールドによって上書きされる可能性があります。最初は「ACS」に設定されますが、プロダクト フィールドによって上書きされる可能性があります。「CISCO_ACS」に設定されます。「USERNAME_PASSWORD」に設定されます。「TACACS」に設定されます。RADIUS アカウンティング イベントと診断イベントの場合は「UDP」に設定されます。DNS イベントの場合は「DNS」に設定されます。ログインが成功したかどうかに基づいて設定される security_action フィールドから導出されます。ログインが成功した場合は「successful login occurred」に、ログインが失敗した場合は「failed login occurred」に設定されます。特定の ID ストアの診断イベントでは、「passed」に設定されることもあります。ログイン試行が失敗した場合は「LOW」に設定されます。device-uid フィールドの先頭に「ASSET ID: 」を付加して作成されます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。