Stop Brute-Force! Panduan Lengkap Mengamankan SSH dengan Fail2Ban di Linux

Stop Brute-Force! Panduan Lengkap Mengamankan SSH dengan Fail2Ban di Linux

Mengamankan SSH adalah langkah pertama untuk menjaga server Linux dari serangan brute-force. Dengan Fail2Ban, kamu bisa memblokir otomatis IP yang mencoba masuk secara ilegal. Berikut panduan lengkap dari instalasi hingga konfigurasi optimal.


1. Persiapan Server

Pastikan server update dan firewall dasar aktif:

sudo apt update && sudo apt upgrade -y
sudo apt install ufw curl -y

Konfigurasi firewall dasar:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh    # nanti akan diubah jika port custom
sudo ufw enable

2. Instalasi Fail2Ban

Pasang Fail2Ban dan aktifkan otomatis saat boot:

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl status fail2ban

Fail2Ban akan memonitor log login dan memblokir IP yang mencurigakan.


3. Backup dan Konfigurasi Fail2Ban

  1. Jangan ubah file default jail.conf. Buat salinan:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  1. Hapus file lama:
sudo rm /etc/fail2ban/jail.local
  1. Buat file baru:
sudo nano /etc/fail2ban/jail.local
  • Paste konfigurasi baru
  • Simpan (Ctrl+O) dan keluar (Ctrl+X)
  1. Set ulang hak akses (penting!):
sudo chown root:root /etc/fail2ban/jail.local
sudo chmod 644 /etc/fail2ban/jail.local

Cari bagian [sshd] dan ubah menjadi:

[sshd]
enabled  = true
port     = 2222                   ; ganti sesuai port SSH
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 2                       ; Hanya 2 percobaan gagal
bantime  = 604800                  ; Blokir 7 hari (1 minggu)
findtime = 300                      ; Hitung maxretry dalam 5 menit
backend  = systemd
# ignoreip = 127.0.0.1/8 203.0.113.50   ; whitelist IP aman

# OPTIONAL ==================
#destemail = admin@domain.com
#sender = fail2ban@domain.com
#action = %(action_mwl)s              ; blokir + email + log

Setelah kode baru simpan, pastikan:

sudo systemctl restart fail2ban
sudo systemctl status fail2ban # cek apakah aktif

4. Konfigurasi SSH Lebih Aman

Edit file SSH:

sudo nano /etc/ssh/sshd_config

Ubah atau tambahkan:

Port 2222                  # port custom, bukan default 22
PermitRootLogin no          # larang login root
PasswordAuthentication no   # pakai SSH key saja
PubkeyAuthentication yes

Restart SSH dan update firewall:

sudo systemctl restart ssh
sudo ufw allow 2222/tcp
sudo ufw delete allow ssh   # tutup port default

5. Restart

sudo systemctl restart fail2ban

Kamu bisa melihat IP yang diblokir atau percobaan login yang gagal.


6. Tips Tambahan untuk Keamanan SSH

  1. Gunakan SSH key untuk login, jangan pakai password.
  2. Ganti port default SSH agar serangan otomatis berkurang.
  3. Whitelist IP pribadi agar tidak terblokir.
  4. Pantau log Fail2Ban:
sudo tail -f /var/log/fail2ban.log

Pantau hasil:

sudo fail2ban-client status sshd

Hasilnya:

Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| - Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd - Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:

Dengan langkah-langkah ini, server Linux kamu jauh lebih aman dari brute-force dan serangan login ilegal. Mengaktifkan Fail2Ban + firewall + SSH key-based login adalah kombinasi yang sangat efektif.

FAQs?

Masalah yang sering muncul setelah proses install di vps linux;

Cara memperbaiki

  1. Cek timezone sistem:
timedatectl
  • Pastikan Time zone sudah benar dan NTP synchronized: yes.
  1. Sinkronkan waktu jika perlu:
sudo timedatectl set-timezone Asia/Jakarta   # ganti sesuai lokasi
sudo timedatectl set-ntp true
  1. Restart Fail2Ban agar membaca log baru:

Bersihkan log lama (opsional) Supaya warning timezone hilang:

sudo journalctl --vacuum-time=1h

Ini hapus log systemd lebih dari 1 jam, jadi Fail2Ban mulai fresh

sudo systemctl restart fail2ban