Hampir setiap VPS baru dimulai dengan cara yang sama: Anda login sebagai root, menginstal beberapa hal, dan sebulan kemudian Anda masih root. Itu berjalan lancar sampai sebuah skrip yang Anda tempel menghapus direktori yang salah. Menyiapkan pengguna biasa dengan sudo hanya butuh lima menit, dan urutannya lebih penting daripada perintahnya — salah urutan, Anda terkunci di luar.
Ini urutan yang aman untuk Ubuntu 22.04/24.04 dan Debian 12.
1. Buat penggunanya
Sebagai root:
adduser deploy
usermod -aG sudo deploy
adduser meminta kata sandi dan beberapa detail opsional (cukup tekan Enter). Pilih kata sandi sungguhan: Anda akan mengetiknya untuk sudo. Di image Debian minimal, jalankan apt install -y sudo lebih dulu kalau perintahnya belum ada.
2. Berikan kunci SSH Anda
Cara termudah adalah menyalin kunci resmi milik root sambil menjaga kepemilikannya tetap benar:
rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy
Kalau Anda lebih suka manual:
mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
Izin yang salah adalah alasan klasik login dengan kunci gagal tanpa pesan. SSH mengabaikan authorized_keys yang bisa ditulisi pengguna lain.
3. Uji sebelum mengubah apa pun
Biarkan sesi root tetap terbuka. Di terminal baru:
ssh -p 22 deploy@203.0.113.10
sudo whoami
Gunakan IP dan port Anda sendiri — di paket NAT, itu port SSH pribadi dari dasbor. Kalau sudo whoami mencetak root, semuanya beres. Kalau login gagal, Anda masih punya jendela root untuk memperbaikinya.
4. Matikan login root
Sekarang tutup pintunya. Buat file drop-in kecil alih-alih mengedit konfigurasi utama:
cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh
sshd -t memeriksa sintaks lebih dulu. Konfigurasi rusak ditambah reload adalah cara orang berakhir butuh konsol. PasswordAuthentication no hanya masuk akal kalau login dengan kunci sudah berfungsi untuk pengguna baru — yang baru saja Anda uji.
Buka satu terminal lagi dan pastikan root ditolak sementara deploy tetap bisa masuk. Setelah itu tutup sesi root yang lama.
5. Opsional: sudo tanpa kata sandi untuk otomatisasi
Kalau skrip deploy butuh sudo tanpa pertanyaan, berikan tepat itu dan tidak lebih:
visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp
Jujur saja, NOPASSWD: ALL memang menggoda, tapi artinya kunci yang dicuri sama dengan root. Batasi pada perintah yang dijalankan otomatisasi.
Kalau ada yang salah
Konsol web di dasbor tidak bergantung pada SSH atau firewall. Masuk dari sana, perbaiki file di /etc/ssh/sshd_config.d/, reload, selesai. Alur pemulihan lengkapnya kami tulis di cara masuk kembali ke VPS yang terkunci.
Langkah berikutnya
- Beralih sepenuhnya ke login hanya dengan kunci: autentikasi kunci SSH.
- Kurangi kebisingan percobaan brute force: fail2ban.
- Lengkapi dasar-dasar lainnya dengan daftar periksa keamanan VPS baru.
Opsi akses untuk setiap paket ada di dokumentasi akses. Bahkan Nano seharga $3 layak punya pengguna non-root — ini peningkatan keamanan paling murah yang ada.
Komentar
Belum ada komentar. Jadilah yang pertama.