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.
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 apa pun 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 mencekal 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
[...]
findtime = 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 mencekal alamat IP asal upaya tersebut.
Untuk mengaktifkan, menonaktifkan, atau mengonfigurasi "jails", berkas konfigurasi utama /etc/fail2ban/jail.conf
tidak seharusnya diubah. Sebaliknya ini seharusnya dilakukan di /etc/fail2ban/jail.d/defaults-debian.conf
atau berkas dalam direktori yang sama.
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 bidang 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. Itu 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.
Mengonfigurasi 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 praktiknya, 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 menyuntingnya untuk menentukan interface
jaringan. 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 antrean 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.