๐Ÿ›ก๏ธ Fail2ban: Menjaga Server Saya dari Serangan Brute Force dan Ancaman Lainnya

๐Ÿ›ก๏ธ Fail2ban: Menjaga Server Saya dari Serangan Brute Force dan Ancaman Lainnya

โœจ Pendahuluan

Ketika saya mulai membuka akses SSH, Samba, dan Gitea ke jaringan lokal dan semi-publik, saya sadar betapa pentingnya melindungi service ini dari serangan brute force. Beberapa kali saya melihat log login yang mencurigakan, terutama di SSH. Dari sinilah saya mengenal dan mulai menggunakan Fail2ban.

Fail2ban menjadi salah satu pertahanan paling ringan dan efektif yang pernah saya pasang di server. Dalam artikel ini, saya akan membagikan pengalaman pribadi saya menggunakan Fail2ban: mulai dari konsep dasar, cara kerja, alasan saya menggunakannya, hingga konfigurasi dan tips penting.


๐Ÿ” Apa Itu Fail2ban?

Fail2ban adalah sebuah tool open-source yang memantau log file dari berbagai layanan, seperti SSH, Apache, Nginx, vsftpd, Samba, dan lain-lain. Tujuannya? Mendeteksi upaya login yang mencurigakan dan langsung memblokir IP pelaku dengan iptables atau firewall lain.

Fail2ban bekerja dengan cara:

  1. Memantau log file dari layanan yang diproteksi
  2. Menemukan pola kesalahan login (gagal login)
  3. Jika terdeteksi terlalu banyak gagal login, IP tersebut diblokir sementara atau permanen

Dengan begitu, brute-force attacker akan kehilangan akses hanya dalam beberapa detik.


โ— Kenapa Fail2ban Penting untuk Server Saya?

Dari pengalaman pribadi, saya melihat banyak percobaan login aneh dari IP luarโ€”terutama ke SSH. Meskipun password saya kuat, tetap saja upaya tersebut mengganggu dan membebani log system.

Beberapa alasan saya menganggap Fail2ban penting:

  • ๐Ÿ›‘ Memblokir brute force otomatis
  • ๐Ÿ“‰ Mengurangi beban log dan sistem
  • ๐Ÿง  Memberi saya ketenangan karena tahu ada pertahanan otomatis
  • ๐Ÿ“ฌ Bisa dikonfigurasi untuk mengirim email notifikasi setiap kali ada IP yang diblok

๐Ÿงฉ Layanan yang Saya Lindungi dengan Fail2ban

Saat ini, saya sudah mengaktifkan Fail2ban untuk tiga service utama di salah satu VM saya:

  1. ๐Ÿ” SSH (sshd): Perlindungan wajib. Serangan brute force ke SSH sangat umum.
  2. ๐Ÿ“ Samba (smbd): Saya bagikan file lewat jaringan lokal, dan perlindungan ini penting agar tidak disalahgunakan.
  3. ๐Ÿง‘โ€๐Ÿ’ป Gitea: Source code pribadi saya butuh perlindungan ekstra, dan login form Gitea bisa jadi target brute force.

โš™๏ธ Cara Menginstal dan Mengonfigurasi Fail2ban

1. Instalasi

Untuk Debian/Ubuntu:

sudo apt update && sudo apt install fail2ban -y

Untuk CentOS/RHEL:

sudo dnf install epel-release
sudo dnf install fail2ban

2. Konfigurasi Umum

Salin file konfigurasi default:

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

Edit file jail.local:

sudo nano /etc/fail2ban/jail.local

Contoh konfigurasi:

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 5
bantime = 3600
findtime = 600

[samba]
enabled = true
port = 445
logpath = /var/log/samba/log.smbd
maxretry = 3
bantime = 3600
findtime = 300

[gitea]
enabled = true
port = http,https
filter = gitea-auth
logpath = /var/lib/gitea/log/gitea.log
maxretry = 5
bantime = 7200
Catatan: Untuk gitea, kamu mungkin perlu membuat custom filter di /etc/fail2ban/filter.d/gitea-auth.conf

3. Restart Service

sudo systemctl restart fail2ban

4. Melihat Status

sudo fail2ban-client status
sudo fail2ban-client status sshd

โœ… Kelebihan Fail2ban

  • Ringan dan tidak memakan resource
  • Mudah diinstal dan dikonfigurasi
  • Fleksibel: bisa dibuat custom filter untuk hampir semua layanan
  • Bisa dikombinasikan dengan notifikasi seperti email, ntfy, dsb
  • Open-source dan komunitasnya aktif

โŒ Kekurangan Fail2ban

  • Tidak cocok untuk proteksi DDoS (karena hanya memblok IP, bukan traffic)
  • Tergantung pada keakuratan log: jika format log berubah, filter bisa gagal
  • Terkadang perlu debug regex filter secara manual
  • Tidak ada UI bawaan (semua berbasis CLI dan log)

๐Ÿ”„ Kenapa Saya Memilih Fail2ban

Saya mencoba beberapa pendekatan sebelum mantap menggunakan Fail2ban:

  • Firewall rules statis: terlalu manual
  • Port knocking: ribet kalau digunakan banyak user
  • Fail2ban: cukup sekali konfigurasi, dan langsung bekerja otomatis

Fail2ban menang karena:

  • Bisa jalan di hampir semua distro Linux
  • Bisa digunakan untuk hampir semua service
  • Saya bisa lihat history IP mana saja yang pernah diblok
  • Kombinasi power dan kesederhanaannya sangat pas buat homelab saya

๐ŸŽฏ Kesimpulan

Fail2ban bukan solusi keamanan satu-satunya, tapi untuk saya, ini adalah fondasi pertahanan awal yang sangat efektif. Ia bekerja tanpa ribut, mencegah gangguan dari script kiddies dan brute-force bot yang berkeliaran di internet.

Dengan memblokir IP yang mencurigakan secara otomatis, Fail2ban membuat server saya lebih aman, log lebih bersih, dan saya bisa tidur lebih nyenyak.


๐Ÿ“Œ Keamanan bukan hanya soal firewall atau enkripsi, tapi juga tentang punya penjaga gerbang otomatis yang bisa bertindak cepat. Dan Fail2ban menjalankan peran itu dengan sangat baik di server saya.