Pendahuluan
Serangan brute force pada layanan seperti SSH dan Apache adalah ancaman umum bagi server yang terhubung ke internet. Jika tidak dikonfigurasi dengan baik, server bisa menjadi sasaran peretasan. Fail2ban adalah tools yang membantu mencegah serangan ini dengan memblokir alamat IP yang menunjukkan perilaku mencurigakan.
Dalam artikel ini, kita akan membahas cara mengamankan SSH dan Apache menggunakan Fail2ban di Linux.
Apa Itu Fail2ban?
Fail2ban adalah intrusion prevention tool yang memantau log sistem dan secara otomatis memblokir alamat IP yang melakukan terlalu banyak percobaan gagal (seperti login SSH atau serangan web). Fail2ban bekerja dengan:
-
Memantau log file (misalnya
/var/log/auth.log
untuk SSH atau/var/log/apache2/error.log
untuk Apache). -
Mendeteksi pola serangan (misalnya, banyak percobaan login gagal).
-
Memblokir IP menggunakan firewall (iptables, nftables, atau firewalld) untuk waktu tertentu.
Instalasi Fail2ban
Sebelum memulai, pastikan server Anda sudah terupdate:
sudo apt update && sudo apt upgrade -y # Untuk Debian/Ubuntu sudo yum update -y # Untuk CentOS/RHEL
1. Install Fail2ban
-
Debian/Ubuntu:
sudo apt install fail2ban -y
-
CentOS/RHEL:
sudo yum install epel-release -y sudo yum install fail2ban -y
2. Aktifkan dan Jalankan Fail2ban
sudo systemctl enable fail2ban sudo systemctl start fail2ban
Konfigurasi Fail2ban untuk SSH
Fail2ban sudah memiliki konfigurasi default untuk SSH (sshd
). Kita bisa menyesuaikannya.
1. Edit File Konfigurasi Jail SSH
sudo nano /etc/fail2ban/jail.local
Tambahkan konfigurasi berikut:
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 1h findtime = 10m ignoreip = 127.0.0.1/8 192.168.1.0/24 # IP yang diizinkan (whitelist)
-
maxretry: Jumlah percobaan gagal sebelum diblokir.
-
bantime: Durasi pemblokiran (1 jam).
-
findtime: Jangka waktu deteksi percobaan gagal (10 menit).
2. Restart Fail2ban
sudo systemctl restart fail2ban
3. Cek Status Fail2ban untuk SSH
sudo fail2ban-client status sshd
Contoh output:
Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 12 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 2 |- Total banned: 5 `- Banned IP list: 123.45.67.89 101.202.34.56
Konfigurasi Fail2ban untuk Apache
Fail2ban juga bisa memblokir serangan pada Apache, seperti:
-
Brute force login (phpMyAdmin, WordPress, dll).
-
Serangan DDoS atau scanning.
1. Buat Filter untuk Apache
Buat file filter untuk deteksi serangan:
sudo nano /etc/fail2ban/filter.d/apache-badbots.conf
Isi dengan:
[Definition] failregex = ^<HOST> .* "(GET|POST|HEAD).*HTTP.*" (404|403|400) .*$ ignoreregex =
Simpan dan keluar.
2. Konfigurasi Jail Apache
Edit file jail:
sudo nano /etc/fail2ban/jail.local
Tambahkan:
[apache-badbots] enabled = true port = http,https filter = apache-badbots logpath = /var/log/apache2/error.log # Untuk Debian/Ubuntu # logpath = /var/log/httpd/error_log # Untuk CentOS/RHEL maxretry = 5 bantime = 24h findtime = 1h
3. Restart Fail2ban
sudo systemctl restart fail2ban
4. Cek Status Fail2ban untuk Apache
sudo fail2ban-client status apache-badbots
Tips Tambahan
-
Monitoring Log Fail2ban:
sudo tail -f /var/log/fail2ban.log
-
Unban IP Manual:
sudo fail2ban-client set sshd unbanip 123.45.67.89
-
Optimasi Konfigurasi:
-
Sesuaikan
maxretry
danbantime
sesuai kebutuhan. -
Gunakan
ignoreip
untuk IP tepercaya.
-
Kesimpulan
Dengan Fail2ban, kita bisa secara otomatis memblokir serangan brute force pada SSH dan Apache, meningkatkan keamanan server. Pastikan untuk:
-
Memantau log secara berkala.
-
Mengupdate konfigurasi sesuai kebutuhan.
-
Menggabungkannya dengan firewall (seperti UFW/iptables) untuk perlindungan ekstra.
Dengan langkah-langkah di atas, server Anda akan lebih aman dari serangan umum di internet. 🚀
Semoga bermanfaat!