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.
Contents
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