Fail2Ban adalah intrusion prevention tool yang membaca log service (seperti SSH) dan otomatis melakukan ban IP address jika terdeteksi brute-force attack.
Dokumentasi ini menjelaskan instalasi dan konfigurasi Fail2Ban untuk proteksi SSH (sshd).
sudo apt update
sudo apt install fail2ban -y
Enable dan pastikan service aktif:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl status fail2ban
File default: /etc/fail2ban/jail.conf
Best practice: gunakan file override jail.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Atau buat manual:
sudo nano /etc/fail2ban/jail.local
Edit file: /etc/fail2ban/jail.local
Tambahkan atau sesuaikan:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
Parameter: - bantime : Durasi IP diblokir - findtime : Window waktu perhitungan retry - maxretry : Maksimal percobaan gagal sebelum diban - backend : Gunakan systemd untuk distro modern
Tambahkan di file yang sama:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = systemd
maxretry = 5
bantime = 1h
Jika menggunakan custom SSH port (misal 2222):
port = 2222
Restart service:
sudo systemctl restart fail2ban
Cek jail aktif:
sudo fail2ban-client status
Cek detail sshd:
sudo fail2ban-client status sshd
Melihat log Fail2Ban:
sudo journalctl -u fail2ban
Atau:
sudo tail -f /var/log/fail2ban.log
Jika terjadi false positive:
sudo fail2ban-client set sshd unbanip <IP_ADDRESS>
Contoh:
sudo fail2ban-client set sshd unbanip 192.168.1.10
Edit konfigurasi SSH:
sudo nano /etc/ssh/sshd_config
Disable Root Login:
PermitRootLogin no
Disable Password Authentication (gunakan SSH Key):
PasswordAuthentication no
Optional -- Ganti default SSH port:
Port 2222
Restart SSH:
sudo systemctl restart ssh
Contoh konfigurasi lebih ketat:
[DEFAULT]
bantime = 24h
findtime = 10m
maxretry = 3
Permanent ban:
bantime = -1
Pastikan:
Security is layered, not single control.