TDCTF Academy Logo TDCTF ACADEMY

Auditd

Pendahuluan

auditd adalah userspace daemon dari Linux Audit Framework yang bertugas mencatat (log) aktivitas yang berpotensi memengaruhi keamanan sistem - mulai dari akses file, eksekusi program, perubahan syscall, hingga login user. Auditd merupakan komponen vital untuk forensic investigation, incident response, dan kepatuhan terhadap standar seperti PCI DSS, HIPAA, atau CIS Benchmark.


Auditd Daemon

Instalasi dan Manajemen

# Debian/Ubuntu
sudo apt install auditd audispd-plugins

# RHEL/CentOS
sudo yum install audit

# Cek status daemon
sudo systemctl status auditd

# Mulai/hentikan/restart
sudo systemctl start auditd
sudo systemctl enable auditd

Arsitektur Dasar

Syscall → Kernel Audit Subsystem → auditd (userspace) → /var/log/audit/audit.log

audispd → plugin plugins (SIEM, syslog, dll)
  • Kernel Audit Subsystem - menangkap syscall dan event di tingkat kernel.
  • auditd - menulis kejadian ke disk (audit.log).
  • audispd - multiplexer yang menyampaikan event ke plugin eksternal.

Audit Rules

Aturan audit dikelola dengan perintah auditctl atau file /etc/audit/rules.d/. Aturan dibagi menjadi tiga kategori:

1. File Monitoring Rules

Mendeteksi akses (baca, tulis, attribute change) terhadap file atau direktori sensitif.

# Aturan via auditctl (runtime)
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/shadow -p wa -k shadow_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config

# -w = watch file
# -p wa = permission write + attribute change
# -k = key identifier untuk memudahkan pencarian

2. Syscall Monitoring Rules

Memonitor syscall tertentu - berguna untuk mendeteksi eksekusi program, pembukaan file, atau perubahan privilege.

# Monitor semua eksekusi program (execve)
sudo auditctl -a always,exit -S execve -k process_execution

# Monitor syscall open (membuka file)
sudo auditctl -a always,exit -S open,openat -F auid>=1000 -F auid!=-1 -k file_open

# Monitor syscall mount - perubahan filesystem
sudo auditctl -a always,exit -S mount -k mount_changes

# Monitor perubahan kemampuan (capabilities)
sudo auditctl -a always,exit -S capset -k cap_changes

Penjelasan parameter:

  • -a always,exit - aturan diterapkan setiap kali syscall selesai.
  • -S - syscall yang dipantau.
  • -F - filter tambahan (contoh: auid>=1000 = hanya user non-sistem).
  • -k - key untuk pelabelan.

3. User dan Identity Monitoring

# Monitoring login/logout
sudo auditctl -w /var/log/wtmp -p wa -k login_events
sudo auditctl -w /var/log/btmp -p wa -k failed_logins

# Monitoring perubahan identitas user (su, sudo)
sudo auditctl -a always,exit -S execve -F path=/usr/bin/su -k su_usage
sudo auditctl -a always,exit -S execve -F path=/usr/bin/sudo -k sudo_usage

# Monitoring perubahan *user identifier* (setuid, setgid)
sudo auditctl -a always,exit -S setuid,setgid -k privilege_escalation

Aturan Permanen

Simpan aturan ke file agar tetap ada setelah reboot:

# Buat file aturan
echo "-w /etc/passwd -p wa -k passwd_changes" | sudo tee -a /etc/audit/rules.d/security.rules
echo "-a always,exit -S execve -k process_execution" | sudo tee -a /etc/audit/rules.d/security.rules

# Load aturan
sudo augenrules --load

# Verifikasi
sudo auditctl -l

Ausearch dan Aureport

ausearch - Pencarian Log Audit

ausearch digunakan untuk mencari event spesifik di audit.log:

# Cari event dengan key tertentu
sudo ausearch -k passwd_changes

# Cari event berdasarkan user ID
sudo ausearch -ui 1001

# Cari event berdasarkan executable
sudo ausearch -x /usr/bin/sudo

# Cari event dalam rentang waktu
sudo ausearch -ts 10:00 -te 11:00

# Cari semua event eksekusi (syscall execve)
sudo ausearch -sc execve

# Format output lebih terbaca (interpret)
sudo ausearch -k process_execution -i

aureport - Laporan Ringkasan

aureport menghasilkan laporan statistik dan ringkasan:

# Laporan semua event (login, exec, auth, dll.)
sudo aureport -a

# Laporan login
sudo aureport -l

# Laporan eksekusi program (top executable)
sudo aureport -x

# Laporan user (aktivitas per user)
sudo aureport -u

# Laporan berdasarkan waktu
sudo aureport -ts today

Audit.log

Lokasi default: /var/log/audit/audit.log

Format Entri

Setiap event dalam audit.log memiliki format terstruktur:

type=SYSCALL msg=audit(1719203622.580:1847): \
arch=c000003e syscall=59 success=yes exit=0 \
a0=563e1a2b1234 a1=563e1a2b2345 a2=563e1a2b3456 a3=8 \
items=2 ppid=1234 pid=5678 auid=1001 uid=1001 gid=1001 \
euid=1001 suid=1001 fsuid=1001 egid=1001 sgid=1001 fsgid=1001 \
tty=pts0 ses=3 comm="bash" exe="/usr/bin/bash" \
key="process_execution"

Komponen utama:

  • type - Jenis event (SYSCALL, PATH, CWD, PROCTITLE, USER_LOGIN, dll.)
  • msg - Timestamp UNIX epoch dan event ID
  • syscall=59 - Nomor syscall (59 = execve)
  • success=yes - Apakah syscall berhasil
  • auid - Audit user ID (user yang login, sebelum eskalasi)
  • key - Key identifier dari aturan auditctl

Manajemen Rotasi Log

Gunakan auditd.conf di /etc/audit/auditd.conf:

max_log_file = 100 # Ukuran maksimal 100 MB
num_logs = 5 # Simpan 5 file rotasi
max_log_file_action = ROTATE
space_left_action = SYSLOG # Kirim peringatan ke syslog saat disk hampir penuh
action_mail_acct = root
admin_space_left_action = HALT # Hentikan audit saat benar-benar penuh

Immutable Rules

Setelah semua aturan audit diterapkan, kunci dengan immutable flag untuk mencegah perubahan runtime - baik oleh administrator maupun penyerang:

sudo auditctl -e 2

Fungsi -e 2:

  • -e 0 - Nonaktifkan audit
  • -e 1 - Aktifkan audit
  • -e 2 - Aktifkan audit dan kunci aturan (tidak bisa diubah tanpa reboot)

Peringatan: Setelah -e 2 diterapkan, auditctl tidak bisa menerima perintah -w, -a, atau -d hingga sistem di-reboot. Pastikan semua aturan sudah benar sebelum mengaktifkan immutable mode. Aturan immutable harus menjadi baris terakhir dalam file aturan.


Integrasi dengan SIEM

Auditd dapat diintegrasikan dengan SIEM (Security Information and Event Management) melalui beberapa pendekatan:

1. audispd + syslog

Atur plugin audispd untuk mengirim log ke syslog, lalu forward ke SIEM melalui rsyslog:

# /etc/audit/plugins.d/syslog.conf
active = yes
direction = out
path = /sbin/audisp-syslog
type = always
args = LOG_INFO

2. Filebeat / Auditbeat (Elastic Stack)

Gunakan Auditbeat (komponen Elastic) untuk membaca audit.log dan mengirimnya ke Elasticsearch:

# auditbeat.yml
auditbeat.modules:
- module: auditd
audit_rule_files:
- /etc/audit/rules.d/*.rules
output.elasticsearch:
hosts: ["https://siem.local:9200"]

3. Rsyslog ke Log Server

Forward audit.log ke server log terpusat:

# /etc/rsyslog.d/audit.conf
$ModLoad imfile
$InputFileName /var/log/audit/audit.log
$InputFileTag audit
$InputFileStateFile audit-state
$InputFileSeverity info
$InputFileFacility local6
local6.* @siem-server.local:514

Integrasi SIEM memungkinkan correlation, alerting, dan dashboards yang mengubah raw audit log menjadi actionable intelligence untuk tim keamanan.


Kesimpulan

Auditd adalah fondasi audit logging di Linux. Dengan aturan yang tepat - memonitor file kritis, syscall berbahaya, dan perubahan identitas - serta dilengkapi dengan immutable rules dan integrasi SIEM, auditd memberikan visibilitas end-to-end terhadap aktivitas sistem yang diperlukan untuk deteksi ancaman, investigasi forensik, dan kepatuhan regulasi.

PADA HALAMAN INI