Lewati ke konten utama
  1. Server/

Hardening SSH: Key Auth, Fail2ban, dan Port Non-Standard

Penulis
GezyTech
Menulis tentang AI, Linux, Server, Docker, dan teknologi lainnya.

TLDR
#

SSH yang dibiarkan default adalah pintu masuk favorit peretas. Tiga langkah penting untuk mengamankannya: matikan login password dan wajibkan kunci SSH, pasang fail2ban untuk memblokir IP yang mencoba-coba, dan pindahkan port dari 22 ke port non-standar untuk mengurangi noise serangan otomatis.


Pendahuluan
#

Begitu server publik aktif, log SSH-nya biasanya langsung dibombardir percobaan login otomatis dari bot. Serangan ini disebut brute force — mencoba ribuan kombinasi username/password secara otomatis.

Kabar baiknya, SSH bisa dibuat sangat aman dengan konfigurasi yang tepat. Artikel ini memandu tiga lapis pengamanan paling efektif.


Lapis 1: Otentikasi Kunci SSH
#

Membuat pasangan kunci di komputer lokal
#

ssh-keygen -t ed25519 -C "email@contoh.com"

Hasilnya dua file:

  • ~/.ssh/id_ed25519kunci privat (jangan pernah dibagikan).
  • ~/.ssh/id_ed25519.pubkunci publik (boleh dipasang di server).

Menyalin kunci publik ke server
#

ssh-copy-id user@server

atau manual:

cat ~/.ssh/id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Uji login tanpa password
#

ssh user@server

Jika masuk tanpa diminta password, kunci sudah bekerja.


Lapis 2: Konfigurasi sshd
#

Buka file konfigurasi:

sudo nano /etc/ssh/sshd_config

Atur baris berikut:

# Matikan login root via password
PermitRootLogin prohibit-password

# Matikan login password, wajibkan kunci
PasswordAuthentication no

# Matikan login sebagai root (opsional, lebih aman)
# PermirRootLogin no

# Batasi jumlah percobaan login
MaxAuthTries 3

# Nonaktifkan empty password
PermitEmptyPasswords no

Setelah yakin login kunci bekerja, restart SSH:

sudo systemctl restart ssh

Peringatan: jangan tutup sesi SSH saat ini sebelum memastikan kunci berfungsi. Buka sesi baru untuk menguji, baru tutup yang lama.


Lapis 3: Fail2ban
#

Fail2ban memantau log dan otomatis memblokir IP yang gagal login berkali-kali.

Instalasi
#

sudo apt update
sudo apt install -y fail2ban

Konfigurasi
#

Buat file konfigurasi lokal:

sudo nano /etc/fail2ban/jail.local

Isi:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = 22
  • bantime — lama blokir (detik), 3600 = 1 jam.
  • findtime — jendela waktu penghitungan kegagalan.
  • maxretry — jumlah kegagalan sebelum diblokir.

Aktifkan dan cek:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo fail2ban-client status sshd

Melihat IP yang diblokir
#

sudo fail2ban-client status sshd

Membuka blokir IP tertentu
#

sudo fail2ban-client set sshd unbanip 203.0.113.10

Lapis 4: Port Non-Standard
#

Memindahkan SSH dari port 22 ke port lain mengurangi serangan otomatis secara drastis (bot biasanya hanya memindai port 22).

Edit:

sudo nano /etc/ssh/sshd_config

Ubah:

Port 2222

Perbarui fail2ban:

[sshd]
enabled = true
port = 2222

Restart layanan:

sudo systemctl restart ssh
sudo systemctl restart fail2ban

Login berikutnya:

ssh -p 2222 user@server

Catatan: sesuaikan firewall. Jika memakai UFW, izinkan port baru:

sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp

Rangkuman Lapisan Keamanan
#

Lapis Fungsi Risiko jika dilewati
Kunci SSH Otentikasi tanpa password Login password bisa ditebak
PasswordAuthentication no Menutup brute force password Serangan brute force
fail2ban Blokir IP mencurigakan Bot bebas mencoba terus
Port non-standar Kurangi noise serangan Port 22 terus diserang

Keamanan Tambahan
#

  • Nonaktifkan root login sepenuhnya (PermitRootLogin no).
  • Gunakan user biasa dengan sudo untuk semua pekerjaan.
  • Perbarui sistem rutin (sudo apt update && sudo apt upgrade).
  • Pantau log auth: sudo tail -f /var/log/auth.log.
  • Pertimbangkan 2FA untuk akses yang sangat sensitif.

Ringkasan
#

# 1. Buat kunci dan salin ke server
ssh-keygen -t ed25519
ssh-copy-id user@server

# 2. Matikan password login di sshd_config
PasswordAuthentication no

# 3. Pasang fail2ban
sudo apt install -y fail2ban

# 4. Pindah port
Port 2222

Dokumentasi: man sshd_config