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.
