Daftar Isi
1. Update sistem (jangan mulai dari kondisi lama)
2. Jangan gunakan root untuk aktivitas harian
3. Gunakan SSH key, bukan password
4. Nonaktifkan login root dan password SSH
5. Aktifkan firewall (batasi apa yang benar-benar perlu)
6. Tambahkan Fail2Ban (mengurangi noise dari internet)
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.