1. Apa itu Fail2Ban?

Fail2Ban adalah sistem keamanan yang memantau log server dan secara otomatis memblokir IP yang melakukan percobaan login gagal berulang kali (brute force attack), terutama pada SSH.

2. Install Fail2Ban di Ubuntu

Update sistem dan install paket:

sudo apt update
sudo apt install fail2ban -y

3. Backup konfigurasi default

Jangan edit file asli, buat salinan:

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

4. Konfigurasi dasar yang aman

Edit file:

sudo nano /etc/fail2ban/jail.local

Isi konfigurasi minimal aman:

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 172.16.x.0/24 10.10.x.0/30
bantime = 10m
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
backend = systemd

Penjelasan:

  • ignoreip → IP yang tidak boleh diblok (penting!)
  • maxretry → batas percobaan login gagal
  • bantime → lama blokir IP
  • [sshd] → proteksi SSH

5. Jalankan Fail2Ban

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

6. Cek status service

sudo systemctl status fail2ban

Jika berhasil:

Active: active (running)

7. Cek jail SSH aktif

sudo fail2ban-client status sshd

Contoh output:

Currently failed: 0
Currently banned: 0
Total failed: 0

8. Cara testing Fail2Ban

Dari komputer lain, lakukan login SSH dan masukkan password salah beberapa kali:

ssh root@IP_SERVER

Setelah 5 kali gagal (default maxretry), IP akan diblok otomatis.

9. Cek IP yang diblok

sudo fail2ban-client status sshd

Jika ada ban:

Banned IP list: xxx.xxx.xxx.xxx

10. Cara Unban IP

Jika ingin membuka blokir IP:

sudo fail2ban-client set sshd unbanip IP_KAMU

Contoh:

sudo fail2ban-client set sshd unbanip 172.16.4.10

cek apakah sudah berhasil

fail2ban-client status sshd

Unban semua IP di jail SSH (reset ban)

Kalau mau bersihkan semua ban:

fail2ban-client set sshd unban --all

(kalau versi mendukung, jika tidak, unban satu per satu)

Tips penting

  • Pastikan kamu unban dari server yang benar
  • Jangan unban IP attacker tanpa alasan
  • Kalau sering salah ban, cek konfigurasi:
  • maxretry
  • ignoreip

11. Cek log Fail2Ban

sudo tail -f /var/log/fail2ban.log

atau:

journalctl -u fail2ban -f

12. Troubleshooting cepat

Jika Fail2Ban tidak jalan:

systemctl status fail2ban

Restart paksa:

sudo systemctl restart fail2ban

Cek error detail:

journalctl -u fail2ban --no-pager -n 50

Kesimpulan

Dengan konfigurasi ini:

  • SSH server lebih aman dari brute force
  • IP penyerang otomatis diblok
  • Bisa unban kapan saja
  • Tidak mengganggu sistem utama

Rekomendasi lanjutan

Untuk server production (termasuk Wazuh):

  • turunkan maxretry = 3
  • naikkan bantime = 1h
  • aktifkan alert ke SIEM (Wazuh)