Kembali ke Blog
Server15 Januari 20266 Menit Baca

Hardening Dasar Server Linux: Mengganti Port SSH untuk Mengurangi Brute Force

Hardening Dasar Server Linux: Mengganti Port SSH untuk Mengurangi Brute Force

Pendahuluan

Kalau kamu baru saja deploy server Linux (VPS atau cloud instance), ada satu fakta pahit yang hampir pasti terjadi: port SSH 22 akan langsung diserang brute force. Bahkan dalam hitungan menit setelah server online, bot otomatis dari berbagai penjuru dunia sudah mulai coba login pakai username-password random.

Kenapa bisa begitu? Karena port 22 adalah default SSH, dan bot attacker hidup dari asumsi default. Mereka tidak peduli server kamu penting atau tidak—yang penting bisa ditembus.

Salah satu langkah hardening paling dasar (dan murah secara effort) adalah mengganti port SSH. Ini bukan solusi absolut, tapi sangat efektif untuk mengurangi noise serangan dan memperkecil permukaan attack.


Fase Pengintaian: Port Scanning dengan Nmap

Sebelum ngoprek server, kita buktikan dulu satu hal: port 22 memang kelihatan dari luar.

Dari mesin lokal kamu (bukan dari server itu sendiri), jalankan:

nmap -p 22 <IP_SERVER>

Contoh:

nmap -p 22 103.xxx.xxx.xxx

Kalau hasilnya seperti ini:

22/tcp open  ssh

Artinya jelas: SSH kamu terbuka lebar di port default.

Hasil scanning Nmap port 22 terbuka

Ini adalah informasi yang sama persis dengan yang dilihat attacker. Sekarang kita masuk ke fase pengamanan.


Instalasi Firewall (UFW)

UFW (Uncomplicated Firewall) adalah firewall favorit banyak sysadmin Linux karena simple, readable, dan nggak ribet.

Install UFW

Di Ubuntu / Debian:

sudo apt update
sudo apt install ufw -y

Cek status awal:

sudo ufw status

Biasanya masih inactive.


Skenario Testing: SSH Sebelum & Sesudah UFW

Sebelum UFW Aktif

Pastikan kamu bisa SSH normal:

ssh user@<IP_SERVER>

Kalau bisa login, lanjut.

Aktifkan UFW (Masih di Port 22)

Izinkan SSH default dulu:

sudo ufw allow ssh

Atau eksplisit:

sudo ufw allow 22/tcp

Aktifkan UFW:

sudo ufw enable

Cek ulang:

sudo ufw status

Sekarang coba SSH lagi dari lokal. Harusnya masih bisa masuk.

Kalau di tahap ini kamu sudah terkunci, berarti ada yang salah. Jangan lanjut sebelum beres.


Mengganti Port SSH

Sekarang bagian inti dari hardening.

Edit Konfigurasi SSH

Buka file konfigurasi SSH:

sudo nano /etc/ssh/sshd_config

Cari baris:

#Port 22

Ubah jadi misalnya:

Port 2222

Tips:

  • Hindari port umum (22, 80, 443)
  • Gunakan port >1024
  • Jangan pakai port random yang nanti kamu sendiri lupa

PENTING: Allow Port Baru di UFW

Ini bagian paling krusial.

Sebelum restart SSH, WAJIB izinkan port baru di UFW:

sudo ufw allow 2222/tcp

Cek:

sudo ufw status

Pastikan 22 dan 2222 sama-sama masih allowed untuk sementara.

Kalau kamu restart SSH tanpa allow port baru, kemungkinan besar:

kamu akan terkunci dari server (lockout)


Restart Service SSH

Setelah semuanya siap:

sudo systemctl restart ssh

Atau:

sudo systemctl restart sshd

Sekarang, jangan tutup session SSH lama dulu.

Dari terminal baru, coba login:

ssh -p 2222 user@<IP_SERVER>

Kalau berhasil:

  • Kamu aman
  • Baru hapus rule port 22
sudo ufw delete allow 22/tcp

Proteksi Tambahan: Fail2Ban sebagai Satpam Otomatis

Meskipun kamu sudah mengganti port SSH, service SSH tetap bisa terdeteksi oleh Nmap jika dilakukan scanning yang cukup agresif. Artinya, brute force masih mungkin terjadi—hanya saja jumlahnya jauh berkurang.

Di sinilah Fail2Ban berperan sebagai satpam otomatis.

Secara konsep, Fail2Ban bekerja seperti ini:

  • Memantau log service (contohnya /var/log/auth.log)
  • Mendeteksi pola gagal login berulang
  • Jika melewati ambang batas → IP langsung di-ban via firewall (iptables/UFW)

Dengan kata lain, bot boleh coba-coba, tapi cuma sebentar.


Instalasi Fail2Ban

sudo apt install fail2ban -y

Setelah terinstal, service biasanya langsung aktif:

sudo systemctl status fail2ban

Konfigurasi Dasar: jail.local

Fail2Ban tidak disarankan diedit langsung dari jail.conf. Best practice-nya adalah membuat jail.local.

sudo nano /etc/fail2ban/jail.local

Contoh konfigurasi minimal untuk SSH di port baru:

[sshd]
enabled  = true
port     = 2222
logpath  = /var/log/auth.log
maxretry = 5
findtime = 10m
bantime  = 1h

Penjelasan singkat:

  • maxretry: maksimal gagal login
  • findtime: rentang waktu percobaan
  • bantime: durasi IP diblokir

Artinya: 5 kali gagal login dalam 10 menit → IP di-ban 1 jam.

Restart Fail2Ban:

sudo systemctl restart fail2ban

Simulasi Kasus: Ada yang Maksa Login SSH

Misalnya ada attacker yang mencoba brute force ke server kamu di port 2222.

Di log SSH (/var/log/auth.log), kamu akan melihat entri seperti:

Jan 15 13:02:41 server sshd[1823]: Failed password for invalid user admin from 185.225.xxx.xxx port 53122 ssh2
Jan 15 13:02:44 server sshd[1823]: Failed password for invalid user root from 185.225.xxx.xxx port 53122 ssh2
Jan 15 13:02:47 server sshd[1823]: Failed password for invalid user test from 185.225.xxx.xxx port 53122 ssh2

Fail2Ban membaca pola ini.

Setelah melewati batas maxretry, log Fail2Ban (/var/log/fail2ban.log) akan mencatat:

2026-01-15 13:02:49,112 fail2ban.actions        [1823]: NOTICE  [sshd] Ban 185.225.xxx.xxx

Artinya:

  • IP attacker sudah resmi diblokir
  • Percobaan login berikutnya langsung mental

Cek Status & IP yang Terkena Ban

Untuk melihat status jail SSH:

sudo fail2ban-client status sshd

Output biasanya seperti:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 7
|  `- File list: /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned: 3
   `- Banned IP list: 185.225.xxx.xxx

Kalau perlu membuka blokir manual:

sudo fail2ban-client set sshd unbanip 185.225.xxx.xxx

Catatan Penting

Fail2Ban bukan pengganti firewall atau SSH key dan Fail2Ban bekerja paling efektif jika dikombinasikan dengan SSH key-based authentication, Disable login root dan Rate limiting firewall.

Namun untuk level hardening dasar, Fail2Ban sudah sangat worth it.

Penutup

Hardening server Linux tidak selalu harus dimulai dari konfigurasi yang rumit atau mahal. Mengganti port SSH, mengaktifkan firewall, dan menambahkan Fail2Ban sudah cukup untuk menyingkirkan mayoritas serangan otomatis yang beredar di internet. Dengan langkah-langkah dasar ini, kamu mengubah server dari target empuk menjadi sistem yang lebih disiplin, lebih tenang log-nya, dan lebih aman untuk dikembangkan ke tahap security berikutnya. Ingat, keamanan adalah proses berkelanjutan—mulai dari dasar yang benar adalah keputusan paling rasional.


Referensi

Berikut ini adalah beberapa dokumen resmi dan sumber yang berguna jika kamu ingin mempelajari lebih lanjut: