Search

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:

  1. Memantau log file (misalnya /var/log/auth.log untuk SSH atau /var/log/apache2/error.log untuk Apache).

  2. Mendeteksi pola serangan (misalnya, banyak percobaan login gagal).

  3. 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

  1. Monitoring Log Fail2ban:

    sudo tail -f /var/log/fail2ban.log
  2. Unban IP Manual:

    sudo fail2ban-client set sshd unbanip 123.45.67.89
  3. Optimasi Konfigurasi:

    • Sesuaikan maxretry dan bantime 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!