Checklist Hardening Server Ubuntu Setelah Instalasi
Server Ubuntu yang baru ter-install secara default adalah pintu terbuka: SSH dengan password, firewall mati, dan root yang bisa diakses dari mana saja. Sebelum server Anda menerima trafik produksi, justru sebelum, kerjakan dulu daftar berikut. Urutannya penting — jangan sampai Anda mengunci diri sendiri di luar.
1. Buat user non-root dengan sudo
Kerja harian jangan pakai root. Buat user khusus deploy, beri akses sudo, dan pastikan sudo tanpa password hanya jika memang diperlukan untuk otomatisasi.
2. Autentikasi SSH dengan key, bukan password
Generate pasangan key (ed25519 cukup), tempel public key ke ~/.ssh/authorized_keys, lalu uji login dengan key sebelum menonaktifkan password. Salah urutan di langkah ini adalah cara klasik mengunci diri sendiri.
3. Hardening sshd
Di /etc/ssh/sshd_config: PermitRootLogin no, PasswordAuthentication no, dan ubah port bila ingin mengurangi noise log. Restart sshd dan biarkan sesi lama tetap terbuka sampai Anda yakin koneksi baru berhasil.
4. Pasang firewall (ufw)
Default deny incoming, izinkan hanya port yang benar-benar dipakai — biasanya 22 (atau port SSH baru), 80, dan 443.
5. Install fail2ban
Fail2ban membaca log auth dan mem-blokir IP yang gagal login berulang. Konfigurasi default-nya sudah layak; sesuaikan bantime dan maxretry sesuai selera.
6. Aktifkan automatic security updates
unattended-upgrades memasang patch keamanan otomatis. Untuk patch yang butuh reboot, jadwalkan window restart yang disepakati — jangan biarkan kernel menyimpang terlalu jauh.
7. Sinkronkan waktu dengan NTP
Log yang kacau waktunya menyulitkan investigasi. systemd-timesyncd atau chrony keduanya cukup.
8. Konfigurasi swap & sysctl dasar
Server RAM kecil tanpa swap akan OOM saat build. Tambahkan swap file 1–2 GB, lalu turunkan vm.swappiness agar jarang terpakai.
9. Setup backup harian terenkripsi
Backup tanpa restore test bukan backup. Simpan ke lokasi terpisah dari server, enkripsi, dan uji proses restore-nya sejak hari pertama.
10. Batasi akses database
PostgreSQL/MySQL idealnya hanya listen di localhost. Kalau harus diakses dari luar, pakai VPN — bukan port publik.
11. Pasang monitoring minimal
Cukup uptime check eksternal + alert disk/CPU. Anda ingin tahu masalah lebih dulu dari klien Anda.
12. Catat semua di dokumentasi internal
Port, user, lokasi backup, dan pengecualian firewall. Dokumentasi inilah yang menyelamatkan handover — prinsip yang saya jelaskan di FAQ soal risiko solo developer.
Butuh bantuan menerapkan ini di server Anda? Layanan server & cloud saya mencakup hardening, monitoring, dan maintenance bulanan.



