Mengumpulkan log sistem Linux auditd dan AIX

Didukung di:

Parser ini menangani log audit Linux dalam format SYSLOG, dan mengubahnya menjadi UDM. Proses ini memproses pesan log berformat JSON dan teks biasa, mengekstrak kolom menggunakan teknik grok, penguraian XML, dan penguraian JSON, serta memetakannya 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 host Windows 2012 SP2 atau yang lebih baru atau Linux dengan systemd.
  • Jika berjalan di belakang proxy, pastikan port firewall terbuka.

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka SIEM Settings > Collection Agents.
  3. Download File Autentikasi Penyerapan.

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 mengirimkannya 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 Bindplane Agent 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 Fasilitas Syslog: 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 sedang 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 Keterangan
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 Diperoleh 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 ID pengguna 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.
COMMAND target.process.command_line
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 target.process.file.full_path Jalur yang dapat dieksekusi (exe) dipetakan ke target.process.file.full_path.
extensions.auth.type extensions.auth.type Jenis autentikasi ditetapkan oleh logika parser berdasarkan jenis peristiwa. Sering disetel 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.
_Item_Id metadata.product_log_id
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.
metadata.product_event_type SECCOMP Kurva pertukaran kunci diekstrak dari log mentah dan dipetakan ke kolom ini.
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 sandi 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 (misalnya, LINUX).
principal.port principal.port Nomor port yang terkait dengan prinsipal.
principal.user.group_identifiers principal.user.group_identifiers ID grup yang terkait dengan pengguna utama.
process.name target.process.file.full_path
receiveTimestamp (Tidak Dipetakan) Kolom ini adalah stempel waktu penerimaan log dan tidak dipetakan ke objek IDM di UDM.
res security_result.action_details Hasil (res) dipetakan ke security_result.action_details.
_Resource_Id target.resource.product_object_id
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, IZINKAN, BLOKIR).
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 acara, 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 dari proses target.
target.resource.type target.resource.type Jenis resource target, ditetapkan oleh logika parser (misalnya, KREDENSIAL, SETELAN).
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.
TenantId metadata.product_deployment_id
textPayload (Diproses) Payload teks log, yang diproses oleh parser untuk mengekstrak berbagai kolom.
timestamp metadata.event_timestamp Stempel waktu acara.
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 target.user.userid ID pengguna (uid) dipetakan ke target.user.userid.

Referensi delta pemetaan UDM

Pada 23 September 2025, Google SecOps merilis versi baru parser Okta, yang mencakup perubahan signifikan pada pemetaan kolom log Okta ke kolom UDM dan perubahan pada pemetaan jenis peristiwa.

Delta pemetaan kolom log

Tabel berikut mencantumkan perbedaan pemetaan untuk kolom log Okta ke UDM yang diekspos sebelum 23 September 2025 dan setelahnya (masing-masing tercantum dalam kolom Pemetaan lama dan Pemetaan saat ini).

Kolom log Pemetaan lama Pemetaan saat ini Contoh log referensi
1.1.1.1 (alamat IP) src.ip principal.ip "<163>Apr 10 09:00:05 hostname.com sshd[3318513]: Accepted password for abc from 1.1.1.1 port 33988 ssh2"
1.1.1.1 (alamat IP) principal.ip target.ip "<29>Oct 5 08:37:16 abc ProxySG: E0000 Access Log HTTP (main): Connecting to server 1.1.1.1 on port 4433.(0) NORMAL_EVENT alog_stream_http.cpp 261"
abc (pengguna) principal.user.userid target.user.userid "<85>Feb 27 08:26:55 offozcav login: FAILED LOGIN 1 FROM ::ffff:1.1.1.1 FOR abc, Authentication failure\r\n\r\n"
abc.abc (pengguna) principal.user.userid target.user.userid "<86>Feb 27 08:29:19 offozcav login: LOGIN ON pts/43 BY abc.abc FROM\r\n\r\n::ffff:1.1.1.1"
COMMAND principal.process.command_line target.process.command_line "<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number"
exe target.process.file.full_path principal.process.file.full_path
_ItemId additional.fields metadata.product_log_id
metadata.product_event_type PATH SECCOMP
process.name principal.process.file.full_path target.process.file.full_path
_ResourceId additional.fields target.resource.product_object_id
TenantId additional.fields metadata.product_deployment_id
uid principal.user.userid target.user.userid
USER principal.user.user_display_name target.user.userid "<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number"
user principal.user.userid target.user.userid "29>Jan 16 11:28:00 san-auth-1-irl2 tac_plus[17329]: login failure: user 1.1.1.1 (1.1.1.1) vty0"
user principal.user.userid target.user.userid "<87>Jul 15 10:27:01 xpgjrconfdb01 crond[1045]: pam_unix(crond:account): expired password for user root (password aged)"

Delta pemetaan jenis peristiwa

Beberapa peristiwa yang sebelumnya diklasifikasikan sebagai peristiwa umum kini diklasifikasikan dengan benar menggunakan jenis peristiwa yang bermakna.

Tabel berikut mencantumkan perbedaan penanganan jenis peristiwa Okta sebelum 23 September 2025 dan setelahnya (masing-masing tercantum dalam kolom Old event_type dan Current event-type).

eventType dari log event_type lama event_type saat ini
aix_event_type=CRON_Start USER_LOGIN PROCESS_LAUNCH
CRYPTO_KEY_USER NETWORK_CONNECTION USER_LOGIN
FILE_Mknod USER_LOGIN FILE_CREATION
FILE_Rename USER_LOGIN FILE_MODIFICATION
FILE_Stat USER_LOGIN FILE_OPEN
FILE_Unlink USER_LOGIN FILE_DELETION
FS_Chabc USER_LOGIN PROCESS_UNCATEGORIZED
FS_Mkdir USER_LOGIN FILE_CREATION
FS_Rmdir USER_LOGIN FILE_DELETION
PROC_Execute USER_LOGIN PROCESS_LAUNCH
type=ANOM_ABEND STATUS_UPDATE PROCESS_TERMINATION
type=ANOM_PROMISCUOUS SETTING_MODIFICATION
type=CRED_REFR USER_LOGIN USER_CHANGE_PERMISSIONS
type=PROCTILE PROCESS_UNCATEGORIZED PROCESS_LAUNCH
type=SERVICE_START USER_RESOURCE_ACCESS SERVICE_START
type=SERVICE_STOP USER_RESOURCE_ACCESS SERVICE_STOP
type=USER_ACCT USER_LOGIN/SETTING_MODIFICTION USER_LOGIN
type=USER_MGMT SETTING_MODIFICATION/GROUP_MODIFICATION GROUP_MODIFICATION
USER_ERR USER_LOGOUT USER_LOGIN

Perubahan tambahan

  • Menghapus pemetaan duplikat res dari security_result.description. Hal ini dicatat dalam security_result.action_details.
  • Menghapus auditd_msg_data yang tidak perlu dari kolom tambahan.
  • Menghapus auditd_msg_data yang tidak perlu dari security_result.summary.
  • Pada type=ADD_USER, menghapus pemetaan duplikat acct ke target.user.display_name. Sudah dipetakan di target.user.userid.
  • Menghapus pemetaan duplikat comm dari principal.process.command_line dan principal.process.file.names. Hal ini dicatat dalam principal.application.
  • Menghapus pemetaan duplikat target.hostname jika nilainya ada di principal.
  • Menghapus pemetaan hard-code target.resource.type ke SETTING yang tidak perlu.
  • Menghapus pemetaan label info karena tidak digunakan lagi.
  • Pemetaan yang benar: IP kini dirutekan ke principal.ip, bukan principal.hostname.
  • Memperbaiki pengulangan peristiwa yang dihasilkan.

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.