Cara Mengamankan Ubuntu VPS dari Serangan Login SSH

Mengamankan Ubuntu VPS dari serangan login SSH merupakan langkah penting setelah server aktif di internet. Port SSH yang terbuka dapat menjadi target brute force, password spraying, dan percobaan login otomatis. Perlindungan dasar yang efektif meliputi penggunaan SSH key, menonaktifkan login root, mematikan autentikasi password, membatasi akses SSH dengan firewall, serta memasang Fail2Ban sebagai lapisan tambahan.

Artikel ini membahas cara mengamankan SSH di Ubuntu VPS secara bertahap tanpa mengganggu akses administrator yang sudah berjalan.

Mengapa Login SSH Perlu Diamankan?

SSH atau Secure Shell digunakan untuk mengelola server Linux dari jarak jauh. Karena SSH biasanya dapat diakses melalui internet, layanan ini sering menjadi sasaran bot yang mencoba kombinasi username dan password secara otomatis.

Serangan seperti ini tidak selalu berarti server sudah berhasil ditembus. Namun, ribuan percobaan login yang terus-menerus dapat memenuhi log, membebani layanan, dan meningkatkan risiko jika password administrator lemah atau bocor.

Beberapa langkah keamanan SSH yang paling penting adalah:

  • Menggunakan SSH key sebagai metode autentikasi.
  • Menonaktifkan login langsung sebagai root.
  • Menonaktifkan login menggunakan password setelah SSH key berhasil diuji.
  • Membatasi akses SSH menggunakan firewall.
  • Menggunakan Fail2Ban untuk memblokir alamat IP yang melakukan percobaan login berulang.
  • Memastikan Ubuntu dan paket keamanan selalu diperbarui.

1. Update Ubuntu VPS

Sebelum melakukan konfigurasi keamanan, perbarui daftar paket dan instal pembaruan yang tersedia.

sudo apt update
sudo apt upgrade -y

Setelah proses selesai, periksa apakah sistem membutuhkan reboot:

[ -f /var/run/reboot-required ] && echo "Reboot diperlukan"

Jika Ubuntu meminta reboot, jalankan:

sudo reboot

Pastikan Anda dapat terhubung kembali melalui SSH setelah server menyala.

2. Buat User Administrator Non-Root

Sebaiknya administrasi server dilakukan menggunakan user biasa yang memiliki hak sudo, bukan login langsung sebagai root.

Buat user baru:

sudo adduser admin

Tambahkan user tersebut ke grup sudo:

sudo usermod -aG sudo admin

Uji akses sudo setelah login menggunakan user tersebut:

sudo whoami

Jika hasilnya:

root

berarti user sudah memiliki akses administratif melalui sudo.

3. Gunakan SSH Key Authentication

SSH key lebih aman daripada mengandalkan password, terutama jika private key dijaga dengan baik dan menggunakan passphrase.

Pada komputer lokal, buat SSH key jika belum memilikinya:

ssh-keygen -t ed25519

Secara umum, Anda akan mendapatkan private key dan public key. Jangan pernah membagikan private key kepada orang lain.

Kirim public key ke VPS:

ssh-copy-id admin@IP_SERVER

Ganti admin dengan username VPS dan IP_SERVER dengan alamat IP server Anda.

Jika ssh-copy-id tidak tersedia, public key dapat ditambahkan secara manual ke file:

~/.ssh/authorized_keys

Pastikan permission direktori dan file SSH sesuai:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

4. Uji SSH Key Sebelum Menonaktifkan Password

Ini merupakan langkah yang sangat penting.

Buka terminal baru dan coba login menggunakan user administrator:

ssh admin@IP_SERVER

Jangan menutup sesi SSH lama sebelum memastikan sesi baru berhasil.

Jika login menggunakan SSH key berhasil, Anda dapat melanjutkan ke tahap berikutnya.

Kesalahan konfigurasi SSH dapat menyebabkan administrator terkunci dari VPS. Karena itu, mempertahankan satu sesi SSH yang sedang aktif selama proses konfigurasi merupakan tindakan pencegahan yang baik.

5. Nonaktifkan Login Root Melalui SSH

Setelah user administrator dapat digunakan, nonaktifkan login root melalui SSH.

Pada Ubuntu modern, konfigurasi SSH dapat berada pada file utama:

/etc/ssh/sshd_config

Edit file tersebut:

sudo nano /etc/ssh/sshd_config

Cari atau tambahkan konfigurasi:

PermitRootLogin no

Dengan pengaturan tersebut, root tidak dapat login langsung melalui SSH.

Administrator tetap dapat memperoleh hak root setelah login menggunakan user yang memiliki akses sudo:

sudo -i

6. Nonaktifkan Login SSH Menggunakan Password

Setelah SSH key benar-benar teruji, Anda dapat menonaktifkan autentikasi password:

PasswordAuthentication no

Untuk memperjelas bahwa autentikasi interaktif berbasis keyboard juga tidak digunakan:

KbdInteractiveAuthentication no

Konfigurasi yang umum digunakan antara lain:

PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no

Namun, jangan menerapkan konfigurasi ini sebelum memastikan SSH key berfungsi. Jika key tidak dapat digunakan dan password sudah dinonaktifkan, Anda berisiko kehilangan akses SSH.

7. Periksa Konfigurasi SSH Sebelum Restart

Jangan langsung me-restart layanan SSH setelah mengubah konfigurasi. Periksa terlebih dahulu apakah konfigurasi memiliki kesalahan sintaks.

Pada Ubuntu dengan OpenSSH, gunakan:

sudo sshd -t

Jika tidak ada output, biasanya konfigurasi berhasil melewati pemeriksaan sintaks.

Jika muncul pesan error, perbaiki terlebih dahulu sebelum melakukan restart atau reload layanan SSH.

8. Terapkan Perubahan SSH

Jika konfigurasi sudah valid, terapkan perubahan:

sudo systemctl reload ssh

Kemudian periksa status layanan:

sudo systemctl status ssh

Sebaiknya tetap mempertahankan sesi SSH lama sampai Anda memastikan koneksi baru dapat digunakan.

9. Aktifkan Firewall UFW

Ubuntu menyediakan UFW atau Uncomplicated Firewall yang dapat digunakan untuk mengatur akses jaringan secara lebih sederhana.

Periksa status firewall:

sudo ufw status

Sebelum mengaktifkan UFW, pastikan akses SSH diizinkan:

sudo ufw allow OpenSSH

Kemudian aktifkan firewall:

sudo ufw enable

Periksa aturan yang aktif:

sudo ufw status verbose

Jika SSH menggunakan port selain port standar, sesuaikan aturan firewall dengan port tersebut.

Contohnya, jika SSH menggunakan port 2222:

sudo ufw allow 2222/tcp

Jangan menghapus akses SSH yang sedang Anda gunakan sebelum memastikan aturan firewall baru sudah benar.

10. Batasi Akses SSH Jika Memungkinkan

Membuka SSH ke seluruh internet memang umum dilakukan, tetapi akses dapat dibuat lebih ketat jika Anda mengetahui alamat IP atau jaringan administrator.

Misalnya, akses SSH hanya diperbolehkan dari alamat IP tertentu:

sudo ufw allow from IP_ADMIN to any port 22 proto tcp

Ganti IP_ADMIN dengan alamat IP yang memang digunakan untuk mengelola VPS.

Metode ini dapat mengurangi permukaan serangan secara signifikan, tetapi kurang praktis jika alamat IP administrator sering berubah.

11. Pasang Fail2Ban

Fail2Ban dapat digunakan sebagai lapisan pertahanan tambahan untuk mendeteksi percobaan autentikasi yang gagal dan memberikan tindakan pemblokiran terhadap alamat IP yang dianggap melakukan serangan berulang.

Instal Fail2Ban:

sudo apt update
sudo apt install fail2ban -y

Aktifkan dan jalankan servicenya:

sudo systemctl enable --now fail2ban

Periksa status:

sudo systemctl status fail2ban

Periksa jail SSH:

sudo fail2ban-client status sshd

Jika konfigurasi Anda menggunakan nama jail yang berbeda, gunakan daftar jail yang tersedia:

sudo fail2ban-client status

12. Konfigurasi Fail2Ban dengan Aman

Sebaiknya jangan mengubah file konfigurasi utama Fail2Ban secara langsung. Gunakan file lokal seperti:

/etc/fail2ban/jail.local

Buat atau edit file tersebut:

sudo nano /etc/fail2ban/jail.local

Contoh konfigurasi dasar:

[sshd]
enabled = true
port = ssh
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h

Konfigurasi tersebut secara sederhana menentukan bahwa alamat IP yang melakukan terlalu banyak kegagalan autentikasi dalam periode tertentu dapat diblokir sementara.

Restart Fail2Ban setelah perubahan:

sudo systemctl restart fail2ban

Kemudian periksa:

sudo fail2ban-client status sshd

13. Pertimbangkan Mengganti Port SSH

Mengganti port SSH dari port standar 22 dapat mengurangi sebagian besar noise dari bot otomatis yang hanya memindai port SSH standar.

Misalnya:

Port 2222

Namun, mengganti port bukan pengganti autentikasi yang aman. Scanner yang lebih agresif dapat menemukan port SSH baru melalui pemindaian port.

Jika ingin mengganti port, pastikan port baru sudah diizinkan di firewall sebelum menutup port lama.

Contoh:

sudo ufw allow 2222/tcp

Setelah konfigurasi SSH diubah dan koneksi baru pada port tersebut berhasil diuji, barulah aturan lama dapat dihapus jika memang tidak lagi digunakan.

14. Periksa Log Percobaan Login SSH

Log SSH dapat membantu mengetahui apakah VPS sedang menerima percobaan login yang mencurigakan.

Pada Ubuntu, Anda dapat melihat autentikasi melalui journal:

sudo journalctl -u ssh

Untuk melihat kegagalan autentikasi:

sudo journalctl -u ssh | grep -i "failed"

Anda juga dapat melihat aktivitas autentikasi yang tercatat di log sistem:

sudo grep "Failed password" /var/log/auth.log

Jika terlihat banyak percobaan login dari alamat IP berbeda dengan username yang tidak Anda kenal, kemungkinan VPS sedang menjadi target pemindaian atau brute-force otomatis.

15. Pastikan Permission SSH Aman

Permission yang terlalu longgar pada direktori atau file SSH dapat menimbulkan masalah keamanan.

Periksa direktori SSH:

ls -ld ~/.ssh

Permission yang umum digunakan:

chmod 700 ~/.ssh

Untuk file authorized_keys:

chmod 600 ~/.ssh/authorized_keys

Pastikan file tersebut dimiliki oleh user yang benar:

chown -R "$USER":"$USER" ~/.ssh

16. Jangan Menonaktifkan Keamanan yang Tidak Dipahami

Beberapa tutorial keamanan SSH di internet menyarankan banyak konfigurasi tambahan, tetapi tidak semuanya diperlukan untuk setiap VPS.

Fokus terlebih dahulu pada kontrol yang memberikan dampak besar:

  • Gunakan SSH key.
  • Nonaktifkan login root melalui SSH.
  • Nonaktifkan password setelah key teruji.
  • Aktifkan firewall.
  • Batasi sumber akses jika memungkinkan.
  • Gunakan Fail2Ban sebagai lapisan tambahan.
  • Selalu perbarui Ubuntu dan OpenSSH.

Keamanan server sebaiknya diterapkan berdasarkan kebutuhan. Konfigurasi yang terlalu ketat tanpa pengujian dapat menyebabkan administrator kehilangan akses atau layanan tertentu tidak berfungsi.

17. Checklist Keamanan SSH Ubuntu VPS

Gunakan checklist berikut setelah konfigurasi selesai:

  • User administrator non-root sudah dibuat.
  • User administrator memiliki akses sudo.
  • SSH key sudah dibuat.
  • Login menggunakan SSH key sudah berhasil diuji.
  • Login root melalui SSH sudah dinonaktifkan.
  • Password authentication sudah dinonaktifkan setelah key teruji.
  • Konfigurasi SSH sudah diperiksa dengan sshd -t.
  • UFW sudah aktif.
  • Port SSH sudah diizinkan pada firewall.
  • Fail2Ban sudah terpasang jika diperlukan.
  • Log SSH sudah diperiksa.
  • Ubuntu dan paket sistem sudah diperbarui.
  • Satu sesi SSH lama tetap tersedia selama pengujian konfigurasi.

Kesimpulan

Mengamankan Ubuntu VPS dari serangan login SSH tidak harus rumit. Langkah paling penting adalah mengurangi ketergantungan pada password, menggunakan SSH key, menonaktifkan login root, mengaktifkan firewall, dan memantau percobaan login.

Untuk perlindungan tambahan, Fail2Ban dapat membantu memblokir alamat IP yang melakukan percobaan autentikasi berulang. Jika akses SSH hanya diperlukan dari jaringan tertentu, pembatasan berdasarkan alamat IP juga dapat mengurangi permukaan serangan.

Yang paling penting, selalu uji konfigurasi SSH dari koneksi baru sebelum menutup sesi administrator yang sedang aktif. Dengan pendekatan tersebut, proses hardening VPS menjadi lebih aman dan risiko terkunci dari server dapat diminimalkan.

FAQ

Apakah mengganti port SSH sudah cukup untuk mengamankan VPS?

Tidak. Mengganti port SSH dapat mengurangi sebagian traffic bot otomatis, tetapi bukan mekanisme autentikasi. SSH key, pembatasan akses, firewall, dan konfigurasi autentikasi tetap lebih penting.

Apakah login root melalui SSH sebaiknya dinonaktifkan?

Ya. Sebaiknya administrasi dilakukan menggunakan user non-root dengan akses sudo. Dengan begitu, login langsung sebagai root melalui SSH dapat dinonaktifkan.

Apakah SSH key lebih aman daripada password?

Pada konfigurasi yang tepat, SSH key dapat memberikan perlindungan yang lebih kuat daripada password terhadap serangan brute force dan password guessing. Private key tetap harus dijaga dengan baik dan sebaiknya menggunakan passphrase.

Apakah Fail2Ban wajib digunakan?

Tidak selalu. Fail2Ban merupakan lapisan pertahanan tambahan, bukan satu-satunya mekanisme keamanan. Jika SSH sudah dibatasi dengan kuat menggunakan firewall, jaringan privat, VPN, atau allowlist IP, kebutuhan Fail2Ban dapat berbeda.

Apakah UFW cukup untuk melindungi Ubuntu VPS?

UFW membantu mengontrol koneksi jaringan, tetapi bukan pengganti seluruh sistem keamanan server. VPS tetap membutuhkan autentikasi yang kuat, pembaruan keamanan, permission yang benar, monitoring, dan konfigurasi layanan yang aman.

Apa yang harus dilakukan jika terkunci dari VPS setelah mengubah SSH?

Gunakan console atau recovery access yang disediakan oleh provider VPS jika tersedia. Dari sana, periksa konfigurasi SSH, firewall, dan metode autentikasi. Karena itu, selalu uji koneksi SSH baru sebelum menutup sesi yang masih aktif.