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, alur ini melakukan inisialisasi dan mengekstrak kolom menggunakan pola grok berdasarkan format syslog Cisco IOS yang umum. Kemudian, alat ini memetakan kolom yang diekstrak 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 balik proxy, pastikan port firewall terbuka.
- Pastikan Anda memiliki akses dengan hak istimewa ke Cisco IOS.
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Proses Transfer. 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 mengirim ke Google SecOps
Akses file konfigurasi:
- Temukan 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).
- Temukan 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 Mendapatkan 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 pemrosesan 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
Tetapkan fasilitas syslog:
logging facility syslog
Simpan dan keluar.
Konfigurasikan setelan agar tetap ada setelah mulai ulang dengan memasukkan perintah berikut:
copy running-config startup-config
Tabel Pemetaan UDM
Kolom log | Pemetaan UDM | Logika |
---|---|---|
AcsSessionID | network.session_id | Nilai 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 diambil dari kolom AuthenticationIdentityStore. |
AuthenticationMethod | additional.fields.key = AuthenticationMethod , value = AuthenticationMethod |
Nilai diambil dari kolom AuthenticationMethod. |
AuthenticationStatus | security_result.summary | Nilai diambil dari kolom AuthenticationStatus. |
Authen-Method | security_result.detection_fields.key = Authen-Method , value = Authen-Method |
Nilai diambil dari kolom Authen-Method. |
Authen-Method | extensions.auth.type | Jika Authen-Method berisi TacacsPlus , tetapkan 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 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 berbagai tingkat keparahan berdasarkan nilai: 0: NOTIFIKASI, 1: KRITIS, 2: TINGGI, 3: ERROR, 4: SEDANG, 5: RENDAH, 6: INFORMASI, 7: INFORMASI. |
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 diambil dari kolom cisco_tag. |
cisco_tag | metadata.event_type | Dipetakan ke berbagai jenis peristiwa 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 diambil dari kolom ClientLatency. |
CmdSet | additional.fields.key = CmdSet , value = CmdSet |
Nilai diambil dari kolom CmdSet. |
perintah | principal.process.command_line | Nilai diambil dari kolom perintah. |
CPMSessionID | additional.fields.key = CPMSessionID , value = CPMSessionID |
Nilai diambil dari kolom CPMSessionID. |
deskripsi | metadata.description | Nilai 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 diambil dari kolom EnableFlag. |
IdentityGroup | additional.fields.key = IdentityGroup , value = IdentityGroup |
Nilai diambil dari kolom IdentityGroup. |
IdentitySelectionMatchedRule | security_result.detection_fields.key = IdentitySelectionMatchedRule , value = IdentitySelectionMatchedRule |
Nilai 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 diambil dari kolom IPSEC. |
ISEPolicySetName | extensions.auth.type | Jika ISEPolicySetName berisi Tacacs , tetapkan ke TACACS . |
IsMachineAuthentication | additional.fields.key = IsMachineAuthentication , value = IsMachineAuthentication |
Nilai 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, USER_UNCATEGORIZED jika principal_userid_present bernilai benar, STATUS_UPDATE jika principal_mid_present bernilai benar, 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, atau USER_UNCATEGORIZED jika principal_userid_present bernilai benar. |
Model_Name | additional.fields.key = Model_Name , value = Model_Name |
Nilai diambil dari kolom Model_Name. |
Nama | additional.fields.key = Name , value = Name |
Nilai 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 diambil dari kolom NetworkDeviceGroups. |
NetworkDeviceName | principal.asset.hostname | Nilai diambil dari kolom NetworkDeviceName. |
NetworkDeviceName | principal.hostname | Nilai diambil dari kolom NetworkDeviceName. |
NetworkDeviceProfileId | principal.resource.product_object_id | Nilai 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 Privilege-Level. |
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 protokol adalah HTTPS , tetapkan ke HTTPS . |
protokol | network.ip_protocol | Jika protokol adalah TCP atau UDP , tetapkan ke nilai protokol huruf besar. |
alasan | security_result.summary | Nilai diambil dari kolom alasan. |
region | principal.location.country_or_region | Nilai diambil dari kolom region. |
Remote-Address | target.asset.ip | Nilai diambil dari kolom Remote-Address setelah memvalidasinya sebagai alamat IP. |
Remote-Address | target.ip | Nilai diambil dari kolom Remote-Address setelah memvalidasinya 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 keparahan berisi Notice , tetapkan ke INFORMASI. |
Software_Version | additional.fields.key = Software_Version , value = Software_Version |
Nilai 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 diambil dari kolom src_ip. |
src_ip | principal.ip | Nilai 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 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 diambil dari kolom UserType. |
metadata.vendor_name | Tetapkan ke CISCO . |
|
metadata.product_name | Tetapkan ke CISCO_IOS . |
|
metadata.log_type | Tetapkan ke CISCO_IOS . |
Perubahan
2025-02-11
Peningkatan:
- Menambahkan dukungan untuk format log syslog baru.
2025-01-23
Peningkatan:
- Menambahkan dukungan untuk format log syslog baru.
2025-01-02
Peningkatan:
- Menambahkan dukungan untuk format log syslog baru.
2024-12-27
Peningkatan:
- Menambahkan dukungan untuk format log syslog baru.
2024-11-25
Peningkatan:
- Menambahkan pola Grok untuk mengurai log baru.
- Nama host yang dipetakan di header syslog ke
intermediary.hostname
daritarget.hostname
.
2024-11-19
Peningkatan:
- Menambahkan dukungan untuk format log syslog baru.
2024-10-28
Peningkatan:
- Menambahkan pola Grok untuk mengurai log baru.
2024-10-24
Peningkatan:
- Menambahkan pola Grok untuk mengurai log baru.
2024-10-01
Peningkatan:
- Menambahkan pola Grok untuk mengurai log baru.
2024-07-04
Peningkatan:
- Menambahkan dukungan untuk pola log syslog baru.
2024-04-02
Peningkatan:
- Menambahkan pola Grok baru untuk mengurai jenis log baru.
- Memetakan kolom baru ke kolom UDM yang sesuai.
2023-10-04
Peningkatan:
- Menambahkan pola Grok baru untuk mengurai jenis log baru.
- Memetakan
source_facility
keprincipal.hostname
.
2023-08-11
Peningkatan:
- Memetakan
intermediary.ip
saat pesan berisiHOST=
. - Memetakan
principal.user.userid
saat pesan berisiUser:
. - Memetakan
principal.process.command_line
saat pesan berisicommand:
. - Memetakan
target.user.userid
saat pesan berisiusername
. - Memetakan
metadata.event_type
kemetadata.event_type
yang lebih spesifik.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.