BisaCloud
fail2ban

Blokir Brute Force dengan Fail2Ban

BisaCloud Team
April 12, 2026
Blokir Brute Force dengan Fail2Ban

Fail2Ban adalah framework Intrusion Prevention System (IPS) open-source yang digunakan untuk melindungi server Linux dari serangan seperti brute-force atau upaya akses tidak sah lainnya yang dilakukan berulang kali dari alamat IP yang sama.

Fail2Ban bekerja dengan memantau file log sistem seperti log SSH, FTP, atau web server untuk mendeteksi pola aktivitas mencurigakan. Jika ditemukan percobaan gagal melebihi batas tertentu, Fail2Ban akan secara otomatis menjalankan aturan firewall (seperti iptables, nftables, atau firewalld) untuk memblokir alamat IP tersebut sementara waktu.

Prasyarat

  • Server Linux (Ubuntu / Debian / CentOS / RHEL)
  • Akses sudo atau root
  • Fail2Ban sudah terpasang

Instalasi:

# Debian / Ubuntu sudo apt install fail2ban # CentOS / RHEL sudo dnf install fail2ban

Step-by-step instructions

Buat File Konfigurasi Lokal

Agar konfigurasi tidak tertimpa saat update paket:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Edit File Konfigurasi

sudo nano /etc/fail2ban/jail.local

Atur Parameter Dasar di Bagian [DEFAULT]

[DEFAULT] ignoreip = 127.0.0.1/8 192.168.1.0/24 bantime = 3600 findtime = 600 maxretry = 5 backend = auto

Keterangan:

  • ignoreip → IP/subnet yang tidak akan diblokir
  • bantime → Lama pemblokiran (detik)
  • findtime → Rentang waktu penghitungan percobaan gagal
  • maxretry → Maksimal percobaan gagal sebelum diblokir
  • backend → Metode pembacaan log

Aktifkan Jail SSH

[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 3600

Untuk CentOS / RHEL, gunakan:

logpath = /var/log/secure

Tambahkan Jail untuk Apache (Opsional)

[apache-auth] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/error.log maxretry = 5 bantime = 1800

Sesuaikan lokasi log jika berbeda.

Aktifkan Jail Recidive

Digunakan untuk memblokir lebih lama pada alamat IP yang berulang kali terkena ban.

[recidive] enabled = true filter = recidive logpath = /var/log/fail2ban.log bantime = 1w findtime = 1d maxretry = 3

Restart Service Fail2Ban

sudo systemctl restart fail2ban

Atau Anda bisa reload konfigurasi tanpa restart service dengan perintah berikut

sudo fail2ban-client reload

Verifikasi Status

Melihat semua jail aktif

sudo fail2ban-client status

Melihat status jail SSH

sudo fail2ban-client status sshd

Manajemen IP

Membuka blokir IP tertentu

sudo fail2ban-client set sshd unbanip <IP_ADDRESS>

Memblokir IP secara manual

sudo fail2ban-client set sshd banip <IP_ADDRESS>

Pengujian Filter

Untuk menguji apakah filter Fail2Ban membaca log dengan benar:

sudo fail2ban-regex -v --print-all-missed /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

Useful commands

  • Cek daftar IP yang sudah diblokir fail2ban
for jail in $(fail2ban-client status | grep 'Jail list' | cut -d: -f2 | tr ',' '\n' | tr -d ' '); do echo "== Jail: $jail =="; fail2ban-client status "$jail" | grep 'Banned IP list'; echo; done
  • Buka semua IP yang diblokir pada filter fail2ban:
for jail in $(fail2ban-client status | grep 'Jail list:' | cut -d: -f2 | tr -d ' ' | tr ',' ' '); do echo "Checking jail: $jail" banned_ips=$(fail2ban-client status "$jail" | grep 'Banned IP list' | cut -d: -f2) for ip in $banned_ips; do fail2ban-client set "$jail" unbanip "$ip" && echo "→ Unbanned $ip from $jail" done done
  • Buka blokir khusus jail tertentu
for ip in $(sudo fail2ban-client status sshd | grep 'Banned IP list:' | awk -F': ' '{print $2}'); do sudo fail2ban-client set sshd unbanip $ip done
  • Buka blokir khusus IP tertentu pada semua jail
IP="182.8.131.150" for jail in $(fail2ban-client status | grep 'Jail list:' | cut -d: -f2 | tr -d ' ' | tr ',' ' '); do echo "Checking jail: $jail" if fail2ban-client status "$jail" | grep -q "$IP"; then fail2ban-client set "$jail" unbanip "$IP" && echo "→ Unbanned $IP from $jail" else echo "No ban for $IP in $jail" fi done

Related Articles

Tags
#fail2ban