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 の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Bindplane エージェントをインストールする

次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。

Windows のインストール

  1. 管理者としてコマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sc query observiq-otel-collector
    

サービスは RUNNING と表示されます。

Linux のインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sudo systemctl status observiq-otel-collector
    

サービスが [アクティブ(実行中)] と表示されます。

その他のインストール リソース

その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。

Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

構成ファイルを見つける

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    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
      • YOUR_CUSTOMER_ID: 「顧客 ID を取得する」セクションの顧客 ID
      • endpoint: リージョン エンドポイント URL:
        • 米国: malachiteingestion-pa.googleapis.com
        • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
        • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
        • 完全なリストについては、リージョン エンドポイントをご覧ください。
      • log_type: Chronicle に表示されるログタイプ(CISCO_ACS

構成ファイルを保存する

  • 編集後、ファイルを保存します。
    • Linux: Ctrl+OEnterCtrl+X の順に押します。
    • Windows: [ファイル>保存] をクリックします。

Bindplane エージェントを再起動して変更を適用する

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart observiq-otel-collector
    
    1. サービスが実行されていることを確認します。

        sudo systemctl status observiq-otel-collector
      
    2. ログでエラーを確認します。

        sudo journalctl -u observiq-otel-collector -f
      
  • Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を開きます。

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • サービス コンソール:

      1. Win+R キーを押し、「services.msc」と入力して Enter キーを押します。
      2. observIQ OpenTelemetry Collector を見つけます。
      3. 右クリックして [再起動] を選択します。

      4. サービスが実行されていることを確認します。

        sc query observiq-otel-collector
        
      5. ログでエラーを確認します。

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Cisco Secure ACS で Syslog 転送を構成する

  1. Cisco Secure ACS のウェブ インターフェースにログインします。
  2. [システム管理] > [構成] > [ログ構成] > [リモート ログ ターゲット] に移動します。
  3. [作成] をクリックして、新しいリモートログ ターゲットを追加します。
  4. 次の構成の詳細を指定します。
    • 名前: わかりやすい名前を入力します(例: Google-SecOps-Bindplane)。
    • 説明: 説明を入力します(省略可)。
    • IP アドレス: Bindplane エージェント ホストの IP アドレスを入力します。
    • ポート: 「514」と入力します。
    • ファシリティ コード: LOCAL6(または任意のファシリティ)を選択します。
  5. [送信] をクリックします。
  6. [System Administration] > [Configuration] > [Log Configuration] > [Logging Categories] に移動します。
  7. 転送するログカテゴリを選択します。
    • AAA 監査
    • AAA 診断
    • 管理および運用の監査
    • システム診断
  8. 選択したカテゴリごとに、カテゴリ名をクリックします。
  9. [Remote Log Target] タブに移動します。
  10. 作成したリモートログのターゲット(Google-SecOps-Bindplane など)を [利用可能] から [選択済み] に移動します。
  11. [保存] をクリックします。
  12. 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 のプロフェッショナルから回答を得ることができます。