Sebagian besar VPS tidak diretas dengan teknik canggih.

Mereka diretas karena dibiarkan terbuka.

Server baru yang langsung online biasanya mulai menerima percobaan login dalam hitungan menit. Bot akan mencoba masuk melalui SSH menggunakan berbagai kombinasi username dan password, terus-menerus, tanpa henti.

Kamu tidak akan melihatnya, tapi itu terjadi di hampir semua server publik.

Jika server masih mengizinkan login password, atau lebih buruk lagi, login root, maka kamu sedang membuka pintu dan berharap tidak ada yang masuk.

Masalahnya bukan kurangnya tools keamanan.
Masalahnya adalah fondasi yang tidak pernah disiapkan.

Kabar baiknya, kamu tidak perlu konfigurasi kompleks untuk menghindari sebagian besar risiko ini.

Beberapa langkah dasar sudah cukup. Dan semuanya bisa dilakukan dalam waktu sekitar 15 menit.


1. Update sistem (jangan mulai dari kondisi lama)

Langkah pertama selalu sama: pastikan sistem dalam kondisi terbaru.

sudo apt update && sudo apt upgrade -y

Ini bukan formalitas.

Banyak vulnerability di Linux sudah diketahui publik jauh sebelum kamu membuat server. Begitu celah tersebut dipublikasikan, bot akan mulai mencari server yang belum di-update.

Artinya:
→ server yang tidak di-update = target mudah

Update memastikan:

  • patch keamanan terbaru terpasang
  • dependency stabil
  • risiko exploit lama berkurang

2. Jangan gunakan root untuk aktivitas harian

Root memiliki akses penuh ke sistem.

Jika akun ini berhasil diakses, tidak ada pembatasan. Semua file, konfigurasi, dan service bisa diubah.

Solusi paling sederhana: jangan gunakan root.

adduser deploy
usermod -aG sudo deploy

Gunakan user ini untuk login dan operasional sehari-hari.

Kenapa ini penting?

Karena security bukan hanya soal mencegah serangan, tapi juga membatasi dampak jika sesuatu terjadi.

Ini konsep dasar yang sering diabaikan.


3. Gunakan SSH key, bukan password

Password adalah titik lemah paling umum di server.

Bot tidak mencoba satu atau dua password. Mereka mencoba ribuan kombinasi secara otomatis, berdasarkan database password yang sudah bocor sebelumnya.

SSH key menghilangkan masalah ini.

Alih-alih password, autentikasi menggunakan pasangan kunci kriptografi. Tanpa private key, login tidak mungkin dilakukan.

Generate key di lokal:

ssh-keygen

Kirim ke server:

ssh-copy-id deploy@ip-server

Setelah ini, login tidak lagi bergantung pada sesuatu yang bisa ditebak.


4. Nonaktifkan login root dan password SSH

Ini adalah perubahan kecil dengan dampak besar.

Edit konfigurasi:

sudo nano /etc/ssh/sshd_config

Ubah:

PermitRootLogin no
PasswordAuthentication no

Restart:

sudo systemctl restart ssh

Efek langsungnya:

  • root tidak bisa diakses langsung
  • brute force password menjadi tidak relevan
  • attack surface berkurang drastis

Satu hal penting: pastikan SSH key sudah bekerja sebelum menonaktifkan password.

Kalau tidak, kamu bisa kehilangan akses ke server sendiri.


5. Aktifkan firewall (batasi apa yang benar-benar perlu)

Tanpa firewall, semua port terbuka.

Masalahnya:

  • banyak service tidak dirancang untuk public access
  • beberapa service bahkan tidak kamu sadari berjalan

Gunakan UFW untuk setup sederhana:

sudo ufw default deny incoming
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

Cek:

sudo ufw status

Dengan ini:

  • hanya SSH, HTTP, dan HTTPS yang terbuka
  • semua port lain ditutup

Ini mengurangi attack surface secara signifikan.


6. Tambahkan Fail2Ban (mengurangi noise dari internet)

Walaupun SSH sudah diamankan, server tetap akan menerima percobaan login.

Fail2Ban bekerja dengan cara sederhana:

  • memonitor log
  • mendeteksi percobaan login berulang
  • memblokir IP tersebut sementara

Install:

sudo apt install fail2ban

Aktifkan:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Fail2Ban bukan solusi utama, tapi layer tambahan yang efektif.


7. Verifikasi (langkah kecil, tapi krusial)

Setelah semua setup selesai, jangan langsung percaya semuanya berjalan dengan benar.

Lakukan pengecekan:

  • Login ulang menggunakan SSH key
  • Pastikan login password gagal
  • Pastikan root tidak bisa login
  • Cek firewall aktif
  • Pastikan aplikasi tetap berjalan

Tanpa verifikasi, kamu hanya mengasumsikan sistem aman.


Kesalahan yang sering terjadi

Beberapa kesalahan umum:

  • menonaktifkan password sebelum SSH key siap
  • lupa membuka port SSH di firewall
  • tetap menggunakan root karena “lebih cepat”
  • tidak pernah update server lagi setelah setup awal

Kesalahan kecil seperti ini sering menjadi penyebab utama masalah besar.


Checklist minimal yang bisa kamu ulang

Gunakan ini setiap kali setup VPS:

  • system update selesai
  • user non-root digunakan
  • SSH key aktif
  • password login dimatikan
  • root login dimatikan
  • firewall aktif
  • Fail2Ban aktif

Ini bukan konfigurasi “perfect security”.

Tapi ini sudah cukup untuk menghindari sebagian besar serangan dasar di internet.


Keamanan server sering terlihat kompleks karena orang langsung melompat ke konfigurasi lanjutan.

Padahal dalam praktiknya, perbedaan antara server yang aman dan yang mudah diretas sering kali hanya terletak pada hal-hal sederhana yang konsisten dilakukan.

Bukan soal seberapa canggih sistemnya, tetapi apakah fondasinya sudah benar.