Kedua perkakas membaca log dan memblokir alamat, dan sekilas CrowdSec tampak seperti Fail2ban dengan kode yang lebih baru. Perbedaan keduanya lebih mendasar daripada itu, dan letaknya bukan pada usia kodenya melainkan pada dari mana keputusan memblokir itu datang.
Bagaimana keduanya dibangun
Fail2ban adalah satu proses tunggal yang membaca log, menghitung kecocokan ekspresi reguler dan memanggil perintah firewall. Setiap keputusan diambil di mesin Anda dari pencacah Anda sendiri. Tidak ada yang dikirim ke mana pun, tidak ada ketergantungan, dan konfigurasinya berupa berkas teks.
CrowdSec terbagi menjadi dua bagian, dan itulah hal utama yang perlu dipahami sebelum memasangnya. Agennya sendiri hanya mendeteksi: ia menganalisis log, menerapkan skenario dan menulis keputusan ke basis datanya sendiri. Keputusan dijalankan oleh program terpisah, yaitu bouncer. Dan tanpa memasang bouncer, CrowdSec tetap berjalan, menampilkan alert, menyimpan daftar keputusan — dan tidak memblokir apa pun.
Inilah kekecewaan paling umum pada perkenalan pertama: perkakasnya terpasang, serangannya terlihat, dan lalu lintasnya mengalir persis seperti sebelumnya.
sudo apt install crowdsec
sudo apt install crowdsec-firewall-bouncer-iptables
sudo cscli bouncers list
Perintah terakhir itu harus menampilkan setidaknya satu entri terdaftar. Daftar kosong berarti tidak ada pemblokiran.
Perbedaan kedua: reputasi bersama
Fail2ban hanya tahu apa yang terjadi di tempat Anda. Sebuah alamat yang kemarin menghabiskan waktu membobol seratus server lain masih bersih di matanya sampai ia mengetuk pintu Anda — dan lima percobaan pertamanya gratis.
CrowdSec mengirim sinyal tentang apa yang menyala ke sebuah jaringan bersama dan menerima balik daftar alamat yang terlihat di server orang lain. Efek praktisnya: bagian yang nyata dari penebakan kata sandi terpotong bahkan sebelum percobaan pertama. Dan itu terutama penting menghadapi serangan terdistribusi — ribuan alamat, masing-masing satu percobaan, di mana pencacah lokal tak berdaya menurut definisinya.
Dan inilah yang perlu diketahui sejak awal: pertukarannya berjalan dua arah. Yang keluar dari server Anda adalah alamat pelanggar dan jenis skenario yang menyala. Bekerja sepenuhnya lokal itu mungkin — tanpa mendaftar ke konsol awan — tetapi saat itu daftar bersamanya juga tidak lagi tersedia bagi Anda, dan keunggulan utamanya lenyap. Itu adalah pilihan yang disadari, bukan detail konfigurasi.
Perintah sehari-hari
sudo cscli metrics
sudo cscli alerts list
sudo cscli decisions list
sudo cscli decisions delete --ip 203.0.113.25
metrics menjawab pertanyaan apakah lognya dibaca sama sekali: kalau jumlah baris yang dianalisis nol maka koleksi untuk server web Anda belum terpasang atau jalur lognya salah. Itu adalah kasus «terpasang dan tidak bekerja» yang paling umum kedua.
sudo cscli collections list
sudo cscli collections install crowdsecurity/nginx
Sumber daya
CrowdSec ditulis dalam Go dan menyimpan keadaannya di basis data. Penggunaan memorinya sekitar seratus megabita, ditambah bouncer. Pada server dengan satu gigabita memori itu terasa; dari dua ke atas tidak. Fail2ban lebih ringan, dan melakukan lebih sedikit.
Perlukah memakai keduanya
Keduanya tidak berbenturan: yang satu menulis aturannya ke firewall dan yang lain menulis aturannya sendiri, dan memblokir alamat yang sama dua kali tidak merugikan siapa pun. Pembagian yang masuk akal terlihat begini.
CrowdSec menangani lalu lintas massal: penebakan SSH, pemindaian server web, dan alamat buruk yang sudah dikenal dari daftar bersama. Sedangkan Fail2ban tinggal di tempat Anda punya log sendiri dengan format sendiri, yang menulis ekspresi reguler untuknya lebih mudah daripada menulis skenario — aplikasi buatan sendiri, layanan langka, formulir login yang khas.
Dan kalau harus memilih satu, tolok ukurnya adalah: pada server dengan situs yang terus-menerus dicolek, CrowdSec memberi lebih banyak berkat daftar bersamanya. Tetapi pada server yang hanya Anda jangkau lewat SSH dengan kunci, perbedaan keduanya kecil — sebagian besar pekerjaan di sana sudah selesai dengan mematikan kata sandi.
Satu batasan bersama
Tidak satu pun dari keduanya melindungi dari cacat aplikasi. Keduanya bekerja pada frekuensi permintaan dan reputasi alamat, dan sebuah permintaan yang memanfaatkan lubang sebuah plugin pada percobaan pertama dari alamat yang bersih akan lewat di samping keduanya. Itu pekerjaan perkakas lain — WAF di tingkat permintaan dan pembaruan yang tepat waktu. Memblokir alamat menghilangkan latar kebisingan, bukan penyebabnya.
Dan nilai praktis keduanya bergantung pada apakah ada yang melihat hasilnya. Jumlah keputusan yang bertambah, sebuah skenario yang menyala untuk pertama kali, perubahan negara asal percobaan — itulah informasi yang menjadi alasan perkakas ini dipasang. Bagaimana tampilannya pada satu halaman — lihat di demo bawah.