Bayangin server lo kayak kos-kosan di jalan rame: tiap menit ada orang coba buka pintu pakai kunci palsu.
Daripada lo duduk 24/7 ngintip CCTV, Fail2Ban datang sebagai satpam otomatis yang langsung kunci gerbang begitu ada usaha mencurigakan.
Ringan, open-source, dan bisa di-install di Ubuntu, CentOS, bahkan Raspberry Pi.
Intinya: pantau log, hitung gagal, blokir IP, selesai.
Apa sih Fail2Ban?
Fail2Ban adalah daemon Python yang jalan di belakang layar, tugasnya cuma satu: baca log, temukan pola brute-force, lalu suruh firewall (iptables, nftables, atau firewalld) buang IP yang iseng.
Konsepnya mirip alarm rumah yang bunyi kalau ada gerak mencurigakan, tapi versi Linux.
Komponen Utama
1. filter.d/
File regex yang nentuin baris log mana yang dianggap serangan.
Contoh `sshd.conf` bakal tangkap log “Failed password for root from 1.2.3.4”.
Mau bikin custom? Edit aja regex-nya.
2. jail.conf / jail.local
Konfigurasi “penjara” tempat lo atur:
– `maxretry` : berapa kali gagal sebelum diblokir (default 5).
– `bantime` : durasi blokir, bisa detik, menit, atau jam (misalnya 1h).
– `findtime` : jendela waktu di mana kegagalan dihitung.
Contoh jail buat SSH:
“`
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
“`
3. action.d/
Skrip yang dijalankan saat IP diblokir.
Default cuma drop paket, tapi lo bisa modif supaya kirim notif ke Slack atau Telegram.
Alur Kerja 5 Langkah
1. Monitor log sesuai `logpath`.
2. Cocokkan regex di filter → hitung kegagalan.
3. Kalau jumlah gagal ≥ `maxretry` dalam `findtime`, IP masuk daftar hitam.
4. Jalankan action (iptables -A fail2ban-SSH -s IP -j DROP).
5. Setelah `bantime` habis, IP otomatis di-unban atau tetap diblokir permanen (opsional).
Use Case Populer
– SSH brute-force: Rata-rata server baru di cloud kena 100+ percobaan login per hari. Fail2Ban langsung cut loss.
– WordPress login: Tambahkan jail buat `/var/log/nginx/access.log` dengan regex `POST /wp-login.php.* 200`.
– Mail server: Cegak spam submission dengan jail Postfix/SASL.
Tips Biar Makin Kekar
– Whitelist IP kantor di `ignoreip = 103.21.x.x`.
– Naikkan `maxretry` untuk layanan internal supaya tim DevOps nggak ketiban ban gara-gara salah ketik.
– Integrasi dengan Cloudflare: Fail2Ban push IP ke CF firewall, jadi blokirnya global.
– Rotate log pake logrotate biar file log nggak gendut.
Fail2Ban bukan antivirus super canggih, tapi tameng pertama yang murah meriah dan efektif.
Dengan konfigurasi 10 menit, lo sudah memangkas 90 % percobaan brute-force.
Ingat: fail2ban cuma layer pertama, tetap patch sistem dan pake 2FA.
Ngopi sambil konfig Fail2Ban? Yuk, gas bareng ShinoBee ID !