Cara Mengamankan Server Linux dari Serangan SSH Brute Force dengan Fail2Ban

Ketika Anda memiliki sebuah server Linux baik itu untuk website, aplikasi, atau layanan internal salah satu pintu utama untuk mengaksesnya adalah SSH (Secure Shell). SSH digunakan oleh administrator untuk masuk ke server secara jarak jauh dengan aman, melakukan konfigurasi, atau memindahkan file.

Namun, karena SSH adalah akses langsung ke sistem, port ini sering menjadi sasaran utama para penyerang. Mereka menjalankan skrip otomatis yang disebut bot brute force, yang mencoba login ke SSH ribuan kali menggunakan kombinasi username dan password acak. Tujuannya hanya satu: menebak kredensial yang benar dan mengambil alih server Anda.

Serangan semacam ini bisa terjadi kapan saja, bahkan pada server baru yang baru saja online beberapa menit. Contohnya, jika Anda membuka port SSH ke publik (biasanya port 22), maka dalam hitungan jam log server Anda bisa berisi ribuan percobaan login gagal dari IP yang berbeda-beda di seluruh dunia.

Dampak dari serangan brute force SSH antara lain:

  • Server menjadi lambat karena banyaknya percobaan login,
  • File log menjadi penuh dengan data tidak penting,
  • Risiko kebocoran akses meningkat jika password lemah,
  • Dan yang paling berbahaya, penyerang bisa mendapatkan akses penuh ke sistem Anda.

Untuk mencegah hal itu, Anda tidak harus menutup akses SSH sepenuhnya. Cukup tambahkan lapisan perlindungan otomatis agar server bisa membatasi dan memblokir IP yang mencurigakan di sinilah peran Fail2Ban menjadi sangat penting.

Apa Itu Fail2Ban?

Fail2Ban adalah alat keamanan open-source berbasis Python yang dirancang untuk melindungi server dari percobaan login berulang.
Fail2Ban bekerja dengan cara:

  • Memantau file log sistem, seperti /var/log/auth.log,
  • Mendeteksi IP yang melakukan percobaan login gagal berulang,
  • Menambahkan aturan firewall otomatis untuk memblokir IP tersebut sementara waktu,
  • Dan setelah waktu tertentu, blokir akan dicabut secara otomatis.

Dengan cara ini, Anda tidak perlu lagi memantau log atau memblokir IP secara manual Fail2Ban akan melakukannya untuk Anda secara otomatis dan real-time.

Langkah 1: Persiapan Sebelum Instalasi

Sebelum mulai memasang Fail2Ban, pastikan beberapa hal berikut:

  1. Sistem dalam keadaan up to date
    sudo apt update && sudo apt upgrade -y
  2. Anda memiliki akses root atau sudo.
  3. File log SSH aktif di /var/log/auth.log.
  4. Firewall seperti UFW atau iptables sudah terpasang.
    jika UFW dan ipatbles belum terpasang, untuk caranya bisa klik ini.

Langkah 2: Instalasi Fail2Ban

Instal Fail2Ban dengan perintah sederhana:

sudo apt install fail2ban -y

Setelah instalasi selesai, Fail2Ban sudah aktif, tetapi masih menggunakan konfigurasi default.
Agar proteksi lebih optimal, kita akan melakukan pengaturan manual.


Langkah 3: Konfigurasi Fail2Ban

a. Buat file konfigurasi lokal

Salin file konfigurasi utama agar perubahan Anda tidak hilang saat update:

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

Lalu buka file tersebut:

sudo nano /etc/fail2ban/jail.local

b. Atur pengaturan umum

Pada bagian [DEFAULT], ubah menjadi seperti ini:

[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.1.0/24
bantime  = 1h
findtime = 10m
maxretry = 3
backend  = systemd

Penjelasan singkat:

  • ignoreip → Daftar IP yang tidak akan diblokir (misalnya IP kantor atau rumah).
  • bantime → Lama waktu IP diblokir (misalnya 1 jam).
  • findtime → Jangka waktu penghitungan percobaan gagal (misalnya 10 menit).
  • maxretry → Jumlah percobaan gagal sebelum IP diblokir.

c. Aktifkan proteksi SSH

Gulir ke bawah dan pastikan bagian [sshd] aktif, seperti ini:

[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = %(sshd_log)s
maxretry = 4
findtime = 5m
bantime = 1h
Catatan:
Jika Anda menggunakan port SSH selain 22, ubah bagian port sesuai dengan port yang Anda gunakan.

Langkah 4: Menjalankan Fail2Ban

Setelah konfigurasi selesai, jalankan layanan Fail2Ban:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Cek statusnya:

sudo systemctl status fail2ban

Jika berjalan dengan baik, Fail2Ban sudah aktif melindungi server Anda.

Langkah 5: Mengecek Status Perlindungan SSH

Untuk melihat layanan yang dipantau Fail2Ban:

sudo fail2ban-client status

Untuk melihat detail perlindungan SSH:

sudo fail2ban-client status sshd

Anda akan melihat informasi seperti:

  • Jumlah percobaan login gagal,
  • IP yang diblokir,
  • Lama waktu blokir aktif.

Langkah 6: Menguji Fail2Ban

Untuk memastikan Fail2Ban bekerja dengan baik :

1. Gunakan SSH key sebagai ganti password.

2. Matikan login root dengan mengedit file:

sudo nano /etc/ssh/sshd_config

3. Ubah port SSH ke port non-standar, misalnya 2222.

4. Aktifkan firewall UFW dan batasi akses:

sudo ufw allow 2222/tcp
sudo ufw enable

5. Lakukan pembaruan sistem secara berkala untuk menutup celah keamanan.

Kesimpulan

Serangan brute force terhadap port SSH bisa terjadi kapan saja, bahkan tanpa disadari.
Namun, dengan memasang Fail2Ban, Anda memberikan “penjaga otomatis” bagi server yang siap memblokir siapa pun yang mencoba masuk tanpa izin.

Fail2Ban akan:

  • Mendeteksi pola login mencurigakan,
  • Memblokir IP berbahaya secara otomatis,
  • Dan menjaga akses SSH tetap aman tanpa campur tangan manual.

Leave a Reply

Your email address will not be published. Required fields are marked *