Mengumpulkan log sistem auditd Linux dan AIX
Parser ini menangani log audit Linux dalam format SYSLOG, yang mengubahnya menjadi UDM. Fungsi ini memproses pesan log berformat JSON dan teks biasa, mengekstrak kolom menggunakan grok, penguraian XML, dan teknik penguraian JSON, serta memetakan kolom tersebut ke kolom UDM yang sesuai berdasarkan jenis peristiwa. Parser juga menangani format log audit tertentu dari sistem AIX dan memperkaya UDM dengan kolom tambahan seperti security_result
dan detail perantara.
Sebelum memulai
- Pastikan Anda memiliki instance Google Security Operations.
- Pastikan Anda memiliki akses root ke host Auditd.
- Pastikan Anda telah menginstal rsyslog di host Auditd.
- Pastikan Anda memiliki Windows 2012 SP2 atau yang lebih baru atau host Linux dengan systemd.
- Jika berjalan di balik proxy, pastikan port firewall terbuka.
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Proses Transfer.
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
- Untuk penginstalan Windows, jalankan skrip berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Untuk penginstalan Linux, jalankan skrip berikut:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Opsi penginstalan tambahan dapat ditemukan di panduan penginstalan ini.
Mengonfigurasi Agen BindPlane untuk menyerap Syslog dan mengirim ke Google SecOps
- Akses komputer tempat BindPlane diinstal.
Edit file
config.yaml
sebagai berikut:receivers: tcplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: auditd raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Mulai ulang Agen BindPlane untuk menerapkan perubahan menggunakan perintah berikut:
sudo systemctl bindplane restart
Mengekspor Syslog dari Auditd
- Akses mesin tempat Anda ingin mengekspor log audit.
Buka file konfigurasi Auditd (biasanya terletak di
/etc/audit/auditd.conf
).sudo vi /etc/audit/auditd.conf
Temukan atau tambahkan baris berikut untuk mengonfigurasi auditd:
active = yes output = syslog log_format = ENRICHED dispatcher = /sbin/audispd
Opsional: Tentukan Syslog Facility: Tambahkan atau ubah baris berikut di auditd.conf
:
```none
syslog_facility = LOG_AUTHPRIV
```
Buka file konfigurasi audispd (biasanya terletak di
/etc/audisp/plugins.d/syslog.conf
):sudo vi /etc/audisp/plugins.d/syslog.conf
Temukan atau tambahkan baris berikut untuk mengonfigurasi audispd:
active = yes direction = out path = builtin_syslog type = builtin args = LOG_INFO format = string
Mulai ulang layanan Auditd untuk menerapkan perubahan:
sudo systemctl restart auditd
Gunakan alat seperti
tail
untuk memantau syslog dan memverifikasi bahwa log Auditd dikirim:tail -f /var/log/syslog | grep auditd # Follow syslog and filter for auditd messages (path may vary depending on your system)
Edit
rsyslog.conf
atau buat konfigurasi kustom:sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
Tambahkan aturan untuk meneruskan log:
if $programname == 'auditd' then @@<BindPlane_Agent>:<BindPlane_Port>
- Gunakan
@
untuk UDP atau@@
untuk TCP - Ganti
<BindPlane_Agent>
dengan IP/nama host server Anda. - Ganti
<BindPlane_Port>
dengan Port server Anda.
Mulai ulang layanan rsyslog untuk menerapkan perubahan:
sudo systemctl restart rsyslog
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
acct |
target.user.user_display_name |
Nilai acct dari log mentah dipetakan ke kolom target.user.user_display_name di UDM. Ini mewakili akun yang terkait dengan peristiwa. |
addr |
principal.ip |
Nilai addr dari log mentah dipetakan ke kolom principal.ip di UDM. Ini mewakili alamat IP akun utama yang terlibat dalam peristiwa. |
additional.fields |
additional.fields |
Kolom tambahan dari pasangan nilai kunci atau label yang diuraikan ditambahkan ke array additional.fields di UDM. |
agent.googleapis.com/log_file_path |
(Tidak Dipetakan) | Label ini ada di beberapa log mentah, tetapi tidak dipetakan ke objek IDM di UDM. |
algo |
(Tidak digunakan dalam contoh ini) | Meskipun ada di parser dan beberapa log mentah, kolom ini tidak digunakan dalam contoh yang diberikan dan tidak muncul di UDM akhir. |
application |
principal.application |
Berasal dari kolom terminal dalam log mentah atau kolom lain seperti exe , bergantung pada jenis log. Mewakili aplikasi yang terlibat. |
arch |
security_result.about.platform_version |
Arsitektur dari kolom arch log mentah dipetakan ke security_result.about.platform_version . |
auid |
about.user.userid , security_result.detection_fields.auid |
User-ID audit (auid ) dipetakan ke about.user.userid dan ditambahkan sebagai kolom deteksi di security_result . |
cmd |
target.process.command_line |
Perintah dari kolom cmd log mentah dipetakan ke target.process.command_line . |
collection_time |
(Tidak Dipetakan) | Kolom ini adalah waktu pengumpulan log dan tidak dipetakan ke objek IDM di UDM. |
comm |
principal.application |
Nama perintah (comm ) dipetakan ke principal.application . |
compute.googleapis.com/resource_name |
principal.hostname |
Nama resource dari label ini dipetakan ke principal.hostname . |
create_time |
(Tidak Dipetakan) | Kolom ini tidak dipetakan ke objek IDM di UDM. |
cwd |
security_result.detection_fields.cwd |
Direktori kerja saat ini (cwd ) ditambahkan sebagai kolom deteksi di security_result . |
data |
(Diproses) | Kolom data berisi pesan log utama dan diproses oleh parser untuk mengekstrak berbagai kolom. Kolom ini tidak dipetakan langsung ke satu kolom UDM. |
exe |
principal.process.file.full_path , target.process.file.full_path |
Jalur yang dapat dieksekusi (exe ) dipetakan ke principal.process.file.full_path atau target.process.file.full_path , bergantung pada konteksnya. |
extensions.auth.type |
extensions.auth.type |
Jenis autentikasi ditetapkan oleh logika parser berdasarkan jenis peristiwa. Sering kali ditetapkan ke MACHINE atau AUTHTYPE_UNSPECIFIED . |
fp |
network.tls.client.certificate.sha256 |
Sidik jari (fp ) diuraikan untuk mengekstrak hash SHA256 dan dipetakan ke network.tls.client.certificate.sha256 . |
insertId |
(Tidak Dipetakan) | Kolom ini tidak dipetakan ke objek IDM di UDM. |
jsonPayload.message |
(Diproses) | Kolom ini berisi pesan log utama dalam format JSON dan diproses oleh parser. |
key |
security_result.about.registry.registry_key |
Kolom kunci dipetakan ke security_result.about.registry.registry_key . |
labels |
(Diproses) | Label dari log mentah diproses dan dipetakan ke berbagai kolom UDM atau ditambahkan ke additional.fields . |
logName |
(Tidak Dipetakan) | Kolom ini tidak dipetakan ke objek IDM di UDM. |
msg |
security_result.summary |
Pesan (msg ) sering digunakan untuk mengisi kolom security_result.summary . |
network.application_protocol |
network.application_protocol |
Ditetapkan oleh logika parser berdasarkan jenis peristiwa (misalnya, SSH, HTTP). |
network.direction |
network.direction |
Ditetapkan oleh logika parser berdasarkan jenis peristiwa (misalnya, INBOUND, OUTBOUND). |
network.ip_protocol |
network.ip_protocol |
Ditetapkan oleh logika parser, biasanya ke TCP untuk peristiwa SSH. |
network.session_id |
network.session_id |
Dipetakan dari kolom ses atau berasal dari kolom lain. |
network.tls.cipher |
network.tls.cipher |
Informasi cipher diekstrak dari log mentah dan dipetakan ke kolom ini. |
network.tls.curve |
network.tls.curve |
Kurva pertukaran kunci diekstrak dari log mentah dan dipetakan ke kolom ini. |
pid |
principal.process.pid , target.process.pid |
ID proses (pid ) dipetakan ke principal.process.pid atau target.process.pid , bergantung pada konteksnya. |
ppid |
principal.process.parent_process.pid , target.process.parent_process.pid |
ID proses induk (ppid ) dipetakan ke principal.process.parent_process.pid atau target.process.parent_process.pid , bergantung pada konteksnya. |
principal.asset.hostname |
principal.asset.hostname |
Disalin dari principal.hostname . |
principal.asset.ip |
principal.asset.ip |
Disalin dari principal.ip . |
principal.platform |
principal.platform |
Ditetapkan oleh logika parser berdasarkan sistem operasi (mis., LINUX). |
principal.port |
principal.port |
Nomor port yang terkait dengan akun utama. |
principal.user.group_identifiers |
principal.user.group_identifiers |
ID grup yang terkait dengan pengguna utama. |
receiveTimestamp |
(Tidak Dipetakan) | Kolom ini adalah stempel waktu penerimaan log dan tidak dipetakan ke objek IDM di UDM. |
res |
security_result.action_details |
Hasilnya (res ) dipetakan ke security_result.action_details . |
resource.labels |
(Tidak Dipetakan) | Label ini ada di beberapa log mentah, tetapi tidak dipetakan ke objek IDM di UDM. |
resource.type |
(Tidak Dipetakan) | Kolom ini ada di beberapa log mentah, tetapi tidak dipetakan ke objek IDM di UDM. |
security_result.action |
security_result.action |
Ditetapkan oleh logika parser berdasarkan kolom res (misalnya, ALLOW, BLOCK). |
security_result.detection_fields |
security_result.detection_fields |
Berbagai kolom dari log mentah ditambahkan sebagai pasangan nilai kunci ke array ini untuk konteks. |
security_result.rule_id |
security_result.rule_id |
Ditetapkan oleh logika parser, sering kali ke type_name untuk peristiwa syscall. |
security_result.severity |
security_result.severity |
Ditetapkan oleh logika parser berdasarkan tingkat keparahan dalam log mentah. |
security_result.summary |
security_result.summary |
Ringkasan peristiwa, yang sering kali berasal dari kolom msg atau kolom relevan lainnya. |
ses |
network.session_id |
ID sesi (ses ) dipetakan ke network.session_id . |
source |
(Tidak Dipetakan) | Kolom ini berisi metadata tentang sumber log dan tidak dipetakan ke objek IDM di UDM. |
subj |
(Diproses) | Kolom subjek (subj ) diproses untuk mengekstrak informasi konteks pengguna dan keamanan. |
syscall |
security_result.about.labels.Syscall |
Nomor syscall ditambahkan sebagai label dalam security_result.about . |
target.administrative_domain |
target.administrative_domain |
Domain pengguna target. |
target.group.group_display_name |
target.group.group_display_name |
Nama grup target. |
target.ip |
target.ip |
Alamat IP target. |
target.port |
target.port |
Nomor port yang terkait dengan target. |
target.process.command_line |
target.process.command_line |
Command line proses target. |
target.resource.type |
target.resource.type |
Jenis resource target, yang ditetapkan oleh logika parser (misalnya, CREDENTIAL, SETTING). |
target.user.attribute.permissions |
target.user.attribute.permissions |
Izin yang terkait dengan pengguna target. |
target.user.group_identifiers |
target.user.group_identifiers |
ID grup yang terkait dengan pengguna target. |
target.user.userid |
target.user.userid |
ID pengguna target. |
textPayload |
(Diproses) | Payload teks log, yang diproses oleh parser untuk mengekstrak berbagai kolom. |
timestamp |
metadata.event_timestamp |
Stempel waktu peristiwa. |
tty |
security_result.about.labels.tty |
tty ditambahkan sebagai label dalam security_result.about . |
type |
metadata.product_event_type |
Jenis peristiwa (type ) dipetakan ke metadata.product_event_type . |
uid |
principal.user.userid , target.user.userid |
ID pengguna (uid ) dipetakan ke principal.user.userid atau target.user.userid , bergantung pada konteksnya. |
Perubahan
2024-05-08
- Jika nilainya bukan "?", maka pemetakan "kolom" ke "kolom33" ke "security_result.detection_fields".
- Jika "type_name" adalah "CRYPTO_KEY_USER", maka pemeta "exe" ke "principal.process.file.full_path".
- Jika "type_name" adalah "CRYPTO_KEY_USER", maka pemetakan "fp" ke "network.tls.client.certificate.sha256".
- Jika "type_name" adalah "CRYPTO_KEY_USER", maka pemetakan "pid" ke "principal.process.pid".
- Menambahkan pola Grok untuk mengurai pola log baru.
- Memetakan "syslog-tag" ke "security_result.detection_fields".
- Memetakan "inter_ip" ke "intermediary.ip".
- Memetakan "inter_hostname" ke "intermediary.hostname".
2024-05-02
- Jika "type_name" adalah "USER_MGMT", maka pemetaan "grp" ke "target.group.group_display_name".
- Jika "type_name" adalah "USER_MGMT", ubah pemetaan "uid" dari "principal.user.userid" menjadi "target.user.userid".
- Jika "type_name" adalah "USER_MGMT" dan "op" sama dengan "deleting-user-from-group", tetapkan "metadata.event_type" ke "GROUP_MODIFICATION".
- Jika "type_name" adalah "USER_MGMT", ubah pemetaan "exe" dari "target.process.file.full_path" menjadi "principal.process.file.full_path".
- Jika "type_name" adalah "USER_MGMT", maka pemetakan "id" ke "about.user.userid".
2024-04-08
- Jika "type_name" adalah "ADD_USER", principal_user_present adalah "true", target_user_present adalah "true", dan has_principal adalah "true", tetapkan "metadata.event_type" ke "USER_CREATION".
- Jika "type_name" adalah "USER_AUTH", maka pemetakan "acct" ke "target.user.user_display_name".
- Jika "type_name" adalah "USER_AUTH", maka pemetakan "uid" ke "principal.user.userid".
- Jika "type_name" tidak ada di "ADD_USER","USER_AUTH","CRED_ACQ", dan "USER_MGMT", maka pemetaan "auid" ke "about.user.userid".
- Jika "type_name" adalah "ADD_USER", petakan "auid" ke "target.user.userid".
- Jika "type_name" adalah "ADD_USER" atau "USER_AUTH", maka pemetaan "exe" ke "principal.process.file.full_path".
- Jika "type_name" adalah "ADD_USER", petakan "op" dan "id" ke "security_result.summary".
- Jika "type_name" adalah "USER_AUTH", maka pemetakan "op" dan "acct" ke "security_result.summary".
2024-03-22
- Menambahkan dukungan untuk pola log JSON baru.
- Memetakan "labels.compute.googleapis.com/resource_name","jsonPayload._HOSTNAME" , "CollectorHostName", "HOSTNAME", dan "Computer" ke "principal.hostname".
- Memetakan "HostIP" ke "principal.ip".
- Memetakan "ProcessID" dan "jsonPayload._PID" ke "principal.process.pid".
- Memetakan "SyslogMessage" ke "metadata.description".
- Memetakan "TenantId", "_ItemId", "_Internal_WorkspaceResourceId", "_ResourceId", dan "Facility" ke "additional.fields".
- Memetakan "SeverityLevel" ke "security_result.severity".
- Memetakan "SourceSystem" ke "principal.platform".
- Memetakan "jsonPayload._COMM" ke "principal.application".
- Memetakan "jsonPayload._EXE" ke "target.process.file.full_path".
- Memetakan "jsonPayload._AUDIT_FIELD_FILE" ke "target.file.full_path".
- Memetakan "jsonPayload._AUDIT_FIELD_HASH" ke "target.file.hash".
- Memetakan "jsonPayload._AUDIT_SESSION" ke "network.session_id".
- Memetakan "jsonPayload._PPID" ke "principal.process.parent_process.pid".
- Memetakan "jsonPayload._AUDIT_FIELD_A0", "jsonPayload._AUDIT_FIELD_A1", "jsonPayload._AUDIT_FIELD_A2", "jsonPayload._AUDIT_FIELD_A3", "jsonPayload._BOOT_ID", dan "jsonPayload._AUDIT_FIELD_EXIT" ke "security_result.detection_fields".
2023-11-27
- Menambahkan pemeriksaan validasi untuk memastikan "principal_user_present", "target_user_present", atau "has_principal" bernilai benar sebelum menetapkan "metadata.event_type" ke "USER_LOGIN".
- Menambahkan pemeriksaan validasi untuk memastikan "principal_user_present", "target_user_present", atau "has_principal" bernilai benar sebelum menetapkan "metadata.event_type" ke "USER_LOGOUT".
- Menambahkan pemeriksaan validasi untuk memastikan "principal_user_present", "target_user_present", atau "has_principal" bernilai benar sebelum menetapkan "metadata.event_type" ke "USER_CREATION".
- Menambahkan pemeriksaan validasi untuk memastikan "principal_user_present", "target_user_present", atau "has_principal" bernilai benar sebelum menetapkan "metadata.event_type" ke "USER_DELETION".
- Menambahkan pemeriksaan validasi untuk memastikan "principal_user_present", "target_user_present", atau "has_principal" bernilai benar sebelum menetapkan "metadata.event_type" ke "USER_UNCATEGORIZED".
- Menambahkan pemeriksaan validasi untuk memastikan "principal_user_present", "target_user_present", atau "has_principal" bernilai benar sebelum menetapkan "metadata.event_type" ke "USER_RESOURCE_ACCESS".
- Menambahkan pemeriksaan validasi untuk memastikan "principal_user_present", "target_user_present", atau "has_principal" bernilai benar sebelum menetapkan "metadata.event_type" ke "USER_CHANGE_PERMISSIONS".
- Jika detail pengguna ada dan detail mesin utama tidak ada, maka pemetaannya akan diubah "metadata.event_type" dari "USER_CREATION" menjadi "USER_UNCATEGORIZED".
- Jika detail pengguna ada dan detail mesin utama tidak ada, maka pemetaannya akan diubah "metadata.event_type" dari "USER_DELETION" menjadi "USER_UNCATEGORIZED".
2023-09-06
- Menambahkan pemetaan "CMD" ke "target.process.command_line" untuk "cron daemon(CROND)".
2023-06-20
- Peningkatan - Menambahkan atau mengubah pemetaan berikut saat type="ADD_USER" dan "DEL_USER"-
- Mengubah pemetaan "uid" dari "target.user.userid" menjadi "principal.user.userid".
- Memetakan "id" ke "target.user.userid".
- Memetakan "ID" ke "target.user.user_display_name".
- Mengubah pemetaan "UID" dari "principal.user.userid" menjadi "principal.user.user_display_name".
- Mengubah pemetaan "acct" dari "principal.user.user_display_name" menjadi "target.user.user_display_name" dan "target.user.userid".
2023-06-09
- Peningkatan - Mengubah "event_type" dari "USER_LOGIN" menjadi "USER_CREATION" saat "type=ADD_USER".
2023-04-17
- Penyempurnaan
- Menambahkan fungsi gsub untuk mengganti karakter "GS - Pemisah grup" yang merusak konstruksi JSON.
2023-04-10
- Penyempurnaan
- Menambahkan kolom 'gid','euid','egid','suid','fsuid','sgid','fsgid','tty','items' ke security_result.detection_fields.
- Selain itu, memetakan 'gid' ke 'principal.user.group_identifiers'.
- Memetakan 'euid' ke 'target.user.userid'.
- Memetakan 'egid' ke 'target.user.group_identifiers'.
2023-03-27
- Peningkatan - Menambahkan dukungan untuk "jsonPayload" yang berisi log.
2023-02-28
- Perbaikan bug - Peningkatan parser untuk mengonversi string yang dienkode hex menjadi ASCII.
2023-02-09
- Peningkatan - Mengubah grok untuk log yang berisi "type=PATH" guna mengambil nama host yang benar dari log.
2023-01-24
- Peningkatan -
- Log yang diuraikan dengan eventType sebagai "tac_plus".
- Menambahkan kondisi untuk memetakan berbagai jenis peristiwa "NETWORK_CONNECTION", "NETWORK_HTTP", "USER_LOGIN".
2022-12-02
- Peningkatan -
- Memetakan "user_name" ke "principal.user.userid".
- menambahkan pemeriksaan bersyarat untuk "dst_ip", "dst_port".
2022-10-31
- Peningkatan -
- Meningkatkan parser untuk mengurai log dengan type=ADD_USER, USER_MGMT, DEL_USER.
- Menambahkan pemeriksaan null untuk "principal_hostname".
- Menambahkan pemeriksaan on_error untuk "principal.process.file.full_path", "type_syscall_props.key", "type_syscall_props.arch", "msg2".
- Menambahkan pemeriksaan bersyarat untuk pemetaan ke event_type="FILE_OPEN", "USER_UNCATEGORIZED", "STATUS_UPDATE", "USER_DELETION".
- Memetakan "principal_user_userid" ke "principal.user.userid".
2022-11-16
- Peningkatan -
- Meningkatkan "GENERIC_EVENT" menjadi "STATUS_UPDATE" untuk jenis log yang berisi "Access Logs".
2022-10-14
- Peningkatan -
- Memigrasikan parser pelanggan ke parser default.
2022-10-13
- Peningkatan - Memetakan "vendor_name" ke "Linux".
- Memetakan "product_name" ke "AuditD".
- Mengurai log yang berisi "ProxySG" dan memetakan "ip" ke "target.ip", "port" ke "target.port" jika memungkinkan.
- Mengubah "event_type" dari "GENERIC_EVENT" menjadi "STATUS_UPDATE".
- Pemetaan yang diubah untuk "intermediary.hostname" menjadi "principal.hostname".
2022-07-28
- Peningkatan -
- Memetakan kolom 'auid' ke about.user.userid'.
- Memetakan kolom 'AUID' ke 'about.user.user_display_name'.
- Memetakan kolom 'proctitle' ke 'target.process.file.full_path'.
- Meningkatkan parser untuk mengurai log dengan type=DAEMON_END, CRYPTO_SESSION, CONFIG_CHANGE, PROCTITLE, USER_ERR, CRYPTO_KEY_USER.
- Menambahkan pemeriksaan bersyarat untuk laddr, addr, cipher, pfs, direction, acct, pid, ppid, cmd, exe, ses.
2022-06-17
- Peningkatan - Memetakan/Mengubah kolom berikut :
- Mengubah pemetaan "auid" dari "security_result.about.user.userid" menjadi "about.user.userid".
- Mengubah "event_type" untuk type=SYSCALL dari "SYSTEM_AUDIT_LOG_UNCATEGORIZED" menjadi "USER_UNCATEGORIZED".
- Memetakan "success" ke "security_result.summary".
- Memetakan "syscall", "exit", "tty", "a0", "a1", "a2", "a3" ke "security_result.about.labels".
- Menempatkan log dalam format ASCII.
2022-06-14
- peningkatan
- Meningkatkan parser untuk mengurai jenis log USER_CMD.
- Memetakan kolom 'cmd' ke 'principal.process.command_line'.
- Memetakan kolom 'ses' ke 'network.session_id'.
- Memetakan kolom 'res' ke 'security_result.action' dan 'security_result.action_details'.
- Memetakan kolom 'auid' dan 'cwd' ke 'security_result.detection_fields'.
26-04-2022
- peningkatan
- Meningkatkan persentase penguraian dengan mengurai semua log yang tidak diuraikan.