· 4 min read · Tutorial

Cara Hardening Ubuntu Server Setelah Install Baru

Checklist hardening Ubuntu server dalam 15 menit: update system, user non-root, SSH key, disable password auth, ubah port SSH, UFW firewall, fail2ban, disable root login, unattended-upgrades.

Kenapa Hardening Langsung Setelah Install

Server Ubuntu yang baru diinstall masih dalam kondisi default. SSH terbuka dengan password authentication, firewall belum aktif, user masih bisa login sebagai root, dan tidak ada mekanisme deteksi intrusi.

Window waktu antara server live dan hardening adalah saat paling rentan. Bot scanner terus-menerus memindai IP publik untuk port SSH terbuka. Begitu mereka menemukan server baru, brute-force attempt dimulai.

Artikel ini adalah checklist hardening yang bisa kamu jalankan dalam 15-20 menit setelah OS pertama kali boot.

Checklist Hardening

Langkah Tujuan
1. Update system Patch semua celah keamanan yang sudah diketahui
2. Buat user non-root Hindari login langsung sebagai root
3. SSH key + disable password Cegah brute-force attack via SSH
4. Ubah port SSH Kurangi noise dari bot scanner (security by obscurity, bukan primary defense)
5. Setup UFW firewall Blokir semua port kecuali yang dibutuhkan
6. Install fail2ban Blokir IP yang gagal login berkali-kali
7. Disable root login Tidak ada yang bisa SSH sebagai root
8. Setup automatic updates Security patch terpasang tanpa intervensi manual

1. Update System

Langkah pertama setelah install: pastikan semua package di versi terbaru.

sudo apt update && sudo apt upgrade -y

Kalau ada kernel update, restart:

sudo reboot

2. Buat User Non-Root

Masalah: login sebagai root langsung berbahaya. Satu command typo bisa merusak sistem.

Solusi: buat user harian dengan sudo access.

adduser nama_user
usermod -aG sudo nama_user

Test: logout dari root, login sebagai user baru, coba sudo whoami. Harusnya return root.

3. SSH Key + Disable Password Authentication

Masalah: password SSH bisa di-brute-force. Bot scanner mencoba kombinasi user/password umum 24/7.

Solusi: gunakan SSH key dan matikan password authentication.

Dari laptop lokal kamu:

ssh-keygen -t ed25519 -C "komentar_server_kamu"
ssh-copy-id nama_user@ip_server

Di server, edit SSH config:

sudo nano /etc/ssh/sshd_config

Pastikan baris-baris ini:

PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PermitRootLogin no
sudo systemctl restart sshd

⚠️ PENTING: Sebelum tutup session SSH sekarang, buka terminal baru dan tes login pakai SSH key. Kalau SSH key gagal, session yang sekarang masih bisa kamu pakai untuk perbaiki konfigurasi.

4. Ubah Port SSH (Opsional)

Mengubah port default 22 mengurangi noise dari bot scanner yang hanya menyerang port standar.

Ini bukan primary defense — hanya mengurangi log spam. Primary defense tetap SSH key + fail2ban.

sudo nano /etc/ssh/sshd_config

Tambah/edit:

Port 2222
sudo systemctl restart sshd

Sekarang login pakai: ssh -p 2222 nama_user@ip_server

5. Setup UFW Firewall

Default Ubuntu: semua port terbuka. UFW (Uncomplicated Firewall) membalik logika ini — hanya port yang kamu izinkan yang terbuka.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp comment 'SSH'
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

Kalau aplikasi kamu pakai port lain (MySQL 3306, Redis 6379), tambahkan hanya jika perlu diakses dari luar. Untuk koneksi lokal antar service di server yang sama, nggak perlu buka.

6. Install fail2ban — Blokir IP yang Brute-Force

Masalah: meskipun password authentication sudah dimatikan, bot tetap mencoba. Log server penuh dengan attempt gagal. Siapa tahu nanti kamu perlu enable password untuk suatu keperluan.

Solusi: fail2ban memonitor log, setelah N kali gagal login → blokir IP tersebut selama durasi tertentu.

sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Edit /etc/fail2ban/jail.local, pastikan bagian SSH:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600
  • maxretry=3: 3x gagal → blokir
  • bantime=3600: blokir 1 jam
  • findtime=600: dalam 10 menit
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo fail2ban-client status sshd

7. Disable Root Login

Sudah diset di langkah 3 (PermitRootLogin no). Pastikan sudah aktif.

Cek manual:

sudo grep "^PermitRootLogin" /etc/ssh/sshd_config

8. Automatic Security Updates

Masalah: security patch keluar setiap minggu. Kalau kamu nggak rutin apt update, server berjalan dengan celah yang sudah diketahui publik.

Solusi: unattended-upgrades — install security patch otomatis.

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

Pilih "Yes" saat muncul prompt.

Verifikasi:

sudo systemctl status unattended-upgrades

Log tersimpan di /var/log/unattended-upgrades/.

Ini hanya install security updates, bukan semua package. Risiko breaking change minimal karena security patch biasanya backward-compatible.

Bonus: Cek Port yang Terbuka

Setelah semua langkah, verifikasi tidak ada port yang tidak sengaja terbuka:

sudo ss -tlnp

Output seharusnya hanya menunjukkan port yang kamu sengaja buka (SSH di 2222, 80, 443).

Takeaway

Hardening server bukan opsi — ini wajib sebelum server menerima traffic publik.

15 menit untuk checklist di atas bisa mencegah:

  • Server diambil alih via brute-force SSH
  • Service yang tidak sengaja terbuka ke internet (database port, Redis)
  • Exploit terhadap celah keamanan yang sudah ada patch-nya

Jadikan checklist ini bagian dari provisioning script kamu (Ansible, Bash, Terraform) supaya setiap server baru otomatis mengikuti standard yang sama.

Suka artikel seperti ini? Dukung operasional konten lewat Saweria.

Donate via Saweria

Discussion (0)

Leave a comment

No comments yet. Be the first to start the discussion!