auditd menjawab pertanyaan-pertanyaan yang muncul setelah kejadian: siapa mengubah berkas ini, kapan pengguna ini dibuat, proses ini dijalankan dari mana. Tidak ada perkakas lain yang menjawabnya — log aplikasi tidak memuat informasi itu, dan riwayat shell disunting oleh orang yang meninggalkannya.
Kesulitannya adalah memasang paketnya sendiri tidak memberi apa-apa. Aturan bawaannya praktis tidak ada, jurnalnya ditulis tetapi kosong secara isi, dan hal itu ketahuan pada saat yang paling buruk — ketika datanya diperlukan dan ternyata tidak ada.
Pemasangan
sudo apt install auditd audispd-plugins
sudo systemctl status auditd
Satu keunikan: pada beberapa versi auditd tidak bisa dinyalakan ulang lewat systemctl restart — layanannya dikelola oleh perintahnya sendiri. Aturan dibaca ulang begini:
sudo augenrules --load
sudo auditctl -l
Perintah kedua menunjukkan apa yang benar-benar dimuat. Percayai itu, bukan isi berkasnya.
Himpunan aturan
Aturan masuk ke /etc/audit/rules.d/ sebagai berkas terpisah. Di bawah ini himpunan minimum yang sepadan: ia menjawab sebagian besar pertanyaan yang muncul saat insiden tanpa mengubur disknya.
sudo tee /etc/audit/rules.d/50-baseline.rules <<'EOF'
## Pengguna dan hak
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/sudoers -p wa -k privileges
-w /etc/sudoers.d/ -p wa -k privileges
## Akses SSH
-w /etc/ssh/sshd_config -p wa -k sshd_config
-w /root/.ssh/ -p wa -k ssh_keys
## Tugas terjadwal
-w /etc/crontab -p wa -k cron
-w /etc/cron.d/ -p wa -k cron
-w /var/spool/cron/ -p wa -k cron
## Modul kernel
-w /sbin/insmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-a always,exit -F arch=b64 -S init_module -S delete_module -k modules
## Penggunaan sudo dan su
-w /usr/bin/sudo -p x -k privileged
-w /bin/su -p x -k privileged
EOF
sudo augenrules --load
Sintaksnya singkat: -w adalah jalur yang diawasi, -p wa berarti bereaksi terhadap penulisan dan perubahan atribut, -p x terhadap eksekusi, dan -k adalah kunci untuk pencarian nanti. Kunci-kunci itulah kemudahan utamanya: tanpa mereka pencarian di jurnal berubah menjadi mengayak teks bergigabita.
Apa yang tidak ada di daftar itu, dan mengapa
Panduan sering menyarankan mencatat setiap panggilan execve — yakni setiap peluncuran setiap program. Godaannya bisa dipahami: gambaran lengkap tentang apa yang dilakukan. Dalam praktiknya, pada server yang sedang bekerja itu menghasilkan ratusan megabita per hari, memakan bagian prosesor yang nyata dan membuat jurnalnya terpotong lebih cepat daripada saat ia diperlukan. Kalau tingkat kerincian itu memang perlu, nyalakan secara sempit — untuk satu pengguna, atau selama masa penyelidikan.
Hal yang sama berlaku untuk mengawasi direktori situs: penulisan ke sana berlangsung terus-menerus, dan aturannya mengubah jurnal menjadi arus peristiwa tak bermakna.
Membacanya
Cari berdasarkan kunci, dengan pengenal numerik diterjemahkan menjadi nama:
sudo ausearch -k identity -i
sudo ausearch -k privileges -i -ts today
Bendera -i penting agar terbaca: tanpanya Anda mendapat angka alih-alih nama pengguna dan nama panggilan sistem. -ts membatasi periodenya (today, recent, atau tanggal tertentu).
Ringkasan untuk suatu periode:
sudo aureport --summary -i
sudo aureport --auth -i --failed
Dalam sebuah catatan peristiwa ada tiga bidang yang menarik: auid, pengenal pengguna yang membuka sesi, uid, identitas yang menjalankan tindakan itu, dan exe, program yang melakukannya. Perbedaan antara auid dan uid adalah jawaban untuk «siapa persisnya yang menjadi root»: uid=0 dengan auid milik orang tertentu menunjuk pelakunya tanpa keraguan, apa pun yang ia akui tentang dirinya di dalam sesi.
Disk
Pengaturan ukurannya ada di /etc/audit/auditd.conf:
max_log_file = 50
num_logs = 5
max_log_file_action = ROTATE
space_left = 500
space_left_action = SYSLOG
Perhatikan disk_full_action secara terpisah. Sebagian konfigurasi secara bawaan menghentikan sistem ketika disk penuh — perilaku yang wajar pada mesin dengan tuntutan audit dan sama sekali tidak pada tempatnya di server web. Periksa nilai itu sebelum disknya habis.
Aturan yang tak bisa diubah
Baris -e 2 di ujung berkas aturan melarang perubahan aturan sampai penyalaan ulang — termasuk oleh siapa pun yang sudah mendapat root. Itu menaikkan nilai jurnal secara nyata: penyusup tidak bisa mematikan pengawasan tanpa menyalakan ulang mesin, dan penyalaan ulang itu sendiri sudah mencolok.
Sisi sebaliknya jelas: Anda pun tidak bisa mengubah aturan Anda sendiri tanpa menyalakan ulang. Nyalakan setelah himpunan aturannya mengendap dan Anda sudah hidup dengannya selama sebulan.
Untuk apa di server biasa
auditd tidak mencegah apa pun. Nilainya terlihat tepat sekali — ketika urutan peristiwa harus disusun ulang, dan datanya ada atau tidak ada. Ia tidak bisa dikumpulkan surut ke belakang, karena itu himpunan aturannya dipasang lebih dulu lalu dibiarkan.
Tanda praktis bahwa penyetelannya benar: daftar aturannya tidak kosong, jurnalnya tidak membengkak tak terkendali, dan peristiwa dengan kunci identity serta privileges muncul jarang dan masing-masing bisa dijelaskan. Bagaimana tampilannya pada satu halaman — lihat di demo bawah.