File Integrity Monitoring dengan AIDE — Ketahui Apa yang Berubah di Home Server
Sebuah home server bisa terlihat sehat meski satu file penting diam-diam berubah. Konfigurasi SSH yang dimodifikasi, binary asing, atau file web yang ditulis ulang belum tentu membuat service berhenti, sehingga monitoring uptime tetap menampilkan warna hijau. File Integrity Monitoring memberi sinyal yang berbeda: bukan “apakah mesin ini menyala?”, tetapi “apakah mesin ini masih menjalankan keadaan yang aku inginkan?”
Dalam panduan ini, kita akan memasang AIDE (Advanced Intrusion Detection Environment) di Debian atau Ubuntu, membangun baseline yang bisa dipercaya, menjalankan pemeriksaan otomatis dengan systemd timer, dan menentukan respons ketika ada perubahan. Tujuannya bukan menganggap setiap byte yang berubah sebagai keadaan darurat. Tujuannya adalah membuat perubahan penting terlihat sebelum tenggelam dalam kesibukan administrasi sehari-hari.
Apa yang Sebenarnya Dilihat File Integrity Monitoring
AIDE menelusuri path yang dipilih dan merekam atribut seperti jenis file, permission, pemilik, ukuran, waktu modifikasi, serta cryptographic hash. Pada pemeriksaan berikutnya, kondisi filesystem saat ini dibandingkan dengan database tersebut. Laporannya mencantumkan file yang ditambahkan, dihapus, atau berubah.
Bayangkan baseline sebagai foto sebuah bengkel ketika tutup. Foto itu tidak dapat menjelaskan siapa yang memindahkan obeng atau mengapa, tetapi perpindahannya akan terlihat keesokan pagi. Begitu pula AIDE tidak memahami apakah package upgrade memang sah atau penyerang mengganti sebuah command. AIDE menyediakan bukti; kontekslah yang mengubah bukti menjadi keputusan.
Perbedaan ini penting. AIDE bukan antivirus, real-time blocking, backup, ataupun intrusion detection system yang lengkap. Penyerang dengan akses root dapat mencoba mengubah AIDE sekaligus database lokalnya. Karena itu, File Integrity Monitoring adalah satu lapisan dalam sistem yang tetap membutuhkan patching, least privilege, log yang berguna, dan backup yang dapat dipulihkan.
Memasang AIDE dan Memahami Konfigurasinya
Di Debian dan Ubuntu, pasang versi dari package repository lalu periksa direktori konfigurasinya:
sudo apt update
sudo apt install aide
sudo ls -la /etc/aide/aide.conf.d/
Debian menyusun konfigurasi efektif dari snippet di /etc/aide/aide.conf.d/. Rule bawaan package adalah titik awal yang baik karena sudah mempertimbangkan banyak system path. Sebuah rule menghubungkan path dengan sekelompok atribut. Rule dengan hash lengkap cocok untuk executable dan konfigurasi, sedangkan direktori runtime yang cepat berubah biasanya perlu dikecualikan.
Sebelum menambah apa pun, identifikasi aset berharga di server tersebut. Untuk web host kecil, aset itu bisa berupa /etc, application code di /var/www, system binary, systemd unit, dan beberapa deployment script. Memantau semuanya tanpa pertimbangan sering menghasilkan laporan bising yang akhirnya tidak dibaca siapa pun.
Menambahkan Rule yang Fokus untuk Home Server
Buat snippet lokal agar policy buatan kita terpisah dari file yang dikelola package:
sudo nano /etc/aide/aide.conf.d/99_aide_local
Policy awal yang praktis dapat berbentuk seperti ini:
/etc CONTENT_EX
/usr/local/bin CONTENT_EX
/var/www CONTENT_EX
/etc/systemd/system CONTENT_EX
!/var/www/.*/cache
!/var/www/.*/storage/logs
!/var/www/.*/public/uploads
!/var/lib/docker
!/var/log
!/run
!/tmp
CONTENT_EX melacak metadata dan isi file menggunakan hash yang kuat. Daftar pengecualian membuang path yang sering menerima penulisan sah atau mahal untuk dipindai. Sesuaikan dengan layout aplikasi: folder upload mungkin perlu pemantauan terpisah untuk mendeteksi executable asing, tetapi melakukan hashing pada setiap gambar pengguna di setiap pemeriksaan belum tentu bernilai.
Pengecualian bukan pernyataan bahwa sebuah direktori aman. Ia adalah pengaturan jatah noise. Seperti smoke detector yang dipasang di sebelah pemanggang roti, rule yang salah tempat dapat menghasilkan terlalu banyak alarm ringan hingga alarm penting diabaikan. Mulailah dari path kritis yang relatif stabil, lalu perluas hanya ketika laporan tetap mudah dipahami.
Membangun Baseline Pertama dengan Teliti
Database awal menjadi acuan bagi semua perbandingan berikutnya, jadi buat hanya ketika server berada dalam kondisi yang diketahui baik. Terapkan security update tertunda, periksa service aktif, lalu cari process atau login terbaru yang tidak dapat dijelaskan. Membuat baseline di host yang sudah disusupi hanya akan mencatat kompromi sebagai keadaan normal.
sudo aideinit
sudo aide --check
Tergantung package distribusinya, aideinit membuat database baru dan menempatkannya di lokasi yang diharapkan. Pemeriksaan pertama seharusnya tidak melaporkan perbedaan tanpa penjelasan. Jika langsung muncul banyak perubahan, jangan menerimanya secara buta. Pastikan apakah scheduled package job, deployment, atau penulisan aplikasi terjadi di antara proses inisialisasi dan verifikasi.
Simpan satu salinan baseline tambahan di luar server. Disk offline atau backup repository dengan immutable snapshot lebih baik daripada file lain yang juga dapat ditulis di mesin yang sama. Catat pula checksum-nya:
sudo sha256sum /var/lib/aide/aide.db.gz
sudo cp /var/lib/aide/aide.db.gz /mnt/offline-backup/aide.db.gz
Menjalankan Pemeriksaan Otomatis dengan systemd
Pemeriksaan keamanan yang bergantung pada ingatan pada akhirnya akan berhenti dilakukan. Buat service untuk menjalankan AIDE dan membiarkan systemd menyimpan output di journal:
# /etc/systemd/system/aide-check.service
[Unit]
Description=Daily AIDE file integrity check
[Service]
Type=oneshot
ExecStart=/usr/bin/aide --check
Kemudian buat timer:
# /etc/systemd/system/aide-check.timer
[Unit]
Description=Run AIDE file integrity check daily
[Timer]
OnCalendar=*-*-* 03:20:00
RandomizedDelaySec=20m
Persistent=true
[Install]
WantedBy=timers.target
Aktifkan dan lakukan satu pengujian manual:
sudo systemctl daemon-reload
sudo systemctl enable --now aide-check.timer
sudo systemctl start aide-check.service
sudo systemctl status aide-check.service
sudo journalctl -u aide-check.service
Persistent=true menjalankan pemeriksaan yang terlewat ketika server yang sempat mati kembali menyala. RandomizedDelaySec mencegah semua maintenance task menumpuk pada menit yang persis sama. Untuk home server, pemeriksaan harian umumnya seimbang, walaupun sistem yang terbuka ke internet atau sering berubah mungkin membutuhkan jadwal lain.
Membaca Laporan Tanpa Panik
AIDE merangkum entry yang ditambahkan, dihapus, dan berubah, kemudian menunjukkan atribut yang berbeda. Konfigurasi yang berubah setelah kamu edit sendiri adalah hal wajar. Executable baru di /usr/local/bin, SSH key yang berubah, atau web entry point yang dimodifikasi di luar deployment window perlu segera diperiksa.
Klasifikasikan setiap temuan dengan tiga pertanyaan: Apakah ada perubahan yang disetujui? Apakah timestamp sesuai dengan pekerjaan tersebut? Apakah package record, deployment history, atau log dapat menjelaskan file itu secara tepat? Di Debian, verifikasi package dapat menambahkan konteks:
sudo dpkg -V
sudo journalctl --since "24 hours ago"
sudo stat /path/to/suspicious-file
sudo sha256sum /path/to/suspicious-file
Jangan memperbarui baseline hanya supaya peringatan menghilang. Itu seperti menghapus lampu peringatan dashboard tanpa membuka kap mobil. Jelaskan dulu perbedaannya. Jika kompromi mungkin terjadi, pertahankan log, isolasi host dari jaringan yang tidak dipercaya, rotasi credential yang terekspos dari perangkat bersih, dan pulihkan dari sumber yang diketahui baik bila diperlukan.
Memperbarui Baseline Setelah Perubahan yang Sah
Operating system dan aplikasi memang berubah secara sah. Setelah upgrade atau deployment, cocokkan laporan AIDE dengan pekerjaan yang dilakukan. Hanya setelah itu promosikan database baru:
sudo aide --update
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
sudo aide --check
Path dapat sedikit berbeda antar-distribusi, jadi pastikan lokasi database di konfigurasi efektif AIDE sebelum memindahkan file. Jadikan pembaruan baseline bagian dari maintenance checklist, bukan command otomatis setelah setiap package upgrade. Penerimaan otomatis menghapus tahap review yang justru memberi nilai pada File Integrity Monitoring.
Sesuaikan juga policy dari waktu ke waktu. Kecualikan generated cache hanya setelah memahami fungsinya; tambahkan direktori konfigurasi baru segera setelah menjadi penting. Policy terbaik bukan yang paling panjang, melainkan policy terkecil yang secara konsisten melindungi aset yang sulit kamu bangun ulang atau jelaskan.
Sensor Kecil dengan Pertanyaan yang Berguna
AIDE tidak akan menghentikan setiap serangan dan tidak dapat membuktikan bahwa server sepenuhnya bersih. Kekuatan AIDE adalah mengajukan pertanyaan disiplin setiap hari: apa yang berubah? Dengan baseline yang dibuat hati-hati, rule yang fokus, salinan di luar host, serta timer yang hasilnya benar-benar ditinjau, pertanyaan itu menjadi kontrol keamanan praktis alih-alih sekadar package lain yang terpasang.
Mulailah dari path yang kamu pahami, buat satu perubahan uji yang aman, lalu berlatih membaca hasilnya sebelum mengandalkan sistem ini. Jika kamu sudah memakai File Integrity Monitoring di home server, bagikan direktori mana yang memberi sinyal berguna dan pengecualian apa yang membuat laporan tetap mudah dibaca.
