Semua Panduan VPSHosting & cPanelTutorial LinuxDocker & DeployWordPressDomain & DNSKeamanan ServerVPS Windows & Forex
VPSHosting.ID›Cara Mengamankan VPS Linux di 2026: fail2ban, UF
Keamanan Server

Cara Mengamankan VPS Linux di 2026: fail2ban, UFW, Backup

✍️ Andi Wijaya 📅 2 November 2026 ⏱️ 7 mnt baca 👁️ 2×
Cara Mengamankan VPS Linux di 2026: fail2ban, UFW, Backup

Banyak pemula mengira server mereka aman karena "belum ada yang kenal". Kenyataannya terbalik: VPS yang baru menyala biasanya sudah dicoba login oleh bot dalam hitungan menit. Mereka tidak peduli siapa Anda. Mereka hanya menyisir alamat IP satu per satu, mencoba kombinasi root dan kata sandi umum.

Kabar baiknya, sebagian besar serangan itu murahan dan bisa dihentikan dengan beberapa langkah dasar. Artikel ini disusun sebagai checklist per fase. Kerjakan berurutan, centang satu per satu, dan Anda akan punya server yang jauh lebih sulit ditembus. Contoh perintah memakai Ubuntu/Debian, yang paling umum dipakai di VPS dengan server di Jakarta.

Fase 1: Persiapan sebelum mengubah apa pun

Kesalahan konfigurasi keamanan bisa mengunci Anda sendiri di luar server. Karena itu, siapkan jaring pengaman dulu.

  • Buka dua sesi SSH sekaligus. Satu untuk bekerja, satu lagi tetap terbuka sebagai cadangan jika konfigurasi baru ternyata salah.
  • Pastikan Anda tahu cara masuk lewat konsol/VNC di panel my.vpshosting.id. Ini jalan darurat saat SSH tidak bisa diakses.
  • Catat alamat IP publik Anda. Nanti berguna untuk daftar pengecualian di fail2ban.
  • Jalankan pembaruan awal: sudo apt update && sudo apt upgrade -y, lalu reboot bila kernel ikut diperbarui.
  • Ambil snapshot atau backup awal dari panel sebelum mulai mengubah konfigurasi.

Fase 2: Kunci pintu utama (akun dan SSH)

Analogikan SSH sebagai pintu depan rumah. Login root dengan kata sandi ibarat pintu dengan kunci yang bentuknya sudah diketahui semua orang.

  • Buat pengguna biasa dan beri akses sudo.
  • Buat SSH key di komputer Anda, lalu salin ke server.
  • Uji login memakai key di sesi baru sebelum menonaktifkan kata sandi.
  • Matikan login root dan login kata sandi.
  • Opsional: pindahkan port SSH. Ini bukan perlindungan sejati, tetapi mengurangi kebisingan log.
# Di server: buat pengguna baru dan beri hak sudo
adduser deploy
usermod -aG sudo deploy

# Di komputer lokal: buat key dan kirim ke server
ssh-keygen -t ed25519 -C "laptop-kerja"
ssh-copy-id deploy@IP_SERVER

Setelah login dengan key berhasil, edit /etc/ssh/sshd_config:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
# Cek sintaks dulu, baru muat ulang. Jangan tutup sesi lama!
sudo sshd -t && sudo systemctl reload ssh

Buka terminal baru dan coba login. Jika berhasil, barulah sesi lama boleh ditutup.

Fase 3: Pasang pagar dengan UFW

Server yang membuka semua port sama seperti rumah dengan semua jendela terbuka. UFW (Uncomplicated Firewall) membuat aturan menjadi sederhana: tolak semuanya, lalu izinkan yang memang perlu.

  • Atur kebijakan default: tolak semua koneksi masuk, izinkan semua keluar.
  • Izinkan SSH lebih dulu sebelum mengaktifkan UFW. Urutan ini menyelamatkan Anda dari terkunci.
  • Buka hanya port layanan yang dipakai, misalnya 80 dan 443 untuk web.
  • Jangan membuka port database (3306, 5432) ke publik. Akses lewat localhost atau terowongan SSH.
  • Tinjau aturan dengan sudo ufw status numbered dan hapus yang tidak dipakai.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

Satu jebakan yang sering menjebak pengguna Docker: container yang dipublikasikan dengan -p 8080:80 dapat melewati aturan UFW karena Docker menulis aturan iptables sendiri. Jika aplikasi hanya perlu diakses lewat reverse proxy, ikat ke localhost: -p 127.0.0.1:8080:80.

Jika Anda menjalankan otomasi di vps n8n, prinsip yang sama berlaku. Biarkan n8n hanya didengarkan oleh reverse proxy dengan HTTPS, bukan terbuka langsung di port 5678 ke seluruh internet.

Fase 4: Pasang penjaga dengan fail2ban

UFW menentukan siapa boleh lewat pintu mana. fail2ban bertugas seperti satpam yang mencatat siapa terus-menerus mengetuk pintu dengan kunci salah, lalu melarangnya masuk sementara waktu. Ia membaca log dan memblokir IP yang gagal login berulang kali.

  • Pasang paket fail2ban.
  • Jangan edit jail.conf. Buat jail.local agar pengaturan tidak tertimpa saat update.
  • Aktifkan jail untuk sshd dengan batas percobaan yang wajar.
  • Masukkan IP rumah/kantor Anda ke ignoreip supaya tidak memblokir diri sendiri.
  • Pantau IP yang terblokir secara berkala.
sudo apt install fail2ban -y
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
# IP yang tidak pernah diblokir (ganti dengan IP Anda)
ignoreip = 127.0.0.1/8 IP_ANDA
bantime  = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

Pada server publik yang aktif, status sshd sering menunjukkan puluhan IP terblokir dalam beberapa hari. Itu normal, dan itu bukti alat ini bekerja. Bila ingin lebih tegas, gunakan bantime = 24h untuk pelanggar berulang.

Fase 5: Aktifkan update otomatis

Celah keamanan yang sudah punya tambalan tetapi belum dipasang adalah pintu masuk favorit penyerang. Masalahnya, siapa yang ingat menjalankan apt upgrade tiap minggu?

  • Pasang unattended-upgrades agar tambalan keamanan terpasang sendiri.
  • Batasi pada pembaruan keamanan saja, bukan semua paket, supaya aplikasi tidak rusak karena perubahan versi besar.
  • Aktifkan reboot otomatis di jam sepi hanya jika layanan Anda sanggup mati beberapa menit.
  • Cek log di /var/log/unattended-upgrades/ sebulan sekali.
  • Tetap perbarui manual aplikasi di luar repositori apt, misalnya WordPress, image Docker, dan paket npm atau composer.
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

# Simulasi untuk memastikan konfigurasi berjalan
sudo unattended-upgrade --dry-run --debug

Untuk reboot otomatis, ubah di /etc/apt/apt.conf.d/50unattended-upgrades: Unattended-Upgrade::Automatic-Reboot "true"; dan Unattended-Upgrade::Automatic-Reboot-Time "04:00";.

Fase 6: Backup rutin yang benar-benar bisa dipulihkan

Semua lapisan di atas mengurangi risiko, tetapi tidak menghapusnya. Kesalahan manusia, disk rusak, atau ransomware tetap mungkin terjadi. Backup adalah satu-satunya asuransi yang tetap berguna ketika yang lain gagal.

  • Terapkan aturan 3-2-1: tiga salinan, dua jenis media, satu di lokasi berbeda.
  • Cadangkan yang penting saja: database, folder aplikasi, file .env, konfigurasi Nginx, dan crontab.
  • Jadwalkan harian lewat cron, dengan retensi misalnya 7 salinan harian dan 4 mingguan.
  • Simpan salinan di luar server, misalnya object storage atau server lain. Backup yang berada di disk yang sama ikut hilang saat disk bermasalah.
  • Gunakan fitur backup/snapshot di panel my.vpshosting.id sebagai lapisan tambahan; detail layanan terkini ada di halaman paket.
  • Uji pemulihan setiap kuartal di server percobaan.
#!/usr/bin/env bash
# /usr/local/bin/backup.sh - backup harian sederhana
set -euo pipefail

TANGGAL=$(date +%F)
TUJUAN=/backup
mkdir -p "$TUJUAN"

# Dump database (kredensial dibaca dari ~/.my.cnf)
mysqldump --single-transaction --all-databases | gzip > "$TUJUAN/db-$TANGGAL.sql.gz"

# Arsip file aplikasi dan konfigurasi
tar -czf "$TUJUAN/files-$TANGGAL.tar.gz" /var/www /etc/nginx

# Hapus salinan lokal yang lebih dari 7 hari
find "$TUJUAN" -type f -mtime +7 -delete

# Kirim ke server lain (ganti sesuai tujuan Anda)
rsync -az "$TUJUAN/" backup@SERVER_CADANGAN:/data/backup-vps/
sudo chmod 700 /usr/local/bin/backup.sh
# Jalankan tiap hari pukul 02:30
echo "30 2 * * * root /usr/local/bin/backup.sh" | sudo tee /etc/cron.d/backup-harian

Poin Penting: Backup yang belum pernah diuji pemulihannya hanyalah dugaan. Satu kali latihan restore di server percobaan jauh lebih berharga daripada sepuluh skrip backup yang tidak pernah dibuka.

Fase 7: Kebiasaan bulanan dan kasus khusus

Keamanan bukan proyek sekali jadi. Cukup luangkan 15 menit sebulan untuk memeriksa hal-hal berikut.

  • Lihat percobaan login gagal: sudo journalctl -u ssh --since "7 days ago" | grep Failed | wc -l.
  • Tinjau daftar port yang mendengarkan dengan sudo ss -tulpn. Ada port asing yang tidak Anda kenal?
  • Hapus pengguna, key SSH, dan layanan yang sudah tidak dipakai.
  • Pastikan sertifikat HTTPS diperbarui otomatis.
  • Cek ruang disk, karena backup yang menumpuk bisa membuat server penuh dan layanan berhenti.

Bagi trader yang memakai vps windows untuk menjalankan MetaTrader atau robot, logikanya serupa meski perangkatnya berbeda: ganti port RDP bawaan, batasi akses ke IP tertentu lewat firewall, gunakan kata sandi panjang, dan aktifkan pembaruan Windows terjadwal.

Berikut gambaran sederhana peran tiap lapisan:

LapisanMenangkalTidak menangkal
SSH keyTebak kata sandiKey yang bocor atau laptop yang dicuri
UFWPort tak sengaja terbukaCelah di aplikasi web
fail2banSerangan brute force berulangSerangan terdistribusi dari ribuan IP
Update otomatisCelah lama yang sudah ditambalCelah baru yang belum ada tambalannya
BackupKehilangan dataPencegahan serangan

Tabel itu menunjukkan alasan semuanya perlu dipasang bersamaan: tidak ada satu alat yang menutup semua celah, tetapi kelimanya saling menambal kekurangan satu sama lain.

Ringkasan

Mengamankan VPS Linux tidak membutuhkan keahlian peretas. Anda hanya perlu disiplin menjalankan urutan yang tepat: siapkan jalur darurat, kunci SSH dengan key, tutup semua port yang tidak perlu lewat UFW, pasang fail2ban sebagai penjaga, aktifkan update keamanan otomatis, lalu jadwalkan backup yang rutin diuji.

Mulailah dari Fase 1 hari ini, selesaikan satu fase per sesi, dan jangan menunggu insiden untuk mengambil tindakan. Jika Anda baru mencari server untuk berlatih, lihat pilihan terbaru di vpshosting.id/harga, lalu kelola semuanya dari panel my.vpshosting.id. Server yang aman dari awal jauh lebih murah dibandingkan server yang harus diselamatkan belakangan.

Lihat paket VPS
Terapkan yang Anda baca langsung di VPSHosting.ID.
Kunjungi VPSHosting.ID ↗