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.
The list of monitored files is stored in /etc/logcheck/logcheck.logfiles
and /etc/logcheck/logcheck.logfiles.d/
; the default values work fine with systemd and rsyslog if their configuration files have not been completely overhauled.
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.
The gnome-system-monitor
graphical tool is similar to top
and it provides roughly the same features. Alternatives are atop
and htop
, which provide similar functionality, but differ in usability features, like the scrolling ability.
Processor load, memory usage, network traffic and free disk space are information that are constantly varying. Keeping a history of their evolution is often useful in determining exactly how the computer is used.
There are many dedicated tools for this task. The sysstat package, for example, collects and displays system performance statistics locally. The data can then be visualized with the sar
command. Most tools, though, can fetch data via SNMP (Simple Network Management Protocol) in order to centralize this information. An added benefit is that this allows fetching data from network elements that may not be general-purpose computers, such as dedicated network routers or switches.
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 is an intrusion prevention software suite that can be configured to monitor any service that writes login attempts to a log file or the system journal. It can be found in the package 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
and fail2ban.d/*.conf
. Global configuration (such as logging).
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
and jail.d/*.conf
. It is where jails, the combinations of filters and actions, are defined.
Mari kita lihat konfigurasi sshd
di /etc/fail2ban/jail.conf
untuk lebih memahami cara kerja Fail2Ban...
[...]
[DEFAULT]
[...]
bantime = 1h
[...]
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 1 hour.
The default backend
used now is systemd
. The old log files, like auth.log
are only available if rsyslog has been installed and enabled.
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.
If docker containers are involved, the rules injected into iptables
by fail2ban
to block traffic from specific IPs must be applied to the right chain by chain = DOCKER-USER
. Otherwise, the ban will not work.
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.
A good way to provide extra protection against distributed brute force attacks is to artificially increase the login time after each failed attempt. It is also possible to increase the block time with each ban for the same IP.
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
(or dpkg -V
) is an interesting tool since it allows finding what installed files have been modified (potentially by an attacker), but this should be taken with a grain of salt. To do its job it relies on checksums stored in dpkg's own database which is stored on the hard disk (they can be found in /var/lib/dpkg/info/package.md5sums
); a thorough attacker will therefore update these files so they contain the new checksums for the subverted files. The same is true for debsums
.
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?????? c /etc/logcheck/logcheck.logfiles.d/syslog.logfiles
??5?????? c /etc/logrotate.d/apt
??5?????? /lib/systemd/system/ssh.service
??5?????? c /etc/systemd/journald.conf
??5?????? c /etc/lvm/lvm.conf
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
(in the Debian package of the same name) is a 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. The tool can be considered the successor of
snort
, which has been removed from Debian.
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.
On top of this, you should also edit to define the network interface
. You might also want to set LISTENMODE=pcap
in /etc/default/suricata
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.
Sebagai alternatif, oinkmaster
(dalam paket dengan nama yang sama) dapat digunakan untuk mengunduh aturan Snort dari sumber eksternal.
Unfortunately, the mentioned packages are not part of the current Debian
Bookworm release. But they can still be retrieved via the Debian package search or from the Debian snapshot archive.