Product SiteDocumentation Site

14.3. Supervisi: Pencegahan, Deteksi, Deteren

Pemantauan adalah bagian integral dari kebijakan keamanan untuk beberapa alasan. Di antara mereka, bahwa tujuan keamanan adalah biasanya tidak terbatas pada menjamin kerahasiaan data, tetapi juga termasuk memastikan ketersediaan layanan. Oleh karena itu sangat penting untuk memeriksa bahwa semuanya bekerja seperti yang diharapkan, dan untuk mendeteksi tepat perilaku menyimpang atau mengubah kualitas layanan yang diberikan. Memantau aktivitas dapat membantu mendeteksi upaya intrusi dan memungkinkan reaksi cepat sebelum mereka menimbulkan konsekuensi serius. Bagian ini mengulas beberapa alat yang dapat digunakan untuk memonitor beberapa aspek dari sistem Debian. Dengan demikian, itu melengkapi Bagian 12.4, “Pemantauan”.

14.3.1. Memantau Log dengan logcheck

Program logcheck memonitor berkas log setiap jam secara default. Ia akan mengirimkan pesan-pesan log yang tidak biasa melalui email ke administrator untuk analisa lebih lanjut.
Daftar berkas yang dipantau disimpan dalam /etc/logcheck/logcheck.logfiles; nilai-nilai default bekerja dengan baik jika berkas /etc/rsyslog.conf belum dibongkar habis.
logcheck dapat bekerja di salah satu dari tiga mode yang lebih atau kurang rinci: paranoid, server, dan workstation. Yang pertama adalah sangat rinci, dan mungkin dapat dibatasi ke server tertentu seperti firewall. Modus kedua (dan default) dianjurkan bagi kebanyakan server. Terakhir dirancang untuk workstation, dan ini bahkan lebih ringkas (itu menyaring lebih banyak pesan).
Dalam ketiga kasus, logcheck mungkin perlu disesuaikan untuk mengecualikan beberapa pesan tambahan (tergantung pada layanan yang terpasang), kecuali jika admin benar-benar ingin menerima batch per jam surel-surel panjang yang tidak menarik. Karena mekanisme pemilihan pesan agak rumit, perlu membaca /usr/share/doc/logcheck-database/README.logcheck-database.gz — walaupun menantang.
Aturan yang diterapkan dapat dipecah menjadi beberapa jenis:
  • yang memenuhi syarat sebuah pesan sebagai upaya memecah kata sandi (disimpan dalam berkas dalam direktori /etc/logcheck/cracking.d/);
  • yang membatalkan kualifikasi seperti itu (/etc/logcheck/cracking.ignore.d/);
  • yang mengklasifikasi pesan sebagai sebuah peringatan keamanan (/etc/logcheck/violations.d/);
  • yang membatalkan klasifikasi ini (/etc/logcheck/violations.ignore.d/);
  • akhirnya, yang diterapkan ke pesan yang tersisa (dianggap sebagai kejadian-kejadian sistem).
Suatu kejadian sistem selalu diberi sinyal kecuali aturan di salah satu dari direktori /etc/logcheck/ignore.d.{paranoid, server, workstation}/ menyatakan bahwa kejadian tersebut harus diabaikan. Tentu saja, direktori yang diperhitungkan adalah hanya mereka yang tingkat verbositasnya sama atau lebih dari mode operasi yang dipilih.

14.3.2. Memantau Aktivitas

14.3.2.1. Secara Real Time

top adalah alat interaktif yang menampilkan daftar proses yang sedang berjalan. Pengurutan baku berdasarkan banyaknya menggunakan prosesor pada saat ini dan dapat diperoleh dengan tombol P. Urutan lain termasuk besarnya memori yamg diduduki (M kunci), oleh waktu total prosesor (kunci T), dan pengenal proses (N kunci). Kunci k memungkinkan mematikan suatu proses dengan memasukkan pengenal prosesnya. Kunci r memungkinkan pengaturan ulang nice proses, yaitu mengubah prioritas.
Ketika sistem tampaknya terbeban lebih, top adalah alat yang hebat untuk melihat proses yang bersaing untuk waktu prosesor atau mengkonsumsi terlalu banyak memori. Secara khusus, hal ini sering menarik untuk diperiksa jika proses yang memakan sumber daya cock dengan layanan nyata yang diketahui diwadahi oleh mesin ini. Proses tidak dikenal yang berjalan sebagai pengguna www-data akan menonjol dan mesti diselidiki, karena mungkin adalah suatu instansi perangkat lunak yang diinstal dan dijalankan pada sistem melalui kerentanan dalam aplikasi web.
top adalah alat yang sangat fleksibel dan halaman manualnya memberikan rincian tentang bagaimana menyesuaikan tampilan dan mengadaptasi ke kebutuhan pribadi dan kebiasaan seseorang.
Alat grafis gnome-system-monitor mirip dengan top dan kurang lebih menyediakan fitur yang sama.

14.3.2.2. Riwayat

Beban prosesor, lalu lintas jaringan, dan ruang bebas disk adalah informasi yang terus-menerus berubah. Mencatat riwayat evolusi mereka sering berguna dalam menentukan persis bagaimana komputer digunakan.
Ada banyak alat khusus untuk tugas ini. Sebagian dapat mengambil data melalui SNMP (Simple Network Management Protocol) untuk memusatkan informasi ini. Manfaat tambahan adalah bahwa hal ini memungkinkan pengambilan data dari elemen-elemen jaringan yang mungkin bukan komputer untuk keperluan umum, seperti router jaringan atau switch.
Buku ini membahas Munin secara cukup rinci (lihat Bagian 12.4.1, “Menyiapkan Munin”) sebagai bagian dari Bab 12: “Administrasi Tingkat Lanjut. Debian juga menyediakan alat yang mirip, cacti. Penggelarannya sedikit lebih rumit, karena didasarkan semata-mata pada SNMP. Meskipun memiliki antarmuka web, menangkap konsep yang terlibat dalam konfigurasi masih memerlukan usaha. Membaca dokumentasi HTML (/usr/share/doc/cacti/html/index.html) mesti dianggap sebagai prasyarat.

14.3.3. Menghindari Intrusi

Penyerang mencoba untuk mendapatkan akses ke server dengan menebak kata sandi, itulah sebabnya kata sandi yang kuat harus selalu digunakan. Bahkan kemudian, Anda juga harus menetapkan tindakan terhadap serangan brute-force. Serangan brute force adalah upaya untuk masuk ke sistem perangkat lunak yang tidak sah dengan melakukan beberapa upaya login dalam waktu singkat.
Cara terbaik untuk menghentikan serangan brute-force adalah dengan membatasi cacah upaya login yang datang dari asal yang sama, biasanya dengan sementara melarang suatu alamat IP.
Fail2Ban adalah keluarga perangkat lunak pencegah intrusi yang dapat dikonfigurasi untuk memonitor layanan apapun yang menulis upaya login ke berkas log. Hal ini dapat ditemukan dalam paket fail2ban.
Fail2Ban dikonfigurasi melalui protokol sederhana dengan fail2ban-client, yang juga membaca berkas konfigurasi dan memberikan perintah konfigurasi yang sesuai ke server, fail2ban-server. Ini memiliki empat jenis berkas konfigurasi, semua disimpan di /etc/fail2ban:
  • fail2ban.conf. Konfigurasi global (seperti misalnya pencatatan log).
  • filter.d/*.conf. Filter yang menentukan cara mendeteksi kegagalan autentikasi. Paket Debian sudah berisi filter untuk banyak program umum.
  • action.d/*.conf. Tindakan yang menentukan perintah untuk melarang dan dan mengizinkan kembali alamat IP.
  • jail.conf. Itu adalah di mana jails, kombinasi filter dan tindakan, didefinisikan.
Mari kita lihat konfigurasi sshd di /etc/fail2ban/jail.conf untuk lebih memahami cara kerja Fail2Ban...
[...]
[DEFAULT]
[...]
bantime  = 10m
[...]
maxretry = 5
[...]
[sshd]
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Fail2Ban akan memeriksa percobaan login gagal untuk sshd menggunakan ekspresi reguler Python yang didefinisikan dalam /etc/fail2ban/filters.d/sshd.conf terhadap berkas log sshd, yang didefinisikan dalam variabel sshd_log dalam berkas /etc/fail2ban/paths_common.conf. Jika Fail2Ban mendeteksi lima upaya login gagal berturut-turut, maka akan melarang alamat IP asal upaya tersebut.
Fail2Ban adalah cara yang sangat sederhana dan efektif untuk melindungi terhadap serangan brute force yang paling umum, tetapi tidak dapat melindungi terhadap serangan brute force terdistribusi, yang ketika seorang penyerang menggunakan sejumlah besar mesin menyebar di internet.
Cara yang baik untuk memberikan perlindungan ekstra terhadap serangan brute force terdistribusi adalah untuk meningkatkan waktu login secara artifisial setelah setiap upaya yang gagal.

14.3.4. Mendeteksi Perubahan

Setelah sistem diinstal dan dikonfigurasi, dan selain peningkatan keamanan, biasanya tidak ada alasan bagi sebagian besar berkas dan direktori untuk berevolusi, kecuali data. Oleh karena itu menarik untuk memastikan bahwa berkas sebenarnya tidak berubah: setiap perubahan yang tidak terduga akan layak untuk diselidiki. Bagian ini menyajikan beberapa alat yang dapat memonitor berkas dan memperingatkan administrator ketika terjadi perubahan yang tidak terduga (atau hanya untuk membuat daftar perubahan tersebut).

14.3.4.1. Mengaudit Paket-paket dengan dpkg --verify

dpkg --verify (atau dpkg -V) adalah alat yang menarik karena memungkinkan mencari berkas terpasang mana yang telah dimodifikasi (mungkin oleh penyerang), tapi ini tidak boleh dipercaya begitu saja. Untuk melakukan tugasnya, dia bergantung pada checksum yang disimpan dalam basis data dpkg sendiri yang ada pada hard disk (dapat ditemukan di /var/lib/dpkg/info/paket .md5sums); penyerang yang menyeluruh karena itu akan memperbarui berkas ini sehingga mereka mengandung checksum baru untuk berkas yang dipalsukan.
Menjalankan dpkg -V akan memverifikasi semua paket yang terpasang dan akan mencetak sebaris untuk setiap berkas yang gagal uji. Format keluaran sama dengan salah satu rpm -V dimana setiap karakter menandakan tes atas beberapa metadata spesifik. Sayangnya dpkg tidak menyimpan metadata yang diperlukan untuk sebagian besar tes dan dengan demikian akan menampilkan tanda tanya bagi mereka. Saat ini hanya tes checksum yang dapat menghasilkan "5" pada karakter ketiga (ketika gagal).
# dpkg -V
??5??????   /lib/systemd/system/ssh.service
??5?????? c /etc/libvirt/qemu/networks/default.xml
??5?????? c /etc/lvm/lvm.conf
??5?????? c /etc/salt/roster
Dalam contoh di atas, dpkg laporan perubahan untuk berkas layanan SSH yang dibuat oleh administrator ke berkas yang dikemas alih-alih menggunakan /etc/systemd/system/ssh.service yang sesuai (yang akan disimpan di bawah /etc seperti sebarang perubahan konfigurasi yang seharusnya). Ini juga menampilkan daftar beberapa berkas konfigurasi (diidentifikasi oleh huruf "c" di field kedua) yang telah dimodifikasi secara sah.

14.3.4.2. Mengaudit Paket: debsums dan keterbatasannya

debsums adalah nenek moyang dpkg -V dan dengan demikian sebagian besar usang. It memiliki keterbatasan yang sama dengan dpkg. Untungnya, beberapa batasan dapat diatasi (sedangkan dpkg tidak menawarkan cara mengatasi yang serupa).
Karena data pada disk tidak bisa dipercaya, debsums menawarkan untuk melakukan cek berdasarkan berkas .deb bukan mengandalkan basis data dpkg. Untuk mengunduh berkas terpercaya .deb dari semua paket yang diinstal, kita dapat mengandalkan pengunduhan terotentikasi APT. Operasi ini mungkin lambat dan membosankan, dan karena itu tidak boleh dianggap teknik yang proaktif untuk digunakan secara teratur.
# apt-get --reinstall -d install `grep-status -e 'Status: install ok installed' -n -s Package`
[ ... ]
# debsums -p /var/cache/apt/archives --generate=all
Perhatikan bahwa contoh ini menggunakan perintah grep-status dari paket dctrl-tools, yang tidak diinstal secara default.
debsums dapat sering dijalankan sebagai pengaturan cronjob CRON_CHECK di /etc/default/debsums. Untuk mengabaikan berkas tertentu di luar direktori /etc, yang telah sengaja diubah atau yang diharapkan berubah (seperti /usr/share/misc/pci.ids) Anda dapat menambahkannya ke /etc/debsums-ignore.

14.3.4.3. Memantau Berkas: AIDE

Alat AIDE (Advanced Intrusion Detection Environment) memungkinkan memeriksa integritas berkas, dan mendeteksi perubahan terhadap citra yang direkam sebelumnya dari sistem yang berlaku. Citra ini disimpan sebagai basis data (/var/lib/aide/aide.db) yang berisi informasi yang relevan pada semua berkas sistem (sidik jari, izin, stempel waktu, dan seterusnya). Basis data ini pertama diinisialisasi dengan aideinit; ini kemudian digunakan setiap hari (oleh /etc/cron.daily/aide script) untuk memeriksa bahwa tidak ada yang relevan yang berubah. Ketika perubahan terdeteksi, AIDE mencata mereka dalam berkas log (/var/log/aide/*.log) dan mengirimkan temuannya ke administrator melalui surel.
Banyak pilihan di /etc/default/aide dapat digunakan untuk menala perilaku paket aide. Konfigurasi AIDE tepat disimpan dalam /etc/aide/aide.conf dan /etc/aide/aide.conf.d/ (sebenarnya, berkas-berkas ini hanya digunakan oleh update-aide.conf untuk menghasilkan /var/lib/aide/aide.conf.autogenerated). Konfigurasi menunjukkan properti apa dari berkas mana yang perlu diperiksa. Misalnya, isi dari berkas log berubah secara rutin, dan perubahan tersebut dapat diabaikan selama izin berkas ini tetap sama, tetapi isi dan izin program executable harus konstan. Meskipun tidak sangat kompleks, sintaks konfigurasi tidak sepenuhnya intuitif, dan membaca halaman manual aide.conf(5) karena itu dianjurkan.
Versi baru dari basis data dibuat setiap hari di /var/lib/aide/aide.db.new; jika semua perubahan yang direkam adalah sah, itu dapat dipakai untuk menggantikan basis data referensi.

14.3.5. Mendeteksi Intrusi (IDS/NIDS)

suricata (dalam paket Debian dengan nama yang sama) adalah NIDS — sebuah Network Intrusion Detection System (Sistem Deteksi Intrusi Jaringan). Fungsinya adalah untuk mendengarkan jaringan dan mencoba untuk mendeteksi upaya penyusupan dan/atau tindakan bermusuhan (termasuk serangan denial of service). Semua peristiwa ini dicatat dalam beberapa berkas di /var/log/suricata. Ada alat pihak ketiga (Kibana/logstash) untuk lebih baik mencari semua data yang dikumpulkan.
Mengkonfigurasi suricata melibatkan meninjau dan menyunting /etc/suricata/suricata-debian.yaml, yang sangat panjang karena setiap parameter dikomentari secara panjang lebar. Sebuah konfigurasi minimalis memerlukan menggambarkan kisaran alamat jaringan lokal yang dicakup (parameter HOME_NET). Dalam prakteknya, ini berarti set semua target serangan yang potensial. Tapi mendapatkan sebagian besar dari itu memerlukan membacanya secara penuh dan mengadaptasinya ke situasi lokal.
Selain ini, Anda juga harus menyunting /etc/default/suricata untuk menentukan antarmuka jaringan yang dipantau dan mengaktifkan skrip init (dengan menetapkan RUN=yes). Anda mungkin juga ingin mengatur LISTENMODE=pcap karena nilai baku LISTENMODE=nfqueue memerlukan konfigurasi lebih lanjut untuk bekerja dengan baik (firewall netfilter harus dikonfigurasi untuk menyampaikan paket ke beberapa antrian ruang pengguna yang ditangani oleh suricata melalui target NFQUEUE).
Untuk mendeteksi perilaku buruk, suricata memerlukan satu set aturan pemantauan: Anda dapat menemukan aturan seperti itu dalam paket snort-rules-default. snort adalah referensi bersejarah dalam ekosistem IDS dan suricata mampu memakai kembali aturan-aturan yang ditulis untuk itu.
Sebagai alternatif, oinkmaster (dalam paket dengan nama yang sama) dapat digunakan untuk mengunduh aturan Snort dari sumber eksternal.