Home Cyber Security Panduan Install & Konfigurasi Fail2ban di Debian/Ubuntu

Panduan Install & Konfigurasi Fail2ban di Debian/Ubuntu

126
0
Fail2Ban Protection for Debian/Ubuntu
Fail2Ban Protection for Debian/Ubuntu (AI Generated)

Apa itu Fail2ban? Fail2ban adalah sebuah Intrusion Prevention System alias IPS di sistem operasi berbasis Linux. Fail2ban memiliki fungsi untuk melindungi sebuah server dari Brute-Force Attack (percobaan login berulang-ulang) dengan beberapa cara, termasuk memantau log file (eg, /var/log/auth.log untuk SSH, /var/log/nginx/error.log untuk web server), kemudian jika ada banyak percobaan gagal dari 1 alamat IP dalam jangka waktu tertentu maka Fail2ban akan otomatis memblokir IP tersebut, dan pemblokiran biasanya dilakukan lewat rule Firewall (eg, UFW maupun Iptables).

Contoh kerja dari Fail2ban adalah jika ada orang mencoba login melalui SSH ke server Anda 20 kali gagal dalam 5 menit, maka Fail2ban akan mendeteksi pola ini di log, dan kemudian IP penyerang alias attacker akan diblokir selama jangka waktu misalnya 15 menit tidak bisa konek lagi ke SSH server.

Dengan demikian, Fail2ban memberikan manfaat melindungi server Anda dari upaya jahat brute-force login, mengurangi spam bot scanning di web server, serta bisa diterapkan ke banyak service seperti SSH, web server Nginx/Apache, Postfix, Dovecot, dan lain sebagainya. Secara singkat Fail2ban merupakan “penjaga gerbang” yang baca log, lalu otomatis ban IP penyerang di tingkat firewall kalau ada upaya serangan brute-force.

Berikut panduan instalasi dan konfigurasi Fail2ban di sistem operasi Debian/Ubuntu. Untuk langkah-langkahnya sangat mudah, cukup ikuti panduan berikut ini. Namun, pastikan Anda memiliki hak akses root penuh agar dapat menjalankan semua command di bawah ini.

1.) Install Fail2ban

Di kedua distro baik itu Debian maupun Ubuntu, paket resmi Fail2ban sudah tersedia di repositori.

$ sudo apt update
$ sudo apt install fail2ban -y

2.) Struktur Konfigurasi Fail2ban

File config bawaan terletak di /etc/fail2ban/jail.conf

Namun, jangan Anda edit langsung, silahkan custom confignya di /etc/fail2ban/jail.local atau /etc/fail2ban/jail.d/*.conf

Itu karena Fail2ban akan membaca file “jail.local” maupun file config di di direktori jail.d yang akan meng-override config defaultnya.

3.) Konfigurasi Dasar Fail2ban (/etc/fail2ban/jail.local)

Buat file baru dengan editor nano yang paling mudah:

$ sudo nano /etc/fail2ban/jail.local

Kemudian isikan sintaks atau variabel rule berikut ini, yang merupakan contoh aman untuk proteksi SSH dan web server Nginx, namun tetap bisa disesuaikan:

[DEFAULT]
# Ban selama 15 menit
bantime = 15m

# Waktu window percobaan login (10 menit)
findtime = 10m

# Percobaan gagal maksimal sebelum ban
maxretry = 5

# Gunakan UFW untuk block
banaction = ufw

# Catat log
backend = systemd

[sshd]
enabled = true
port = 59105 ; ganti dengan port SSH custom kamu
logpath = %(sshd_log)s
backend = systemd

[nginx-http-auth]
enabled = true

[nginx-botsearch]
enabled = true
CATATAN:
  • banaction = ufw, maka Fail2ban akan otomatis menambahkan IP penyerang ke UFW block list.
  • Kalau pakai iptables langsung (tanpa UFW), ganti banaction = iptables-multiport.

4.) Konfigurasi Tambahan (opsional)

Ini merupakan konfigurasi tambahan untuk melindungi web server Nginx dari 404 brute force attack, misalnya scan bot jahat.

Tambahkan file jail khusus:

$ sudo nano /etc/fail2ban/jail.d/nginx-404.conf

Isikan rule berikut ini:

[nginx-404]
enabled = true
port = http,https
filter = nginx-404
logpath = /var/log/nginx/access.log
maxretry = 10
findtime = 10m
bantime = 1h

Lalu buat filter:

$ sudo nano /etc/fail2ban/filter.d/nginx-404.conf

Dan paste rule di bawah ini:

[Definition]
failregex = ^ - .* "(GET|POST).*" 404
ignoreregex =

5.) Rule Advanced untuk Apache Proxy + PHP-FPM + Node.js & PM2 Manager

Buat file jail.local dengan editor nano seperti di atas dan kemudian pastekan rule berikut ini:

$ nano /etc/fail2ban/jail.local
[DEFAULT]
# Email admin (opsional kalau mau dapat notifikasi)
destemail = [email protected]
sender = [email protected]
mta = sendmail

# Lama ban (detik) atau 30 menit
bantime = 1800
bantime.increment = true
bantime.factor = 2
bantime.formula = bantime * (factor ** (failures / 2))

# Waktu pencatatan percobaan (detik) atau 10 menit
findtime = 600
# Jumlah percobaan gagal sebelum diban
maxretry = 5

# Action default (drop iptables)
backend = systemd
banaction = ufw
action = %(action_)s

[Definition]
allowipv6 = false

# --------- JAILS ---------

[sshd]
enabled = true
port = 59105 ; ganti dengan port SSH custom kamu
logpath = %(sshd_log)s
backend = systemd

[apache-auth]
enabled = true

[apache-badbots]
enabled = true

[apache-noscript]
enabled = true

[apache-overflows]
enabled = true

[apache-nohome]
enabled = true

[apache-botsearch]
enabled = true

# (Opsional) Proteksi DoS/scan sederhana
[apache-fakegooglebot]
enabled = true

[apache-modsecurity]
enabled = false # Aktifkan kalau ada mod_security

[node-4xx-apache]
enabled = true
filter = apache-4xx-hard
logpath = /var/log/apache2/server_access.log
backend = auto
findtime = 600 ; 10 menit
maxretry = 15 ; mis. >15 kesalahan 4xx dlm 10 menit
bantime = 3600 ; ban 1 jam

[node-4xx-apache-ip]
enabled = true
filter = apache-4xx-hard
logpath = /var/log/apache2/server_ip_access.log
backend = auto
findtime = 600
maxretry = 15
bantime = 3600

6.) Restart & Enable Fail2ban Service

Jika config di atas sudah Anda terapkan di sistem Debian/Ubuntu Anda, kemudian jangan lupa untuk mengkatifkan dan restart layanan Fail2ban di server Anda dengan command berikut ini:

$ sudo systemctl enable fail2ban
$ sudo systemctl restart fail2ban

7) Verifikasi Service Fail2ban

Kita dapat memverifikasi layanan status Fail2ban dengan perintah-perintah berikut ini:

# Cek Status global:
$ sudo systemctl status fail2ban
$ sudo fail2ban-client status

# Cek Status Jail SSH:
$ sudo fail2ban-client status sshd

# Lihat Daftar Alamat IP yang Terban:
$ sudo fail2ban-client banned

# Unban Alamat IP Tertentu:
$ sudo fail2ban-client set sshd unbanip 1.2.3.4

KESIMPULAN:

  • Kustom Port SSH yakni 59105 aman dan jika ada upaya brute force maka IP penyerang langsung diban.
  • Nginx Web Server (login HTTP basic, scanning bot, 404 flood) aman.
  • Dengan UFW Integration, dimana IP penyerang otomatis diblokir di tingkat firewall.
Referensi: AI

LEAVE A REPLY

Please enter your comment!
Please enter your name here