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
- Jangan ubah file default
jail.conf. Buat salinan:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Hapus file lama:
sudo rm /etc/fail2ban/jail.local
- Buat file baru:
sudo nano /etc/fail2ban/jail.local
- Paste konfigurasi baru
- Simpan (
Ctrl+O) dan keluar (Ctrl+X)
- 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
- Gunakan SSH key untuk login, jangan pakai password.
- Ganti port default SSH agar serangan otomatis berkurang.
- Whitelist IP pribadi agar tidak terblokir.
- 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
- Cek timezone sistem:
timedatectl
- Pastikan
Time zonesudah benar danNTP synchronized: yes.
- Sinkronkan waktu jika perlu:
sudo timedatectl set-timezone Asia/Jakarta # ganti sesuai lokasi
sudo timedatectl set-ntp true
- 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