Server dengan layanan SSH yang terbuka ke internet bisa menerima ribuan percobaan login gagal setiap hari. Bukan dari satu orang, tetapi dari bot otomatis yang mencoba kata sandi umum terus-menerus, 24 jam. Kebisingan ini memenuhi log, membebani layanan, dan lambat laun bisa menjadi celah bila salah satu akun memakai kata sandi yang lemah.

Fail2ban menjawab masalah itu dengan cara sederhana — membaca log server, mendeteksi pola percobaan login gagal yang berulang, lalu memblokir alamat IP yang bersangkutan melalui firewall. Artikel ini membahas pemasangan, konfigurasi dasar, dan penyetelan agar perkakas ini berguna tanpa mengganggu pengguna sah. Pembahasan berorientasi pada pertahanan server milik sendiri atau yang Anda kelola secara sah, karena prinsip pertama keamanan adalah melindungi aset yang Anda punya wewenang untuk mengelola.

Cara Kerja Fail2ban

Fail2ban bekerja sebagai proses yang memantau berkas log, misalnya log otentikasi SSH. Setiap kali ada percobaan login gagal, Fail2ban menghitung kejadian itu per alamat IP. Bila jumlah kegagalan melewati batas yang Anda tetapkan dalam jangka waktu tertentu, alamat IP itu ditambahkan ke aturan firewall — dengan begitu koneksi dari sana langsung ditolak.

Dua konsep penting perlu dipahami sebelum memasang. Pertama adalah maxretry, yaitu jumlah kegagalan yang diizinkan sebelum pemblokiran. Kedua adalah findtime dan bantime — jendela waktu di mana kegagalan dihitung, dan durasi alamat IP tetap diblokir. Kombinasi ketiganya menentukan apakah Fail2ban terasa tegas atau justru mengganggu.

Fail2ban tidak mengubah cara kerja SSH itu sendiri. Ia hanya membaca log yang sudah ditulis oleh sistem dan menggerakkan firewall. Karena itu, Fail2ban juga bisa dipakai untuk layanan lain seperti server FTP atau web dengan pola pelanggaran serupa — selama ada log yang bisa dibaca dan pola yang bisa dicocokkan.

Pemasangan dan Konfigurasi Dasar

Pada distribusi turunan Debian atau Ubuntu, pasang lewat manajer paket:

sudo apt update
sudo apt install fail2ban

Layanan biasanya langsung berjalan dan aktif saat boot. Cek statusnya:

sudo systemctl status fail2ban

Konfigurasi utama ada di /etc/fail2ban/jail.conf, tetapi berkas itu sebaiknya tidak diubah langsung — pembaruan paket akan menimpanya. Buat salinan lokal dengan nama jail.local, karena Fail2ban membaca berkas itu lebih dulu dan nilainya menimpa jail.conf:

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

Isi minimal untuk mengaktifkan perlindungan SSH:

[sshd]
enabled  = true
port     = ssh
maxretry = 5
findtime = 10m
bantime  = 1h

Artinya: lima kali gagal login dalam sepuluh menit membuat alamat IP diblokir selama satu jam. Simpan, lalu muat ulang layanan:

sudo systemctl restart fail2ban

Menyetel Aturan agar Tidak Memblokir Pengguna Sah

Ini bagian yang paling sering dilewati. Aturan default terasa aman untuk server pribadi, tetapi perlu disetel agar tidak ikut memblokir pengguna sah yang salah ketik kata sandi — misalnya saat mengetik dari ponsel, keyboard yang tidak biasa, atau koneksi yang terputus di tengah sesi.

Tambahkan alamat atau jaringan sendiri ke daftar pengecualian agar tidak pernah diblokir:

[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.1.0/24

Ganti 192.168.1.0/24 dengan jaringan lokal Anda, atau alamat IP kantor yang tetap. Bila Anda mengelola server dari rumah dengan alamat IP dinamis, pertimbangkan untuk menaikkan maxretry daripada mengabaikan jaringan besar.

Durasi bantime juga perlu dipikirkan. Satu jam cukup untuk menghentikan bot, tetapi keterlaluan untuk manusia. Untuk lingkungan dengan banyak pengguna sah, pendekatan bertahap lebih adil — tambahkan bantime.increment = true agar pelanggar berulang mendapat blokir lebih lama, sementara kesalahan pertama hanya diperingatkan singkat. Tes konfigurasi setiap kali mengubah berkas:

sudo fail2ban-client reload
sudo fail2ban-client status sshd

Perintah terakhir menampilkan berapa IP sedang diblokir dan seberapa sering aturan itu bekerja — indikator cepat untuk menilai apakah setelan Anda masuk akal.

Memantau Efektivitas dan Menjaga Log Tetap Bersih

Setelah berjalan beberapa hari, Fail2ban terasa langsung pada salah satu janjinya: log server kembali bisa dibaca. Alih-alih ribuan baris kegagalan otentikasi, Anda melihat kejadian yang benar-benar perlu perhatian.

Beberapa perintah untuk pemantauan rutin:

sudo fail2ban-client status                 # status semua jail aktif
sudo fail2ban-client status sshd            # detail jail SSH
sudo tail -f /var/log/fail2ban.log        # log aktivitas fail2ban

Dari log itu Anda bisa membaca pola — jam sibuk serangan, negara asal IP yang paling sering muncul, dan apakah ada IP yang tampak seperti pengguna sah yang salah blokir. Temuan ini bisa menjadi dasar penyetelan berikutnya: menaikkan maxretry, memperpanjang bantime, atau menambah ignoreip.

Jangan menjadikan jumlah pemblokiran sebagai tujuan. Angka besar justru bisa menandakan permukaan serangan yang luas — pertimbangkan langkah komplemen seperti mengubah port SSH, membatasi login ke pengguna tertentu, atau memakai AllowUsers di konfigurasi SSH untuk mempersempit siapa saja yang boleh masuk.

Fail2ban sebagai Pelengkap, Bukan Pengganti

Poin terpenting perlu ditegaskan: Fail2ban melengkapi, bukan menggantikan, otentikasi kunci SSH. Blokir IP hanya menghambat satu sumber percobaan — bot cukup pindah ke alamat lain. Otentikasi kunci menutup pintu sejak awal, karena tanpa kunci privat yang benar, tidak ada percobaan kata sandi yang bisa berhasil sama sekali.

Susun lapisannya: aktifkan login kunci dan matikan otentikasi kata sandi di SSH, lalu pasang Fail2ban untuk meredam kebisingan dan menangkap percobaan yang tersisa. Dengan urutan ini, Fail2ban bekerja pada tingkat keparahan yang rendah — lebih ke arah kebersihan log dan pengurangan beban — sementara garis pertahanan utama tetap pada kunci.

Untuk memperdalam pemahaman tentang pertahanan server dan perkakas pemantauan log, referensi seperti kalilinux.net atau kalilinux.info bisa dijadikan bahan bacaan lanjutan, terutama bagian yang membahas hardening layanan. Selalu terapkan materi tersebut hanya pada sistem milik sendiri atau lingkungan uji yang Anda diizinkan untuk kelola.

Penutup

Fail2ban adalah pertahanan murah dengan hasil terasa cepat — dalam hitungan menit setelah dipasang, log SSH yang sebelumnya penuh percobaan login otomatis kembali tenang. Kerjanya sederhana: membaca log, menghitung kegagalan, memblokir IP yang berlebihan lewat firewall. Setel aturannya dengan hati-hati agar pengguna sah yang salah ketik tidak ikut menjadi korban, dan pasang ia sebagai pelengkap dari otentikasi kunci SSH, bukan penggantinya. Mulailah dari setelan default, pantau log, lalu sesuaikan berdasarkan pola yang benar-benar Anda lihat di server sendiri.