Mengumpulkan log Akses Jarak Jauh Aman BeyondTrust
Dokumen ini menjelaskan cara mengumpulkan log Akses Jarak Jauh Aman BeyondTrust menggunakan Bindplane. Parser menangani dua format syslog. Format pertama menggunakan pasangan nilai kunci dalam pesan terstruktur, sedangkan format kedua menggunakan kolom yang dipisahkan pipa; parser mengekstrak kolom yang relevan dari kedua format tersebut dan memetakan ke UDM. Model ini juga melakukan kategorisasi jenis peristiwa berdasarkan kata kunci yang diekstrak dan menangani logika tertentu untuk peristiwa login/logout dan jenis autentikasi.
Sebelum memulai
- Pastikan Anda memiliki instance Google Security Operations.
- 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 Akses Jarak Jauh Aman BeyondTrust.
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: BEYONDTRUST_REMOTE_ACCESS 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 dukungan jarak jauh BeyondTrust
- Login ke UI web BeyondTrust.
- Pilih Appliance > Security > Appliance administration.
- Di bagian Syslog, lakukan tindakan berikut:
- Format pesan: Pilih Format BSD lama.
- Server syslog jarak jauh: Masukkan alamat IP dan Port Bindplane.
- Klik Kirim.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
datetime |
metadata.event_timestamp |
Stempel waktu diuraikan dari kolom datetime menggunakan format RFC3 339 jika kolom when tidak ada. |
deviceHost |
target.hostname |
Nilai deviceHost dipetakan langsung ke target.hostname . |
dstHost |
target.ip |
Nilai dstHost dipetakan langsung ke target.ip setelah divalidasi sebagai alamat IP yang valid. |
dstPriv |
additional.fields.[key=dstPriv].value.string_value |
Nilai dstPriv ditempatkan di kolom additional dengan kunci dstPriv . |
dstUid |
target.user.userid |
Nilai dstUid dipetakan langsung ke target.user.userid . |
dstUser |
target.user.user_display_name |
Nilai dstUser dipetakan langsung ke target.user.user_display_name . |
eventName |
metadata.event_type |
Jika eventName adalah login (tidak peka huruf besar/kecil), metadata.event_type ditetapkan ke USER_LOGIN . Jika eventName adalah logout (tidak peka huruf besar/kecil), metadata.event_type ditetapkan ke USER_LOGOUT . Jika tidak, jika eventName tidak kosong, metadata.event_type akan ditetapkan ke USER_UNCATEGORIZED . Jika eventName kosong, dan pesan cocok dengan pola grok kedua, metadata.event_type ditetapkan ke GENERIC_EVENT . Jika eventName kosong, dan pesan cocok dengan pola grok pertama, metadata.event_type ditetapkan ke GENERIC_EVENT . Jika srcUid , userid , atau who tidak kosong, metadata.event_type ditetapkan ke USER_CHANGE_PERMISSIONS . Jika deviceHost atau site tidak kosong, metadata.event_type akan ditetapkan ke USER_UNCATEGORIZED . Jika tidak, metadata.event_type ditetapkan ke GENERIC_EVENT . |
event_name |
additional.fields.[key=event_name].value.string_value |
Nilai event_name ditempatkan di kolom additional dengan kunci event_name . |
event_name |
metadata.product_event_type |
Nilai event_name digunakan bersama dengan kolom id untuk mengisi metadata.product_event_type dalam format [ id] - event_name``. |
externalKeyLabel |
additional.fields.[key=externalKeyLabel].value.string_value |
Nilai externalKeyLabel ditempatkan di kolom additional dengan kunci externalKeyLabel . |
id |
metadata.product_event_type |
Nilai id digunakan bersama dengan kolom event_name untuk mengisi metadata.product_event_type dalam format [ id] - event_name``. |
jumpGroupId |
additional.fields.[key=jumpGroupId].value.string_value |
Nilai jumpGroupId ditempatkan di kolom additional dengan kunci jumpGroupId . |
jumpGroupName |
additional.fields.[key=jumpGroupName].value.string_value |
Nilai jumpGroupName ditempatkan di kolom additional dengan kunci jumpGroupName . |
jumpGroupType |
additional.fields.[key=jumpGroupType].value.string_value |
Nilai jumpGroupType ditempatkan di kolom additional dengan kunci jumpGroupType . |
jumpointId |
additional.fields.[key=jumpointId].value.string_value |
Nilai jumpointId ditempatkan di kolom additional dengan kunci jumpointId . |
jumpointName |
additional.fields.[key=jumpointName].value.string_value |
Nilai jumpointName ditempatkan di kolom additional dengan kunci jumpointName . |
kv_data |
Berbagai kolom UDM | Kolom kv_data diuraikan menjadi key-value pair, yang kemudian dipetakan ke berbagai kolom UDM berdasarkan kuncinya (mis., eventName , when , who , who_ip , site , target , status , reason ). |
kvdata |
Berbagai kolom UDM | Kolom kvdata diuraikan menjadi key-value pair, yang kemudian dipetakan ke berbagai kolom UDM berdasarkan kuncinya (mis., msg , srcUser , srcUid , srcHost , dstUser , dstUid , dstHost , sessionId , jumpointId , jumpointName , jumpGroupId , jumpGroupName , jumpGroupType , externalKeyLabel , dstPriv ). |
message |
Berbagai kolom UDM | Kolom message diuraikan menggunakan pola grok untuk mengekstrak berbagai kolom, yang kemudian dipetakan ke kolom UDM. |
msg |
metadata.description |
Nilai msg dipetakan langsung ke metadata.description . |
product_event_type |
metadata.product_event_type |
Nilai product_event_type dipetakan langsung ke metadata.product_event_type . |
product_log_id |
metadata.product_log_id |
Nilai product_log_id dipetakan langsung ke metadata.product_log_id . |
process_id |
principal.process.pid |
Nilai process_id dipetakan langsung ke principal.process.pid . |
reason |
security_result.description |
Nilai reason dipetakan langsung ke security_result.description . |
segment_number |
additional.fields.[key=segment_number].value.string_value |
Nilai segment_number ditempatkan di kolom additional dengan kunci segment_number . |
sessionId |
network.session_id |
Nilai sessionId dipetakan langsung ke network.session_id . |
site |
target.hostname |
Nilai site dipetakan langsung ke target.hostname . |
site_id |
additional.fields.[key=site_id].value.string_value |
Nilai site_id ditempatkan di kolom additional dengan kunci site_id . |
srcHost |
principal.ip |
Nilai srcHost dipetakan langsung ke principal.ip setelah divalidasi sebagai alamat IP yang valid. |
srcUid |
principal.user.userid |
Nilai srcUid dipetakan langsung ke principal.user.userid . |
srcUser |
principal.user.user_display_name |
Nilai srcUser dipetakan langsung ke principal.user.user_display_name . |
status |
security_result.action |
Jika status adalah failure (tidak peka huruf besar/kecil), security_result.action akan ditetapkan ke BLOCK . Jika tidak, security_result.action ditetapkan ke ALLOW . |
status |
security_result.action_details |
Nilai status dipetakan langsung ke security_result.action_details . |
target |
target.application |
Nilai target dipetakan langsung ke target.application . rep_client diganti dengan Representative Console dan web/login diganti dengan Web/Login . |
target |
extensions.auth.type |
Jika target adalah rep_client , extensions.auth.type akan ditetapkan ke MACHINE . Jika target adalah web/login , extensions.auth.type akan ditetapkan ke SSO . Jika tidak, extensions.auth.type ditetapkan ke AUTHTYPE_UNSPECIFIED . |
timestamp |
metadata.event_timestamp |
timestamp dari log mentah digunakan sebagai penggantian jika datetime atau when tidak ada. |
total_segments |
additional.fields.[key=total_segments].value.string_value |
Nilai total_segments ditempatkan di kolom additional dengan kunci total_segments . |
device_product |
additional.fields.[key=device_product].value.string_value |
Nilai device_product ditempatkan di kolom additional dengan kunci device_product . |
device_vendor |
additional.fields.[key=device_vendor].value.string_value |
Nilai device_vendor ditempatkan di kolom additional dengan kunci device_vendor . |
device_version |
metadata.product_version |
Nilai device_version dipetakan langsung ke metadata.product_version . |
when |
metadata.event_timestamp |
Stempel waktu diuraikan dari kolom when menggunakan format UNIX jika ada. |
who |
principal.user.userid |
Jika kolom who cocok dengan pola ekspresi reguler, userid yang diekstrak akan dipetakan ke principal.user.userid . Jika tidak, seluruh kolom who akan dipetakan ke principal.user.userid . |
who |
principal.user.user_display_name |
Jika kolom who cocok dengan pola ekspresi reguler, user_display_name yang diekstrak akan dipetakan ke principal.user.user_display_name . |
who_ip |
principal.ip |
Nilai who_ip dipetakan langsung ke principal.ip . |
(Logika Parser) | metadata.log_type |
Jenis log ditetapkan ke BEYONDTRUST_REMOTE_ACCESS . |
(Logika Parser) | metadata.product_name |
Nama produk ditetapkan ke BeyondTrust Secure Remote Access . |
(Logika Parser) | metadata.vendor_name |
Nama vendor ditetapkan ke BeyondTrust . |
(Logika Parser) | security_result.summary |
Nilai ini berasal dari format User %{eventName} . |
(Logika Parser) | extensions.auth.mechanism |
Jika method berisi using password , mekanisme akan ditetapkan ke USERNAME_PASSWORD . Jika method berisi using elevate , mekanisme akan ditetapkan ke REMOTE . |
Perubahan
2022-09-30
Peningkatan:
- Menulis grok untuk mengurai syslog yang tidak diuraikan`.
- Memetakan
device_vendor
keadditional.fields
. - Memetakan
event_name
keadditional.fields
. - Memetakan
device_product
keadditional.fields
. - Memetakan
externalKeyLabel
keadditional.fields
. - Memetakan
dstPriv
keadditional.fields
. - Memetakan
filePath
ketarget.file.full_path
. - Memetakan
fsize
ketarget.file.size
.
2022-07-14
- Parser yang baru dibuat.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.