Pemantauan integritas punya sifat yang merepotkan: ia memerlukan acuan yang diambil dari sistem yang pasti bersih. Kalau server sudah berjalan tiga tahun dan pertanyaan soal pembobolan baru muncul hari ini maka mengambil acuan itu sudah terlambat — Anda akan mencatat apa pun yang ada sebagai hal yang normal.
Tetapi di Debian dan Ubuntu acuan itu sudah ada, dan ia bukan milik Anda: setiap paket yang terpasang membawa checksum berkas-berkasnya sendiri. Membandingkan dengannya tidak memerlukan penyetelan maupun snapshot terdahulu, dan itu bekerja pada sistem apa pun kapan pun. Perkakasnya bernama debsums.
Cara memakainya
sudo apt install debsums
sudo debsums -c
Bendera -c hanya mencetak berkas yang tidak cocok dengan acuan. Tanpanya keluarannya adalah laporan baris demi baris untuk setiap berkas di sistem, puluhan ribu baris.
Pemeriksaannya memakan beberapa menit dan membebani disk, jadi pada server yang sedang bekerja layak dijalankan dengan prioritas yang diturunkan:
sudo ionice -c3 nice -n19 debsums -c
Cara membaca hasilnya
Keluaran kosong berarti setiap berkas yang diperiksa cocok dengan yang dipasang distribusi. Keluaran yang tidak kosong perlu ditelaah, dan temuannya terbagi menjadi dua kelas yang sangat berbeda.
Berkas konfigurasi di /etc. Mengubahnya adalah pekerjaan yang normal: Anda menyunting sshd_config, menyetel nginx, menambah parameter kernel. Perbedaan semacam itu memang diharapkan. Agar mereka tidak mengganggu ada mode tersendiri:
sudo debsums -e -c
-e hanya memeriksa berkas konfigurasi — sesekali berguna untuk melihat daftar semua yang Anda ubah di mesin ini.
Berkas eksekusi dan pustaka. Perbedaan di /usr/bin, /usr/sbin, /bin atau /usr/lib justru itulah alasan pemeriksaan ini dijalankan. Ada sebab yang sah, tetapi tidak banyak: berkasnya disunting dengan tangan saat menelusuri galat, sebuah tambalan pihak ketiga diterapkan, paketnya sedang dimutakhirkan saat pemeriksaan berlangsung. Kalau tidak satu pun cocok maka sudah waktunya menelaahnya dengan serius.
Sasaran penggantian yang klasik adalah ls, ps, netstat, ss, find, sshd. Versi yang diganti menyembunyikan dari keluarannya justru baris-baris yang penting, dan setiap pemeriksaan Anda sesudahnya berhenti mengatakan yang sebenarnya.
Cakupannya tidak lengkap — dan itu perlu diketahui
Batasan yang biasanya tidak disebut: tidak setiap paket menyertakan checksum. Berkas dari paket semacam itu sama sekali tidak diperiksa dan tidak akan pernah muncul di laporan dalam keadaan apa pun. Daftarnya bisa dilihat begini:
sudo debsums -l
Karena itu laporan debsums yang bersih berarti «di bagian yang diperiksa semuanya beres», bukan «sistemnya tidak dimodifikasi». Hal yang sama berlaku untuk semua yang dipasang di luar pengelola paket: dikompilasi dari sumber, diunduh sebagai biner, dipasang oleh skrip dari situs pengembang — debsums menurut definisinya tidak mengawasi satu pun dari itu, dan justru di situlah AIDE diperlukan.
Menjalankannya secara berkala
Paket ini membawa tugas siap pakai, yang dinyalakan di /etc/default/debsums:
CRON_CHECK=weekly
Sepekan sekali adalah frekuensi yang masuk akal: pemeriksaannya membebani disk secara nyata, sementara berkas sistem jarang berubah di antara pembaruan. Menjalankannya setiap hari tidak menambah apa pun selain beban.
Kalau sebuah berkas benar-benar diganti
Dorongan pertama adalah memasang ulang paketnya untuk mengembalikan yang asli:
sudo apt install --reinstall coreutils
Perintahnya benar, tetapi bukan sebagai tindakan pertama. Berkas biner sistem yang diganti berarti ada yang punya root, dan memulihkan berkasnya tidak menyelesaikan masalah itu — ia hanya menghancurkan jejaknya. Urutannya harus sebaliknya: simpan dulu salinan berkas yang mencurigakan beserta waktu perubahannya, lihat apa lagi yang berubah pada periode yang sama, periksa tugas cron, kunci SSH dan daftar pengguna. Baru setelah itu pulihkan.
Batas metode ini juga layak diingat: kalau sistemnya dikuasai secara mendalam maka debsums sendiri dan pustaka yang dipakainya bisa saja sudah diganti bersama yang lain. Pemeriksaan dari dalam tidak bisa memberi jaminan mutlak — itu dicapai dengan mem-boot dari media eksternal. Namun untuk pekerjaan sehari-hari ini sudah cukup: sebagian besar serangan bersifat otomatis dan tidak serumit itu.
Tempatnya dalam gambaran keseluruhan
debsums bagus karena ia tidak memerlukan apa-apa dan langsung bekerja — itu membuatnya jadi titik awal yang nyaman untuk server yang riwayatnya tidak Anda ketahui. Kelemahannya adalah cakupan yang tidak lengkap dan ketidaktahuan soal apa pun yang dipasang di luar paket. Pasangan «debsums plus AIDE» menutup kedua sisinya: acuan siap pakai dari distribusi untuk berkas sistem, dan snapshot Anda sendiri untuk sisanya.
Seperti biasa, intinya bukan menjalankannya melainkan punya hasil terakhirnya beserta tanggalnya di depan mata. Bagaimana tampilannya — lihat di demo bawah.