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
Attackers try to get access to servers by guessing passwords, which is why strong passwords must always be used. Even then, you should also establish measures against brute-force attacks. A brute-force attack is an attempt to log into an unauthorized software system by performing multiple login attempts in a short period of time.
The best way to stop a brute-force attack is to limit the number of login attempts coming from the same origin, usually by temporarily banning an IP address.
Fail2Ban is an intrusion prevention software suite that can be configured to monitor any service that writes login attempts to a log file. It can be found in the package fail2ban.
Fail2Ban is configured through a simple protocol by fail2ban-client
, which also reads configuration files and issues corresponding configuration commands to the server, fail2ban-server
. It has four configuration file types, all stored in /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
. Actions defining the commands for banning and “unbanning“ of IP addresses.
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 will check for failed login attempts for sshd
using Python regular expressions defined in /etc/fail2ban/filter.d/sshd.conf
against the log file of sshd
, which is defined in the variable sshd_log
in the file /etc/fail2ban/paths-common.conf
. If Fail2Ban detects five failed login attempts within 10 minutes, it will ban the IP address where those attempts originated for 10 minutes.
To enable, disable, or configure “jails“, the main configuration file /etc/fail2ban/jail.conf
is not supposed to be altered. Instead this is supposed to be done in /etc/fail2ban/jail.d/defaults-debian.conf
or files within the same directory.
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
In the sample above, dpkg reports a change to SSH's service file that the administrator made to the packaged file instead of using an appropriate /etc/systemd/system/ssh.service.d/override.conf
override (which would be stored below /etc
like any configuration change should be). It also lists multiple configuration files (identified by the "c" letter on the second field) that had been legitimately modified.
14.3.4.2. Mengaudit Paket: debsums
dan keterbatasannya
debsums
is the ancestor of dpkg -V
and is thus mostly obsolete. It suffers from the same limitations than dpkg. Fortunately, some of the limitations can be worked-around (whereas dpkg does not offer similar workarounds).
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
can be run frequently as a cronjob setting CRON_CHECK
in /etc/default/debsums
. To ignore certain files outside the /etc
directory, which have been altered on purpose or which are expected to change (like /usr/share/misc/pci.ids
) you can add them to /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
(in the Debian package of the same name) is an NIDS — a
Network Intrusion Detection System. Its function is to listen to the network and try to detect infiltration attempts and/or hostile acts (including denial of service attacks). All these events are logged in multiple files in
/var/log/suricata
. There are third party tools (Kibana/logstash) to better browse all the data collected.
Configuring suricata involves reviewing and editing /etc/suricata/suricata.yaml
, which is very long because each parameter is abundantly commented. A minimal configuration requires describing the range of addresses that the local network covers (HOME_NET
parameter). In practice, this means the set of all potential attack targets. But getting the most of it requires reading it in full and adapting it to the local situation.
On top of this, you should also edit it to define the network interface
. You might also want to set LISTENMODE=pcap
because the default LISTENMODE=nfqueue
requires further configuration to work properly (the netfilter firewall must be configured to pass packets to some user-space queue handled by suricata via the NFQUEUE
target).
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.
Alternatively, oinkmaster
(in the package of the same name) can be used to download Snort rule sets from external sources.