Cisco VPN ログを収集する
このドキュメントでは、Bindplane を使用して Cisco ASA VPN ログを Google Security Operations に取り込む方法について説明します。パーサーは、grok パターンを使用して syslog メッセージからフィールドを抽出し、標準の syslog 形式と代替メッセージ構造の両方を処理します。次に、抽出されたフィールドを統合データモデル(UDM)にマッピングし、ID と抽出された情報に基づいてイベントを分類し、ベンダー、プロダクト、イベントタイプなどのメタデータでデータを拡充します。パーサーは特定のイベント ID も処理し、追加の grok パターンとロジックを適用して関連する詳細を抽出し、適切な UDM フィールドにマッピングします。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows 2016 以降、または
systemd
を使用する Linux ホスト - プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
- Cisco ASA への特権アクセス
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_VPN' 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 エージェントを再起動するには、サービス コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
Cisco ASA VPN の Syslog を構成する
- Cisco ASDM を開きます。
- [構成> 機能 > プロパティ > ロギング > ロギング設定] に移動します。
- [ロギングを有効にする] チェックボックスをオンにして、syslog を有効にします。
- [Logging] で [Syslog Servers] を選択し、[Add] をクリックします。
- [Syslog サーバーの追加] ウィンドウで、次の構成の詳細を入力します。
- インターフェース: アウトバウンド通信のインターフェースを選択します。
- IP アドレス: Bindplane エージェントの IP アドレスを入力します。
- Protocol: [UDP] を選択します。
- ポート: Bindplane エージェントのポート番号を入力します。
- [OK] をクリックします。
- [ロギング] セクションで [ロギング フィルタ] を選択します。
- [Syslog Servers] を選択し、[Edit] をクリックします。
- リストから [重大度でフィルタ] として [情報] を選択します。
- [OK] をクリックします。
- [適用] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
accesslist |
target.resource.name |
eventtype が「ASA-4-106103」の場合に message_info から抽出されます。アクセスリストの名前を表します。 |
action |
security_result.action |
ログメッセージ内のキーワード(「error」など)に基づいてパーサーによって取得されます。「拒否」、「拒否」、「許可」、「承認」)。ALLOW または BLOCK にマッピングされます。 |
action |
security_result.action_details |
実行されたアクションの未加工の文字列値(例: (「permitted」、「denied」、「disconnected」)。 |
app_name |
principal.application |
プリンシパルが使用するアプリケーションの名前(「CLI」)。イベント ID 111008、111009、111010 の message_details から抽出されます。 |
assigned_ipv4 |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
assigned_ipv6 |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
bytes_rcv |
network.received_bytes |
セッションで受信したバイト数。イベント ID 113019 の log_mssg から抽出されました。 |
bytes_sent |
network.sent_bytes |
セッションで送信されたバイト数。イベント ID 113019 の log_mssg から抽出されました。 |
cipher |
network.tls.cipher |
SSL セッションで使用される暗号。eventtype 725012 の message_info から抽出されます。 |
cisco_message_number |
security_result.rule_name |
eventtype フィールドから抽出された Cisco メッセージ番号。 |
cisco_severity |
security_result.severity_details |
eventtype フィールドから抽出された Cisco の未加工の重大度レベル。 |
command |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
cumulative_total_count.key |
security_result.outcomes.key |
キー「cumulative_total_count」が security_result.outcomes 配列に追加されます。 |
cumulative_total_count.value |
security_result.outcomes.value |
message_info から抽出された累積合計数の値。 |
current_average_rate.key |
security_result.outcomes.key |
キー「current_average_rate」が security_result.outcomes 配列に追加されます。 |
current_average_rate.value |
security_result.outcomes.value |
message_info から抽出された現在の平均レートの値。 |
current_burst_rate.key |
security_result.outcomes.key |
キー「current_burst_rate」が security_result.outcomes 配列に追加されます。 |
current_burst_rate.value |
security_result.outcomes.value |
message_info から抽出された現在のバースト率の値。 |
desc |
metadata.description |
ログメッセージから抽出されたイベントの説明。より具体的な説明がない場合に使用されます。 |
description |
metadata.description |
イベントの詳細な説明。ログメッセージから抽出されます(利用可能な場合)。 |
destination_ip |
target.ip 、target.asset.ip |
さまざまなログメッセージ形式から抽出された宛先 IP アドレス。 |
destination_ip_port |
target.port または network.application_protocol |
さまざまなログメッセージ形式から抽出された宛先ポート。抽出された値が数値でない場合は、アプリケーション プロトコルとして扱われます。 |
dst_email |
target.user.email_addresses または target.user.userid |
message_info から抽出された宛先メールアドレスまたはユーザー ID。値がメール形式と一致する場合は email_addresses に追加され、一致しない場合は userid として使用されます。 |
dst_host |
target.hostname |
message_info から抽出された宛先ホスト名。 |
dst_ip |
target.ip 、target.asset.ip |
メインの grok パターンまたは他の特定のパターンから抽出された宛先 IP アドレス。 |
dst_port |
target.port |
宛先ポート。メインの grok パターンまたはその他の特定のパターンから抽出されます。 |
duration |
network.session_duration |
セッションの期間。message_details から抽出され、秒に変換されます。 |
event_date |
@timestamp |
イベントの日付と時刻。未加工ログのさまざまなタイムスタンプ フィールドから作成され、date フィルタを使用して解析されます。 |
event_id |
metadata.product_event_type (一部) |
event_severity と組み合わせて metadata.product_event_type フィールドを形成します。 |
event_name |
metadata.product_event_type (一部) |
event_severity および event_type と組み合わせて使用され、使用可能な場合は metadata.product_event_type フィールドを形成します。 |
event_severity |
metadata.product_event_type (一部)、security_result.severity 、is_alert 、is_significant |
event_id または event_name と event_type を組み合わせて metadata.product_event_type フィールドを形成します。security_result.severity 、is_alert 、is_significant の各フィールドの取得にも使用されます。 |
event_type |
metadata.product_event_type (一部) |
event_name および event_severity と組み合わせて使用され、使用可能な場合は metadata.product_event_type フィールドを形成します。 |
eventtype |
metadata.product_event_type 、security_result.rule_name 、security_result.severity_details 、security_result.severity |
metadata.product_event_type 、security_result.rule_name 、security_result.severity_details 、security_result.severity フィールドの導出に使用されるイベント型文字列。 |
fragment_id |
security_result.about.resource.id |
イベント ID 209005 の message_details から抽出された IP フラグメントの ID。 |
group |
principal.group.group_display_name 、principal.user.group_identifiers 、target.user.group_identifiers |
さまざまなログメッセージ形式から抽出されたグループ名。 |
group_name |
principal.group.group_display_name |
ホスト名の場合に group フィールドから抽出されたグループ名。 |
has_principal_ip |
なし | ロジックに使用される内部変数。UDM にマッピングされません。 |
has_target_ip |
なし | ロジックに使用される内部変数。UDM にマッピングされません。 |
hostname |
principal.hostname 、principal.asset.hostname |
さまざまなログメッセージ形式から抽出されたプリンシパルのホスト名。 |
hostname2 |
principal.hostname 、principal.asset.hostname |
hostname が使用できない場合にフォールバックとして抽出されるプリンシパルのホスト名。 |
icmp_code |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
icmp_dst_ip |
target.ip 、target.asset.ip |
ICMP エラー メッセージの宛先 IP アドレス。 |
icmp_id |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
icmp_src_ip |
principal.ip 、principal.asset.ip |
ICMP エラー メッセージの送信元 IP アドレス。 |
icmp_type |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
intermediary_ip |
principal.ip 、principal.asset.ip |
イベント ID 111010 の message_info から抽出された仲介 IP アドレス。 |
invalid_ip |
なし | ロジックに使用される内部変数。UDM にマッピングされません。 |
ip_1 |
principal.ip 、principal.asset.ip |
送信元 IP アドレスと宛先 IP アドレスが同じ場合に、フォールバックとして抽出された送信元 IP アドレス。 |
ip_2 |
target.ip 、target.asset.ip |
送信元 IP と宛先 IP が同じ場合に、フォールバックとして抽出された宛先 IP アドレス。 |
ipprotocol |
network.ip_protocol |
さまざまなログ メッセージ形式から抽出され、大文字に変換された IP プロトコル。 |
issuer |
network.tls.client.certificate.issuer |
ピア証明書の発行者。イベント ID 717037 の message_details から抽出されます。 |
local_proxy_ip |
intermediary.ip |
イベント ID 713041 の message_details から抽出されたローカル プロキシ IP アドレス。 |
log_mssg |
security_result.description 、sr.action |
security_result.description フィールドの入力と認証アクションの抽出に使用されます。 |
login |
security_result.summary |
message_info から抽出されたログイン ステータス。 |
max_configured_rate.key |
security_result.outcomes.key |
キー「max_configured_rate」が security_result.outcomes 配列に追加されます。 |
max_configured_rate.value |
security_result.outcomes.value |
message_info から抽出された、構成された最大レートの値。 |
message_details |
各種フィールド | イベントの詳細を含むログ メッセージのメイン部分。イベント ID に応じてさまざまな grok パターンを使用して解析されます。 |
message_info |
metadata.description |
使用可能な場合に metadata.description フィールドに値を設定するために使用されます。 |
observer |
observer.hostname または observer.ip |
ログメッセージから抽出されたオブザーバーのホスト名または IP アドレス。 |
observer_ip |
observer.ip |
オブザーバーの IP アドレス。observer フィールドから抽出されます。 |
peer_type |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
policy |
target.resource.name |
イベント ID 113003 の message_details から抽出されたポリシー名。 |
policy_name |
target.resource.name |
ポリシー名。イベント ID 113009 と 113011 の message_details から抽出されます。 |
principal_ip |
principal.ip 、principal.asset.ip |
プリンシパル IP アドレス。イベント ID 113009 の message_details から抽出されます。 |
privilege_level_from |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
privilege_level_to |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
process |
principal.process.command_line |
イベント ID 711004 の message_details から抽出されたプロセス名。 |
protocol |
network.ip_protocol または network.application_protocol |
イベントで使用されるプロトコル。さまざまなログメッセージ形式から抽出されます。プロトコルが標準の IP プロトコル(ICMP、TCP、UDP、ESP)の場合は network.ip_protocol にマッピングされ、それ以外の場合は network.application_protocol にマッピングされます。 |
reason |
security_result.description |
イベントの理由。イベント ID 113016 の message_details から抽出されます。 |
remote_proxy_ip |
intermediary.ip |
イベント ID 713041 の message_details から抽出されたリモート プロキシ IP アドレス。 |
retrieved_file |
target.file.full_path |
message_info から抽出された、取得したファイルへのパス。 |
security_action |
security_result.action |
イベント コンテキストに基づいてパーサーによって導出されたセキュリティ アクション。 |
security_category |
security_result.category |
イベント コンテキストに基づいてパーサーによって導出されたセキュリティ カテゴリ。 |
security_result.description |
security_result.description |
ログメッセージから抽出または導出されたセキュリティ結果の説明。 |
security_result.severity |
security_result.severity |
セキュリティ結果の重大度。event_severity フィールドから取得されます。 |
security_result.summary |
security_result.summary |
ログメッセージから抽出または取得されたセキュリティ結果の概要。 |
sent_bytes |
network.sent_bytes |
message_info から抽出された送信バイト数。 |
ses_id |
network.session_id |
message_info から抽出されたセッション ID。 |
session_id |
network.session_id |
message_info から抽出されたセッション ID。 |
sess_type |
principal.hostname 、principal.asset.hostname |
セッション タイプ。log_mssg から抽出され、hostname が使用できない場合にホスト名として使用されます。 |
source_ip |
principal.ip 、principal.asset.ip |
さまざまなログ メッセージ形式から抽出された送信元 IP アドレス。 |
source_ip_port |
principal.port |
さまざまなログ メッセージ形式から抽出された送信元ポート。 |
src_email |
principal.user.email_addresses または principal.user.userid |
message_info から抽出された送信元メールアドレスまたはユーザー ID。値がメール形式と一致する場合は email_addresses に追加され、一致しない場合は userid として使用されます。 |
src_ip |
principal.ip 、principal.asset.ip |
送信元 IP アドレス。メインの grok パターンまたは他の特定のパターンから抽出されます。 |
src_port |
principal.port |
メインの grok パターンまたは他の特定のパターンから抽出された送信元ポート。 |
src_user |
principal.user.user_display_name |
イベント ID 713049 と 713120 の message_details から抽出されたソースユーザーの表示名。 |
subject |
network.tls.client.certificate.subject |
ピア証明書のサブジェクト。イベント ID 717037 の message_details から抽出されます。 |
summary |
security_result.summary |
イベント ID 113016 の message_details から抽出されたイベントの概要。 |
target_host |
target.hostname |
イベント ID 113004 の message_details から抽出されたターゲット ホスト名。 |
target_ip |
target.ip 、target.asset.ip |
イベント ID 113004 の message_details から抽出されたターゲット IP アドレス。 |
target_user |
target.user.userid |
イベント ID 113003 の message_details から抽出されたターゲット ユーザー ID。 |
task_duration |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
tcp_dst_ip |
target.ip 、target.asset.ip |
ICMP エラー メッセージの元の TCP ペイロードの宛先 IP アドレス。 |
tcp_dst_port |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
tcp_src_ip |
principal.ip 、principal.asset.ip |
ICMP エラー メッセージの元の TCP ペイロードの送信元 IP アドレス。 |
tcp_src_port |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
threshold |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
tls_version |
network.tls.version |
イベント ID 725002 の message_details から抽出された TLS バージョン。 |
ts |
@timestamp |
date フィルタを使用して解析されたイベントのタイムスタンプ。 |
ts_day |
@timestamp (一部) |
タイムスタンプから取得した月の日。@timestamp フィールドの作成に使用されます。 |
ts_month |
@timestamp (一部) |
タイムスタンプの月。@timestamp フィールドの作成に使用されます。 |
ts_time |
@timestamp (一部) |
タイムスタンプからの時間。@timestamp フィールドの作成に使用されます。 |
ts_year |
@timestamp (一部) |
タイムスタンプの年。@timestamp フィールドの作成に使用されます。 |
tunnel_type |
なし | このフィールドは解析されますが、UDM の IDM オブジェクトにはマッピングされません。 |
user |
principal.user.userid 、target.user.userid |
さまざまなログ メッセージ形式から抽出されたユーザー ID。 |
user_agent |
network.http.user_agent |
イベント ID 722055 の message_details から抽出されたユーザー エージェント文字列。 |
user_attr.key |
principal.user.attribute.labels.key |
イベント ID 734003 と 734001 の message_details から抽出されたユーザー属性のキー。 |
user_attr.value |
principal.user.attribute.labels.value |
イベント ID 734003 と 734001 の message_details から抽出されたユーザー属性の値。 |
userid |
principal.user.userid |
イベント ID 106103 の message_details から抽出されたユーザー ID。 |
username |
principal.user.userid |
イベント ID 111008、111009、111010、113008 の message_details から抽出されたユーザー名。 |
なし | metadata.vendor_name |
「CISCO」にハードコードされます。 |
なし | metadata.product_name |
「ASA VPN」または「VPN」にハードコードされています。 |
なし | metadata.event_type |
特定のフィールドとイベント ID の有無に基づいてパーサー ロジックによって決定されます。GENERIC_EVENT、NETWORK_CONNECTION、STATUS_UPDATE、NETWORK_FTP、USER_LOGIN、USER_LOGOUT、NETWORK_UNCATEGORIZED、USER_UNCATEGORIZED、NETWORK_FLOW のいずれかです。 |
なし | metadata.log_type |
「CISCO_VPN」にハードコードされています。 |
なし | metadata.event_timestamp |
解析された @timestamp フィールドからコピーされます。 |
なし | extensions.auth.type |
イベントのコンテキストに応じて、「VPN」、「AUTHTYPE_UNSPECIFIED」、「MACHINE」に設定します。 |
なし | security_result.about.resource.type |
イベント ID 209005 の場合は「PACKET FRAGMENT」に設定されます。 |
なし | is_alert |
重大度の高いイベント(event_severity 0 または 1)の場合は true に設定します。 |
なし | is_significant |
重大度の高いイベント(event_severity 0 または 1)の場合は true に設定します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。