Cisco IOS ログを収集する
このドキュメントでは、Bindplane エージェントを使用して Cisco Internetwork Operating System(IOS)のログを Google Security Operations に取り込む方法について説明します。パーサーは、未加工の syslog メッセージを統合データモデル(UDM)に準拠した構造化形式に変換します。まず、一般的な Cisco IOS syslog 形式に基づいて grok パターンを使用してフィールドを初期化して抽出します。次に、抽出されたフィールドを対応する UDM フィールドにマッピングし、イベントを分類して、追加のコンテキストでデータを拡充してから、最後に構造化ログを UDM 形式で出力します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Windows 2016 以降、または
systemd
を使用する Linux ホストを使用していることを確認します。 - プロキシの背後で実行している場合は、ファイアウォールのポートが開いていることを確認します。
- Cisco IOS への特権アクセス権があることを確認します。
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: CISCO_IOS 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
Cisco IOS で Syslog を構成する
- Cisco IOS にログインします。
次のコマンドを入力して権限をエスカレーションします。
enable
次のコマンドを入力して、構成モードに切り替えます。
conf t
次のコマンドを入力します。
logging host <bindplane-server-ip> transport <tcp/udp> port <port-number> logging source-interface <interface>
<bindplane-server-ip>
は Bindplane エージェントの IP アドレスに、<port-number>
は構成されたポートに置き換えます。<tcp/udp>
は、Bindplane エージェントで構成されたリッスン プロトコルに置き換えます(例:udp
)。<interface>
は、Cisco インターフェース ID に置き換えます。
次のコマンドを入力して優先度を設定します。
logging trap Informational logging console Informational logging severity Informational
syslog 施設を設定します。
logging facility syslog
保存して終了します。
次のコマンドを入力して、再起動後も設定が維持されるようにします。
copy running-config startup-config
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
AcsSessionID | network.session_id | AcsSessionID フィールドから取得された値。 |
AcctRequest-Flags | security_result.summary | AcctRequest-Flags フィールドから取得された値。 |
AcctRequest-Flags | security_result.action | AcctRequest-Flags に Start が含まれている場合は、ALLOW に設定します。AcctRequest-Flags に Stop が含まれている場合は、BLOCK に設定します。 |
AuthenticationIdentityStore | additional.fields.key = AuthenticationIdentityStore 、value = AuthenticationIdentityStore |
AuthenticationIdentityStore フィールドから取得された値。 |
AuthenticationMethod | additional.fields.key = AuthenticationMethod 、value = AuthenticationMethod |
AuthenticationMethod フィールドから取得された値。 |
AuthenticationStatus | security_result.summary | AuthenticationStatus フィールドから取得された値。 |
Authen-Method | security_result.detection_fields.key = Authen-Method 、value = Authen-Method |
Authen-Method フィールドから取得された値。 |
Authen-Method | extensions.auth.type | Authen-Method に TacacsPlus が含まれている場合は、TACACS に設定します。 |
AVPair_priv-lvl | security_result.detection_fields.key = AVPair_priv-lvl 、value = AVPair_priv-lvl |
AVPair_priv-lvl フィールドから取得された値。 |
AVPair_start_time | additional.fields.key = AVPair_start_time 、value = AVPair_start_time |
AVPair_start_time フィールドから取得された値。 |
AVPair_task_id | additional.fields.key = AVPair_task_id 、value = AVPair_task_id |
AVPair_task_id フィールドから取得された値。 |
AVPair_timezone | additional.fields.key = AVPair_timezone 、value = AVPair_timezone |
AVPair_timezone フィールドから取得された値。 |
auditid | metadata.product_log_id | auditid フィールドから取得された値。 |
cisco_facility | IDM オブジェクトにはマッピングされません。 | |
cisco_message | metadata.description | cisco_message フィールドから取得された値。 |
cisco_mnemonic | security_result.rule_name | cisco_mnemonic フィールドから取得された値。 |
cisco_severity | security_result.severity | 値に基づいてさまざまな重大度レベルにマッピングされます。0: アラート、1: 重大、2: 高、3: エラー、4: 中、5: 低、6: 情報、7: 情報。 |
cisco_severity | security_result.severity_details | 値に基づいて、さまざまな重大度の詳細にマッピングされます。0: System unusable 、1: Immediate action needed 、2: Critical condition 、3: Error condition 、4: Warning condition 、5: Normal but significant condition 、6: Informational message only 、7: Appears during debugging only 。 |
cisco_tag | metadata.product_event_type | cisco_tag フィールドから取得された値。 |
cisco_tag | metadata.event_type | 値に基づいて、さまざまなイベントタイプにマッピングされます。SYS-6-LOGGINGHOST_STARTSTOP、TRACK-6-STATE、SYS-3-LOGGINGHOST_FAIL、CRYPTO-4-IKMP_NO_SA、HA_EM-3-FMPD_ACTION_NOTRACK、HA_EM-3-FMPD_ERROR: GENERIC_EVENT; IPSEC-3-REPLAY_ERROR、CRYPTO-4-RECVD_PKT_INV_SPI、IPSEC-3-HMAC_ERROR、FW-6-DROP_PKT、SEC-6-IPACCESSLOGP: NETWORK_UNCATEGORIZED; CRYPTO-4-IKMP_BAD_MESSAGE、CRYPTO-6-IKMP_NOT_ENCRYPTED、CRYPTO-6-IKMP_MODE_FAILURE: STATUS_UNCATEGORIZED; SYS-5-CONFIG_I: USER_UNCATEGORIZED。 |
ClientLatency | additional.fields.key = ClientLatency 、value = ClientLatency |
ClientLatency フィールドから取得された値。 |
CmdSet | additional.fields.key = CmdSet 、value = CmdSet |
CmdSet フィールドから取得された値。 |
コマンド | principal.process.command_line | コマンド フィールドから取得された値。 |
CPMSessionID | additional.fields.key = CPMSessionID 、value = CPMSessionID |
CPMSessionID フィールドから取得された値。 |
説明 | metadata.description | 説明フィールドから取得された値。 |
DestinationIPAddress | target.asset.ip | DestinationIPAddress フィールドから取得された値。 |
DestinationIPAddress | target.ip | DestinationIPAddress フィールドから取得された値。 |
DestinationPort | target.port | DestinationPort フィールドから取得された値。 |
Device_IP_Address | principal.asset.ip | Device_IP_Address フィールドから取得された値。 |
Device_IP_Address | principal.ip | Device_IP_Address フィールドから取得された値。 |
Device_Type | additional.fields.key = Device_Type 、value = Device_Type |
Device_Type フィールドから取得された値。 |
dst_ip | target.asset.ip | dst_ip フィールドから取得された値。 |
dst_ip | target.ip | dst_ip フィールドから取得された値。 |
dst_port | target.port | dst_port フィールドから取得された値。 |
dst_user | target.user.userid | dst_user フィールドから取得された値。 |
EnableFlag | security_result.detection_fields.key = EnableFlag 、value = EnableFlag |
EnableFlag フィールドから取得された値。 |
IdentityGroup | additional.fields.key = IdentityGroup 、value = IdentityGroup |
IdentityGroup フィールドから取得された値。 |
IdentitySelectionMatchedRule | security_result.detection_fields.key = IdentitySelectionMatchedRule 、value = IdentitySelectionMatchedRule |
IdentitySelectionMatchedRule フィールドから取得された値。 |
intermediary_host | intermediary.hostname | intermediary_host フィールドから取得された値。 |
intermediary_ip | intermediary.ip | intermediary_ip フィールドから取得された値。 |
IPSEC | additional.fields.key = IPSEC 、value = IPSEC |
IPSEC フィールドから取得された値。 |
ISEPolicySetName | extensions.auth.type | ISEPolicySetName に Tacacs が含まれている場合は、TACACS に設定します。 |
IsMachineAuthentication | additional.fields.key = IsMachineAuthentication 、value = IsMachineAuthentication |
IsMachineAuthentication フィールドから取得された値。 |
IsMachineIdentity | security_result.detection_fields.key = IsMachineIdentity 、value = IsMachineIdentity |
IsMachineIdentity フィールドから取得された値。 |
場所 | additional.fields.key = Location 、value = Location |
位置情報フィールドから取得された値。 |
MatchedCommandSet | additional.fields.key = MatchedCommandSet 、value = MatchedCommandSet |
MatchedCommandSet フィールドから取得された値。 |
メッセージ | IDM オブジェクトにはマッピングされません。 | |
metadata_event_type | metadata.event_type | metadata_event_type フィールドから取得された値。空または GENERIC_EVENT の場合、principal_mid_present と target_mid_present が true の場合は NETWORK_UNCATEGORIZED、principal_userid_present が true の場合は USER_UNCATEGORIZED、principal_mid_present が true の場合は STATUS_UPDATE、それ以外の場合は GENERIC_EVENT に設定します。Service に Login が含まれている場合は、principal_userid_present、principal_mid_present、target_mid_present が true の場合は USER_LOGIN に、principal_userid_present が true の場合は USER_UNCATEGORIZED に設定します。 |
Model_Name | additional.fields.key = Model_Name 、value = Model_Name |
Model_Name フィールドから取得された値。 |
名前 | additional.fields.key = Name 、value = Name |
Name フィールドから取得された値。 |
Network_Device_Profile | additional.fields.key = Network_Device_Profile 、value = Network_Device_Profile |
Network_Device_Profile フィールドから取得された値。 |
NetworkDeviceGroups | additional.fields.key = NetworkDeviceGroups 、value = NetworkDeviceGroups |
NetworkDeviceGroups フィールドから取得された値。 |
NetworkDeviceName | principal.asset.hostname | NetworkDeviceName フィールドから取得された値。 |
NetworkDeviceName | principal.hostname | NetworkDeviceName フィールドから取得された値。 |
NetworkDeviceProfileId | principal.resource.product_object_id | NetworkDeviceProfileId フィールドから取得された値。 |
pid | principal.process.pid | pid フィールドから取得された値。 |
ポート | principal.resource.attribute.labels.key = Port 、value = Port |
Port フィールドから取得された値。 |
権限レベル | security_result.detection_fields.key = Privilege-Level 、value = Privilege-Level |
Privilege-Level フィールドから取得された値。 |
product_event_type | metadata.product_event_type | product_event_type フィールドから取得された値。 |
プロトコル | additional.fields.key = Protocol 、value = Protocol |
Protocol フィールドから取得された値。 |
プロトコル | network.application_protocol | プロトコルが HTTPS の場合は、HTTPS に設定します。 |
プロトコル | network.ip_protocol | プロトコルが TCP または UDP の場合は、プロトコルの大文字の値に設定します。 |
reason | security_result.summary | reason フィールドから取得された値。 |
region | principal.location.country_or_region | リージョン フィールドから取得された値。 |
Remote-Address | target.asset.ip | IP アドレスとして検証された後、Remote-Address フィールドから取得された値。 |
Remote-Address | target.ip | IP アドレスとして検証された後、Remote-Address フィールドから取得された値。 |
RequestLatency | security_result.detection_fields.key = RequestLatency 、value = RequestLatency |
RequestLatency フィールドから取得された値。 |
レスポンス | additional.fields.key = Response 、value = Response |
Response フィールドから取得された値。 |
SelectedAccessService | security_result.action_details | SelectedAccessService フィールドから取得された値。 |
SelectedAuthenticationIdentityStores | security_result.detection_fields.key = SelectedAuthenticationIdentityStores 、value = SelectedAuthenticationIdentityStores |
SelectedAuthenticationIdentityStores フィールドから取得された値。 |
SelectedCommandSet | additional.fields.key = SelectedCommandSet 、value = SelectedCommandSet |
SelectedCommandSet フィールドから取得された値。 |
サービス | additional.fields.key = Service 、value = Service |
Service フィールドから取得された値。 |
Service-Argument | additional.fields.key = Service-Argument 、value = Service-Argument |
Service-Argument フィールドから取得された値。 |
重要度 | security_result.severity | severity に Notice が含まれている場合は、INFORMATIONAL に設定します。 |
Software_Version | additional.fields.key = Software_Version 、value = Software_Version |
Software_Version フィールドから取得された値。 |
source_facility | principal.asset.hostname | source_facility フィールドから取得された値。 |
source_facility | principal.hostname | source_facility フィールドから取得された値。 |
src_ip | principal.asset.ip | src_ip フィールドから取得された値。 |
src_ip | principal.ip | src_ip フィールドから取得された値。 |
src_mac | principal.mac | . を : に置き換えた後、src_mac フィールドから取得された値。 |
src_port | principal.port | src_port フィールドから取得された値。 |
src_user_id | principal.user.userid | src_user_id フィールドから取得された値。空の場合は、User フィールドの値を取得します。それでも空の場合は、StepData_9 フィールドの値を取得します。 |
src_user_name | principal.user.user_display_name | src_user_name フィールドから取得された値。 |
ステップ | additional.fields.key = Step 、value = Step |
Step フィールドから取得された値。 |
StepData_10 | principal.asset.hostname | StepData_10 フィールドから取得された値。 |
StepData_10 | principal.hostname | StepData_10 フィールドから取得された値。 |
StepData_13 | security_result.summary | StepData_13 フィールドから取得された値。 |
StepData_14 | security_result.detection_fields.key = StepData_14 、value = StepData_14 |
StepData_14 フィールドから取得された値。 |
StepData_15 | security_result.detection_fields.key = StepData_15 , value = StepData_15 |
StepData_15 フィールドから取得された値。 |
StepData_20 | security_result.detection_fields.key = StepData_20 、value = StepData_20 |
StepData_20 フィールドから取得された値。 |
StepData_21 | security_result.detection_fields.key = StepData_21 , value = StepData_21 |
StepData_21 フィールドから取得された値。 |
StepData_3 | additional.fields.key = StepData_3 、value = StepData_3 |
StepData_3 フィールドから取得された値。 |
StepData_4 | security_result.detection_fields.key = StepData_4 、value = StepData_4 |
StepData_4 フィールドから取得された値。 |
StepData_6 | security_result.detection_fields.key = StepData_6 , value = StepData_6 |
StepData_6 フィールドから取得された値。 |
StepData_7 | security_result.detection_fields.key = StepData_7 、value = StepData_7 |
StepData_7 フィールドから取得された値。 |
StepData_8 | security_result.detection_fields.key = StepData_8 、value = StepData_8 |
StepData_8 フィールドから取得された値。 |
StepData_9 | principal.user.userid | src_user_id フィールドと User フィールドが空の場合、StepData_9 フィールドから取得される値。 |
target_host | target.asset.hostname | target_host フィールドから取得された値。 |
target_host | target.hostname | target_host フィールドから取得された値。 |
timestamp | metadata.event_timestamp | 余分なスペースを削除して日付を解析した後に、タイムスタンプ フィールドから取得された値。 |
TotalAuthenLatency | additional.fields.key = TotalAuthenLatency 、value = TotalAuthenLatency |
TotalAuthenLatency フィールドから取得された値。 |
ts | metadata.event_timestamp | 日付を解析した後に ts フィールドから取得された値。 |
タイプ | security_result.category_details | Type フィールドから取得された値。 |
ユーザー | principal.user.userid | src_user_id が空の場合、User フィールドから取得される値。 |
UserType | additional.fields.key = UserType 、value = UserType |
UserType フィールドから取得された値。 |
metadata.vendor_name | CISCO に設定します。 |
|
metadata.product_name | CISCO_IOS に設定します。 |
|
metadata.log_type | CISCO_IOS に設定します。 |
変更点
2025-02-11
機能強化:
- 新しい Syslog ログ形式のサポートを追加しました。
2025-01-23
機能強化:
- 新しい Syslog ログ形式のサポートを追加しました。
2025-01-02
機能強化:
- 新しい Syslog ログ形式のサポートを追加しました。
2024-12-27
機能強化:
- 新しい Syslog ログ形式のサポートを追加しました。
2024-11-25
機能強化:
- 新しいログを解析するための Grok パターンを追加しました。
- syslog ヘッダーのホスト名を
target.hostname
からintermediary.hostname
にマッピングしました。
2024-11-19
機能強化:
- 新しい形式の Syslog ログのサポートを追加しました。
2024-10-28
機能強化:
- 新しいログを解析するための Grok パターンを追加しました。
2024-10-24
機能強化:
- 新しいログを解析するための Grok パターンを追加しました。
2024-10-01
機能強化:
- 新しいログを解析するための Grok パターンを追加しました。
2024-07-04
機能強化:
- syslog ログの新しいパターンのサポートを追加しました。
2024-04-02
機能強化:
- 新しいログタイプを解析するための新しい Grok パターンを追加しました。
- 新しいフィールドを対応する UDM フィールドにマッピングしました。
2023-10-04
機能強化:
- 新しいログタイプを解析するための新しい Grok パターンを追加しました。
source_facility
をprincipal.hostname
にマッピングしました。
2023-08-11
機能強化:
- メッセージに
HOST=
が含まれている場合にintermediary.ip
をマッピングしました。 - メッセージに
User:
が含まれている場合にprincipal.user.userid
をマッピングしました。 - メッセージに
command:
が含まれている場合にprincipal.process.command_line
をマッピングしました。 - メッセージに
username
が含まれている場合にtarget.user.userid
をマッピングしました。 metadata.event_type
をより具体的なmetadata.event_type
にマッピングしました。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。