Mengumpulkan log sistem auditd Linux dan AIX

Didukung di:

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

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Proses Transfer.

Mendapatkan ID pelanggan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Profil.
  3. Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.

Menginstal Agen BindPlane

  1. Untuk penginstalan Windows, jalankan skrip berikut:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. 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
  3. Opsi penginstalan tambahan dapat ditemukan di panduan penginstalan ini.

Mengonfigurasi Agen BindPlane untuk menyerap Syslog dan mengirim ke Google SecOps

  1. Akses komputer tempat BindPlane diinstal.
  2. 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
    
  3. Mulai ulang Agen BindPlane untuk menerapkan perubahan menggunakan perintah berikut: sudo systemctl bindplane restart

Mengekspor Syslog dari Auditd

  1. Akses mesin tempat Anda ingin mengekspor log audit.
  2. Buka file konfigurasi Auditd (biasanya terletak di /etc/audit/auditd.conf).

    sudo vi /etc/audit/auditd.conf
    
  3. 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
```
  1. Buka file konfigurasi audispd (biasanya terletak di /etc/audisp/plugins.d/syslog.conf):

    sudo vi /etc/audisp/plugins.d/syslog.conf
    
  2. Temukan atau tambahkan baris berikut untuk mengonfigurasi audispd:

    active = yes
    direction = out
    path = builtin_syslog
    type = builtin
    args = LOG_INFO
    format = string
    
  3. Mulai ulang layanan Auditd untuk menerapkan perubahan:

    sudo systemctl restart auditd
    
  4. 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)
    
  5. Edit rsyslog.conf atau buat konfigurasi kustom:

    sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
    
  6. 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.
  7. 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.