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 IDsyscall=59- Nomor syscall (59 = execve)success=yes- Apakah syscall berhasilauid- 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 2diterapkan, auditctl tidak bisa menerima perintah-w,-a, atau-dhingga 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.