Upaya membatasi login masuk adalah cara mudah untuk mencegah beberapa serangan tebakan kata sandi berkecepatan tinggi. Namun, sulit untuk membatasi serangan yang didistribusikan dan banyak yang berjalan dengan kecepatan rendah selama beberapa minggu atau bulan. Saya pribadi lebih suka menghindari penggunaan alat respons otomatis seperti fail2ban. Dan ini karena dua alasan:
- Pengguna yang sah terkadang lupa kata sandi mereka. Saya tidak ingin mencekal pengguna yang sah dari server saya, memaksaku untuk secara manual mengaktifkan kembali akun mereka (atau lebih buruk lagi, cobalah mencari tahu dari 100/1000 alamat IP yang dilarang milik mereka).
- Alamat IP bukan pengidentifikasi yang baik untuk pengguna. Jika Anda memiliki banyak pengguna di belakang satu IP (misalnya, sebuah sekolah yang menjalankan NAT pada 500 mesin siswa), satu pengguna yang membuat beberapa tebakan buruk dapat membuat Anda berada di dunia yang penuh penderitaan. Pada saat yang sama sebagian besar upaya menebak kata sandi yang saya lihat didistribusikan.
Oleh karena itu saya tidak menganggap fail2ban (dan alat respons otomatis serupa) pendekatan yang sangat baik untuk mengamankan server terhadap serangan brute force. Aturan IPTables sederhana yang diatur untuk mengurangi log spam (yang saya miliki di sebagian besar server linux saya) adalah sesuatu seperti ini:
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Ini mencegah lebih dari 4 upaya koneksi dari satu IP ke ssh dalam periode 60 detik. Sisanya dapat ditangani dengan memastikan kata sandi cukup kuat. Pada server keamanan tinggi yang memaksa pengguna untuk menggunakan otentikasi kunci publik adalah cara lain untuk berhenti menebak.