Mengumpulkan log Cisco IOS
Dokumen ini menjelaskan cara menyerap log Cisco Internetwork Operating System (IOS) ke Google Security Operations menggunakan agen Bindplane. Parser mengubah pesan syslog mentah menjadi format terstruktur yang sesuai dengan Model Data Terpadu (UDM). Pertama-tama, kolom diinisialisasi dan diekstrak menggunakan pola grok berdasarkan format syslog Cisco IOS umum. Kemudian, kolom yang diekstrak dipetakan ke kolom UDM yang sesuai, mengategorikan peristiwa, dan memperkaya data dengan konteks tambahan sebelum akhirnya menghasilkan log terstruktur dalam format UDM.
Sebelum memulai
- Pastikan Anda memiliki instance Google SecOps.
- Pastikan Anda menggunakan Windows 2016 atau yang lebih baru, atau host Linux dengan
systemd
. - Jika berjalan di belakang proxy, pastikan port firewall terbuka.
- Pastikan Anda memiliki akses istimewa ke Cisco IOS.
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat BindPlane akan diinstal.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Profil.
- Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.
Menginstal agen Bindplane
Penginstalan Windows
- Buka Command Prompt atau PowerShell sebagai administrator.
Jalankan perintah berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Penginstalan Linux
- Buka terminal dengan hak istimewa root atau sudo.
Jalankan perintah berikut:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Referensi penginstalan tambahan
- Untuk opsi penginstalan tambahan, lihat panduan penginstalan ini.
Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps
Akses file konfigurasi:
- Cari file
config.yaml
. Biasanya, file ini berada di direktori/etc/bindplane-agent/
di Linux atau di direktori penginstalan di Windows. - Buka file menggunakan editor teks (misalnya,
nano
,vi
, atau Notepad).
- Cari file
Edit file
config.yaml
sebagai berikut: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
Ganti port dan alamat IP sesuai kebutuhan di infrastruktur Anda.
Ganti
<customer_id>
dengan ID pelanggan yang sebenarnya.Perbarui
/path/to/ingestion-authentication-file.json
ke jalur tempat file autentikasi disimpan di bagian Dapatkan file autentikasi penyerapan Google SecOps.
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:
sudo systemctl restart bindplane-agent
Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:
net stop BindPlaneAgent && net start BindPlaneAgent
Mengonfigurasi Syslog di Cisco IOS
- Login ke Cisco IOS.
Tingkatkan hak istimewa dengan memasukkan perintah berikut:
enable
Beralih ke mode konfigurasi dengan memasukkan perintah berikut:
conf t
Masukkan perintah berikut:
logging host <bindplane-server-ip> transport <tcp/udp> port <port-number> logging source-interface <interface>
- Ganti
<bindplane-server-ip>
dengan alamat IP agen Bindplane, dan<port-number>
dengan port yang dikonfigurasi. - Ganti
<tcp/udp>
dengan protokol pendengar yang dikonfigurasi di agen BindPlane; misalnya,udp
. - Ganti
<interface>
dengan ID antarmuka Cisco.
- Ganti
Tetapkan tingkat prioritas dengan memasukkan perintah berikut:
logging trap Informational logging console Informational logging severity Informational
Menetapkan fasilitas syslog:
logging facility syslog
Simpan dan keluar.
Konfigurasi setelan agar tetap ada setelah dimulai ulang dengan memasukkan perintah berikut:
copy running-config startup-config
Tabel Pemetaan UDM
Kolom log | Pemetaan UDM | Logika |
---|---|---|
AcsSessionID | network.session_id | Nilai yang diambil dari kolom AcsSessionID. |
AcctRequest-Flags | security_result.summary | Nilai diambil dari kolom AcctRequest-Flags. |
AcctRequest-Flags | security_result.action | Jika AcctRequest-Flags berisi Start , tetapkan ke ALLOW . Jika AcctRequest-Flags berisi Stop , tetapkan ke BLOCK . |
AuthenticationIdentityStore | additional.fields.key = AuthenticationIdentityStore , value = AuthenticationIdentityStore |
Nilai yang diambil dari kolom AuthenticationIdentityStore. |
AuthenticationMethod | additional.fields.key = AuthenticationMethod , value = AuthenticationMethod |
Nilai yang diambil dari kolom AuthenticationMethod. |
AuthenticationStatus | security_result.summary | Nilai yang diambil dari kolom AuthenticationStatus. |
Authen-Method | security_result.detection_fields.key = Authen-Method , value = Authen-Method |
Nilai yang diambil dari kolom Authen-Method. |
Authen-Method | extensions.auth.type | Jika Authen-Method berisi TacacsPlus , setel ke TACACS . |
AVPair_priv-lvl | security_result.detection_fields.key = AVPair_priv-lvl , value = AVPair_priv-lvl |
Nilai diambil dari kolom AVPair_priv-lvl. |
AVPair_start_time | additional.fields.key = AVPair_start_time , value = AVPair_start_time |
Nilai diambil dari kolom AVPair_start_time. |
AVPair_task_id | additional.fields.key = AVPair_task_id , value = AVPair_task_id |
Nilai yang diambil dari kolom AVPair_task_id. |
AVPair_timezone | additional.fields.key = AVPair_timezone , value = AVPair_timezone |
Nilai diambil dari kolom AVPair_timezone. |
auditid | metadata.product_log_id | Nilai diambil dari kolom auditid. |
cisco_facility | Tidak dipetakan ke objek IDM. | |
cisco_message | metadata.description | Nilai diambil dari kolom cisco_message. |
cisco_mnemonic | security_result.rule_name | Nilai diambil dari kolom cisco_mnemonic. |
cisco_severity | security_result.severity | Dipetakan ke tingkat keparahan yang berbeda berdasarkan nilai: 0: ALERT, 1: CRITICAL, 2: HIGH, 3: ERROR, 4: MEDIUM, 5: LOW, 6: INFORMATIONAL, 7: INFORMATIONAL. |
cisco_severity | security_result.severity_details | Dipetakan ke detail tingkat keparahan yang berbeda berdasarkan nilai: 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 | Nilai yang diambil dari kolom cisco_tag. |
cisco_tag | metadata.event_type | Dipetakan ke jenis peristiwa yang berbeda berdasarkan nilai: 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 |
Nilai yang diambil dari kolom ClientLatency. |
CmdSet | additional.fields.key = CmdSet , value = CmdSet |
Nilai diambil dari kolom CmdSet. |
perintah | principal.process.command_line | Nilai yang diambil dari kolom perintah. |
CPMSessionID | additional.fields.key = CPMSessionID , value = CPMSessionID |
Nilai yang diambil dari kolom CPMSessionID. |
deskripsi | metadata.description | Nilai yang diambil dari kolom deskripsi. |
DestinationIPAddress | target.asset.ip | Nilai diambil dari kolom DestinationIPAddress. |
DestinationIPAddress | target.ip | Nilai diambil dari kolom DestinationIPAddress. |
DestinationPort | target.port | Nilai diambil dari kolom DestinationPort. |
Device_IP_Address | principal.asset.ip | Nilai diambil dari kolom Device_IP_Address. |
Device_IP_Address | principal.ip | Nilai diambil dari kolom Device_IP_Address. |
Device_Type | additional.fields.key = Device_Type , value = Device_Type |
Nilai diambil dari kolom Device_Type. |
dst_ip | target.asset.ip | Nilai diambil dari kolom dst_ip. |
dst_ip | target.ip | Nilai diambil dari kolom dst_ip. |
dst_port | target.port | Nilai diambil dari kolom dst_port. |
dst_user | target.user.userid | Nilai diambil dari kolom dst_user. |
EnableFlag | security_result.detection_fields.key = EnableFlag , value = EnableFlag |
Nilai yang diambil dari kolom EnableFlag. |
IdentityGroup | additional.fields.key = IdentityGroup , value = IdentityGroup |
Nilai yang diambil dari kolom IdentityGroup. |
IdentitySelectionMatchedRule | security_result.detection_fields.key = IdentitySelectionMatchedRule , value = IdentitySelectionMatchedRule |
Nilai yang diambil dari kolom IdentitySelectionMatchedRule. |
intermediary_host | intermediary.hostname | Nilai diambil dari kolom intermediary_host. |
intermediary_ip | intermediary.ip | Nilai diambil dari kolom intermediary_ip. |
IPSEC | additional.fields.key = IPSEC , value = IPSEC |
Nilai yang diambil dari kolom IPSEC. |
ISEPolicySetName | extensions.auth.type | Jika ISEPolicySetName berisi Tacacs , tetapkan ke TACACS . |
IsMachineAuthentication | additional.fields.key = IsMachineAuthentication , value = IsMachineAuthentication |
Nilai yang diambil dari kolom IsMachineAuthentication. |
IsMachineIdentity | security_result.detection_fields.key = IsMachineIdentity , value = IsMachineIdentity |
Nilai diambil dari kolom IsMachineIdentity. |
Lokasi | additional.fields.key = Location , value = Location |
Nilai diambil dari kolom Lokasi. |
MatchedCommandSet | additional.fields.key = MatchedCommandSet , value = MatchedCommandSet |
Nilai diambil dari kolom MatchedCommandSet. |
pesan | Tidak dipetakan ke objek IDM. | |
metadata_event_type | metadata.event_type | Nilai diambil dari kolom metadata_event_type. Jika kosong atau GENERIC_EVENT , tetapkan ke NETWORK_UNCATEGORIZED jika principal_mid_present dan target_mid_present bernilai benar (true), USER_UNCATEGORIZED jika principal_userid_present bernilai benar (true), STATUS_UPDATE jika principal_mid_present bernilai benar (true), atau GENERIC_EVENT jika tidak. Jika Layanan berisi Login , tetapkan ke USER_LOGIN jika principal_userid_present, principal_mid_present, dan target_mid_present bernilai benar (true), atau USER_UNCATEGORIZED jika principal_userid_present bernilai benar (true). |
Model_Name | additional.fields.key = Model_Name , value = Model_Name |
Nilai diambil dari kolom Model_Name. |
Nama | additional.fields.key = Name , value = Name |
Nilai yang diambil dari kolom Nama. |
Network_Device_Profile | additional.fields.key = Network_Device_Profile , value = Network_Device_Profile |
Nilai diambil dari kolom Network_Device_Profile. |
NetworkDeviceGroups | additional.fields.key = NetworkDeviceGroups , value = NetworkDeviceGroups |
Nilai yang diambil dari kolom NetworkDeviceGroups. |
NetworkDeviceName | principal.asset.hostname | Nilai yang diambil dari kolom NetworkDeviceName. |
NetworkDeviceName | principal.hostname | Nilai yang diambil dari kolom NetworkDeviceName. |
NetworkDeviceProfileId | principal.resource.product_object_id | Nilai yang diambil dari kolom NetworkDeviceProfileId. |
pid | principal.process.pid | Nilai diambil dari kolom pid. |
Port | principal.resource.attribute.labels.key = Port , value = Port |
Nilai diambil dari kolom Port. |
Tingkat Hak Istimewa | security_result.detection_fields.key = Privilege-Level , value = Privilege-Level |
Nilai diambil dari kolom Tingkat Hak Istimewa. |
product_event_type | metadata.product_event_type | Nilai diambil dari kolom product_event_type. |
Protokol | additional.fields.key = Protocol , value = Protocol |
Nilai diambil dari kolom Protocol. |
protokol | network.application_protocol | Jika protokolnya adalah HTTPS , tetapkan ke HTTPS . |
protokol | network.ip_protocol | Jika protokolnya adalah TCP atau UDP , tetapkan ke nilai huruf besar protokol. |
alasan | security_result.summary | Nilai diambil dari kolom alasan. |
region | principal.location.country_or_region | Nilai diambil dari kolom wilayah. |
Remote-Address | target.asset.ip | Nilai diambil dari kolom Remote-Address setelah divalidasi sebagai alamat IP. |
Remote-Address | target.ip | Nilai diambil dari kolom Remote-Address setelah divalidasi sebagai alamat IP. |
RequestLatency | security_result.detection_fields.key = RequestLatency , value = RequestLatency |
Nilai diambil dari kolom RequestLatency. |
Respons | additional.fields.key = Response , value = Response |
Nilai diambil dari kolom Respons. |
SelectedAccessService | security_result.action_details | Nilai diambil dari kolom SelectedAccessService. |
SelectedAuthenticationIdentityStores | security_result.detection_fields.key = SelectedAuthenticationIdentityStores , value = SelectedAuthenticationIdentityStores |
Nilai diambil dari kolom SelectedAuthenticationIdentityStores. |
SelectedCommandSet | additional.fields.key = SelectedCommandSet , value = SelectedCommandSet |
Nilai diambil dari kolom SelectedCommandSet. |
Layanan | additional.fields.key = Service , value = Service |
Nilai diambil dari kolom Layanan. |
Service-Argument | additional.fields.key = Service-Argument , value = Service-Argument |
Nilai diambil dari kolom Service-Argument. |
tingkat keseriusan, | security_result.severity | Jika tingkat keparahan berisi Notice , tetapkan ke INFORMASI. |
Software_Version | additional.fields.key = Software_Version , value = Software_Version |
Nilai yang diambil dari kolom Software_Version. |
source_facility | principal.asset.hostname | Nilai diambil dari kolom source_facility. |
source_facility | principal.hostname | Nilai diambil dari kolom source_facility. |
src_ip | principal.asset.ip | Nilai yang diambil dari kolom src_ip. |
src_ip | principal.ip | Nilai yang diambil dari kolom src_ip. |
src_mac | principal.mac | Nilai diambil dari kolom src_mac setelah mengganti . dengan : . |
src_port | principal.port | Nilai diambil dari kolom src_port. |
src_user_id | principal.user.userid | Nilai diambil dari kolom src_user_id. Jika kosong, ambil nilai dari kolom Pengguna. Jika masih kosong, ambil nilai dari kolom StepData_9. |
src_user_name | principal.user.user_display_name | Nilai diambil dari kolom src_user_name. |
Langkah | additional.fields.key = Step , value = Step |
Nilai yang diambil dari kolom Langkah. |
StepData_10 | principal.asset.hostname | Nilai diambil dari kolom StepData_10. |
StepData_10 | principal.hostname | Nilai diambil dari kolom StepData_10. |
StepData_13 | security_result.summary | Nilai diambil dari kolom StepData_13. |
StepData_14 | security_result.detection_fields.key = StepData_14 , value = StepData_14 |
Nilai diambil dari kolom StepData_14. |
StepData_15 | security_result.detection_fields.key = StepData_15 , value = StepData_15 |
Nilai diambil dari kolom StepData_15. |
StepData_20 | security_result.detection_fields.key = StepData_20 , value = StepData_20 |
Nilai diambil dari kolom StepData_20. |
StepData_21 | security_result.detection_fields.key = StepData_21 , value = StepData_21 |
Nilai diambil dari kolom StepData_21. |
StepData_3 | additional.fields.key = StepData_3 , value = StepData_3 |
Nilai diambil dari kolom StepData_3. |
StepData_4 | security_result.detection_fields.key = StepData_4 , value = StepData_4 |
Nilai diambil dari kolom StepData_4. |
StepData_6 | security_result.detection_fields.key = StepData_6 , value = StepData_6 |
Nilai diambil dari kolom StepData_6. |
StepData_7 | security_result.detection_fields.key = StepData_7 , value = StepData_7 |
Nilai diambil dari kolom StepData_7. |
StepData_8 | security_result.detection_fields.key = StepData_8 , value = StepData_8 |
Nilai diambil dari kolom StepData_8. |
StepData_9 | principal.user.userid | Nilai diambil dari kolom StepData_9 jika kolom src_user_id dan User kosong. |
target_host | target.asset.hostname | Nilai diambil dari kolom target_host. |
target_host | target.hostname | Nilai diambil dari kolom target_host. |
timestamp | metadata.event_timestamp | Nilai diambil dari kolom stempel waktu setelah menghapus spasi tambahan dan mengurai tanggal. |
TotalAuthenLatency | additional.fields.key = TotalAuthenLatency , value = TotalAuthenLatency |
Nilai diambil dari kolom TotalAuthenLatency. |
ts | metadata.event_timestamp | Nilai diambil dari kolom ts setelah mengurai tanggal. |
Jenis | security_result.category_details | Nilai diambil dari kolom Jenis. |
Pengguna | principal.user.userid | Nilai diambil dari kolom Pengguna jika src_user_id kosong. |
UserType | additional.fields.key = UserType , value = UserType |
Nilai yang diambil dari kolom UserType. |
metadata.vendor_name | Tetapkan ke CISCO . |
|
metadata.product_name | Tetapkan ke CISCO_IOS . |
|
metadata.log_type | Tetapkan ke CISCO_IOS . |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.