antond.net

0 %
Anton Darmawanto
Front-end Developer
Ui/UX Designer
  • Residence:
    Indonesia
  • City:
    Jakarta Selatan
  • Age:
    40
Indonesian
English
Jawa
html
CSS
Js
PHP
WordPress
Proxmox
Laravel
Linux server (ubuntu, debian, fedora)
Alibaba Cloud
  • Proxmox, Vm Ware
  • Stylus, Sass, Less
  • Gulp, Webpack, Grunt
  • GIT knowledge
0

No products in the cart.

Return To Shop

Cara Hardening Server Linux VPS dalam 10 Menit: UFW, Fail2ban, dan SSH Key agar VPS Tidak Mudah Dibobol

28/10/2026

JUDUL: Cara Hardening Server Linux VPS dalam 10 Menit: UFW, Fail2ban, dan SSH Key agar VPS Tidak Mudah Dibobol SEO_TITLE: Cara Hardening VPS Linux: UFW, Fail2ban & SSH Key 10 Menit SLUG: cara-hardening-vps-linux-ufw-fail2ban-ssh-key FOKUS KW: cara hardening VPS Linux UFW fail2ban AHREFS KD: 22 AHREFS VOL: 1.500 KATEGORI: Tutorial (Linux/Server) TAGS: linux, vps, server, keamanan-server, ufw, fail2ban, ssh, ubuntu, hardening-server

—

Pendahuluan

Bayangkan Anda baru saja membeli VPS di Vultr, DigitalOcean, atau layanan lokal seperti IDCloudHost—server seharga Rp 50-150 ribu per bulan itu sudah online dan bisa diakses dari mana saja. Yang mungkin tidak Anda sadari: begitu IP VPS Anda aktif, bot-bot pemindai otomatis di internet langsung mencatatnya dan mulai mencoba masuk lewat port SSH.

Cek log SSH VPS yang baru dibuat, dan Anda akan melihat ratusan hingga ribuan percobaan login gagal dalam satu hari—kebanyakan dari IP-IP asing yang mencoba kombinasi username dan password secara acak.

Kabar baiknya: mengamankan VPS dari serangan dasar ini bisa dilakukan dalam 10 menit dengan tiga langkah utama. Ini bukan prosedur yang rumit, tapi efeknya signifikan.

Terminal Linux menampilkan status UFW firewall aktif

Langkah 1: Konfigurasi Firewall UFW (3 Menit)

UFW (Uncomplicated Firewall) adalah antarmuka ramah untuk iptables yang sudah tersedia di Ubuntu/Debian. Prinsipnya simpel: tolak semua koneksi masuk, lalu buka hanya yang Anda butuhkan.

Penting: Jalankan perintah ini berurutan. Buka port SSH SEBELUM mengaktifkan UFW, atau koneksi Anda akan terputus.

# Install UFW (biasanya sudah ada di Ubuntu)
sudo apt install -y ufw

# Set default: tolak semua masuk, izinkan semua keluar
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Buka port SSH (WAJIB dilakukan dulu sebelum enable!)
sudo ufw allow 22/tcp comment 'SSH'

# Buka port web jika ini web server
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

# Aktifkan UFW
sudo ufw enable

# Cek status
sudo ufw status verbose

Output yang benar:

Status: active
Default: deny (incoming), allow (outgoing)
To          Action   From
22/tcp      ALLOW IN  Anywhere
80/tcp      ALLOW IN  Anywhere
443/tcp     ALLOW IN  Anywhere

Rate limit SSH untuk memperlambat brute-force (memblokir IP yang mencoba lebih dari 6 koneksi dalam 30 detik):

sudo ufw limit ssh

Jika Anda sudah mengganti port SSH ke port lain (misalnya 2222), sesuaikan perintahnya:

sudo ufw allow 2222/tcp comment 'SSH custom port'
sudo ufw delete allow 22/tcp
Autentikasi aman menggunakan pasangan kunci privat publik SSH

Langkah 2: Install dan Konfigurasi Fail2ban (3 Menit)

UFW memblokir port, tapi tidak mencegah percobaan login berulang di port yang memang terbuka. Fail2ban melengkapi UFW dengan cara memantau log dan memblokir IP yang gagal login terlalu sering.

# Install fail2ban
sudo apt install -y fail2ban

# Buat file konfigurasi lokal (jangan edit jail.conf langsung—akan ditimpa saat update)
sudo nano /etc/fail2ban/jail.local

Isi file /etc/fail2ban/jail.local dengan:

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

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400

Penjelasan pengaturan:

  • bantime = 86400: IP yang gagal login 3 kali akan diblokir selama 24 jam
  • findtime = 600: Hitung percobaan gagal dalam jendela 10 menit
  • maxretry = 3: Maksimal 3 percobaan sebelum diblokir
# Aktifkan dan jalankan fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Cek status jail SSH
sudo fail2ban-client status sshd

Setelah sehari berjalan, coba cek lagi dengan fail2ban-client status sshd—Anda akan terkejut melihat berapa banyak IP sudah diblokir.

Langkah 3: Ganti Autentikasi ke SSH Key (4 Menit)

Password bisa ditebak lewat brute-force; SSH key tidak. Cara kerja SSH key: Anda punya dua kunci—private key (disimpan di komputer Anda, tidak boleh dikirim ke siapa pun) dan public key (disimpan di server).

Di komputer lokal Anda (Windows: gunakan PuTTYgen atau WSL; Mac/Linux: langsung di terminal):

# Generate SSH key pair
ssh-keygen -t ed25519 -C "vps-saya"

# Salin public key ke server
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@IP-VPS-ANDA

Setelah berhasil masuk dengan key, nonaktifkan login password:

sudo nano /etc/ssh/sshd_config

Ubah baris-baris berikut:

PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
# Restart SSH (jangan tutup sesi sekarang—buka tab baru dulu untuk tes)
sudo systemctl restart sshd

Buka terminal baru dan coba login dengan key. Jika berhasil, sesi lama bisa ditutup. Jika ada masalah, jangan tutup sesi lama—perbaiki dulu dari sana.

Verifikasi Akhir

Jalankan checklist ini setelah tiga langkah selesai:

# 1. Firewall aktif dengan deny-incoming
sudo ufw status verbose | head -5

# 2. Fail2ban berjalan dan jail SSH aktif
sudo fail2ban-client status sshd

# 3. SSH tidak mengizinkan password dan root login
sudo sshd -T | grep -E 'permitrootlogin|passwordauth'
# Output yang benar: permitrootlogin no | passwordauthentication no

# 4. Lihat port yang sedang mendengarkan
sudo ss -tlnp

Langkah Selanjutnya (Opsional)

Tiga langkah di atas sudah menangani mayoritas serangan otomatis. Jika ingin lebih jauh:

  • Aktifkan unattended-upgrades agar patch keamanan terpasang otomatis
  • Pasang Nginx rate limiting di wp-login.php dan xmlrpc.php untuk VPS yang menjalankan WordPress
  • Audit dengan Lynis: sudo lynis audit system memberikan skor keamanan dan rekomendasi detail

VPS yang dirawat secara aktif jauh lebih aman dari yang dibiarkan berjalan tanpa perhatian. Setup 10 menit ini bisa menghemat Anda dari sakit kepala yang jauh lebih besar di kemudian hari.

— **

Posted in TutorialTags: