SSH (Secure Shell) adalah protokol standar untuk mengakses server berbasis Linux secara remote, berfungsi sebagai pintu masuk utama untuk pengelolaan sistem, instalasi aplikasi, dan pemeliharaan infrastruktur. Karena peran krusialnya, SSH menjadi salah satu target paling sering dalam serangan brute force, credential stuffing, dan upaya pengambilalihan sistem. Seluruh panduan di bawah ini hanya berlaku untuk sistem milik Anda sendiri atau yang telah Anda peroleh izin tertulis untuk diuji dan diamankan, dengan mematuhi prinsip pembelajaran etis dan peraturan yang berlaku di wilayah Anda.
Ganti Autentikasi Kata Sandi dengan Kunci SSH
Autentikasi berbasis kata sandi rentan terhadap serangan brute force, di mana penyerang mencoba kombinasi kata sandi secara otomatis hingga berhasil masuk. Kunci SSH menggunakan mekanisme pasangan kunci publik dan privat, yang jauh lebih sulit diretas karena tidak memerlukan input kata sandi secara manual setiap login.
Untuk mengaktifkan autentikasi kunci SSH, pertama-tama generate pasangan kunci di perangkat klien Anda dengan perintah ssh-keygen -t ed25519. Simpan kunci privat di lokasi yang aman dan tidak dapat diakses oleh pengguna lain, sedangkan kunci publik akan disalin ke server. Gunakan perintah ssh-copy-id -i ~/.ssh/id_ed25519.pub pengguna@alamat-ip-server untuk menyalin kunci publik ke direktori ~/.ssh/authorized_keys di server. Setelah itu, uji login ke server tanpa memasukkan kata sandi; jika berhasil, Anda dapat menonaktifkan autentikasi kata sandi sepenuhnya di langkah selanjutnya. Untuk keamanan ekstra, Anda bisa melindungi kunci privat dengan passphrase saat proses generate, sehingga meskipun kunci privat hilang, penyerang tetap tidak bisa menggunakannya tanpa passphrase tersebut.
Nonaktifkan Login Root Langsung
Akun root di Linux memiliki hak akses penuh terhadap seluruh sistem, sehingga jika kredensial login root berhasil dicuri atau ditebas, penyerang bisa melakukan pengambilalihan penuh server tanpa hambatan. Menonaktifkan login root langsung merupakan langkah dasar yang sangat efektif untuk mengurangi risiko ini.
Sebelum melakukan perubahan, pastikan Anda sudah membuat akun pengguna biasa dengan hak akses sudo terlebih dahulu, agar Anda tetap bisa melakukan administrasi sistem setelah login non-root. Edit berkas konfigurasi SSH di server dengan perintah sudo nano /etc/ssh/sshd_config, cari baris PermitRootLogin dan ubah nilainya menjadi no. Jika Anda hanya ingin mengizinkan login root dengan kunci SSH (bukan kata sandi), Anda bisa mengaturnya menjadi no-password-auth. Setelah menyimpan perubahan, restart layanan SSH dengan perintah sudo systemctl restart sshd agar konfigurasi baru berlaku. Selalu uji login dengan akun non-root terlebih dahulu untuk memastikan Anda tidak terkunci dari server.
Kurangi Permukaan Serangan Layanan SSH
Selain mengubah metode autentikasi dan menonaktifkan login root, Anda bisa mengurangi risiko dengan menyesuaikan konfigurasi SSH lebih lanjut. Pertama, ubah port default SSH (22) ke port lain yang tidak umum digunakan, dengan mengubah nilai Port di berkas sshd_config. Perubahan ini tidak membuat server sepenuhnya aman, tetapi bisa mengurangi jumlah serangan otomatis yang menargetkan port default.
Kedua, nonaktifkan sepenuhnya autentikasi kata sandi dengan mengatur PasswordAuthentication no di sshd_config, sehingga hanya koneksi yang memiliki kunci SSH yang terdaftar yang bisa masuk. Ketiga, batasi pengguna yang diizinkan login via SSH dengan menambahkan baris AllowUsers nama_pengguna1 nama_pengguna2 di sshd_config, sehingga pengguna lain tidak bisa mencoba login meskipun kredensial mereka bocor. Keempat, instal dan aktifkan fail2ban, tools yang memantau log login dan memblokir IP yang melakukan percobaan login gagal berkali-kali dalam jangka waktu tertentu.
Pantau Aktivitas Login SSH Secara Berkala
Pemantauan rutin adalah bagian penting dari keamanan berkelanjutan. Periksa log login SSH secara berkala di lokasi /var/log/auth.log pada distribusi berbasis Debian/Ubuntu atau /var/log/secure pada distribusi berbasis RHEL/CentOS. Log ini menampilkan seluruh percobaan login, baik yang berhasil maupun gagal, sehingga Anda bisa mendeteksi aktivitas mencurigakan seperti percobaan login dari IP yang tidak dikenali.
Anda juga bisa menggunakan perintah seperti sudo last untuk melihat riwayat login yang berhasil, atau sudo ss -tulpn | grep ssh untuk memastikan layanan SSH berjalan di port yang sesuai dan tidak ada koneksi yang tidak diinginkan. Lakukan audit konfigurasi sshd_config secara berkala untuk memastikan tidak ada perubahan yang tidak diharapkan, dan selalu lakukan pembaruan sistem secara rutin untuk mendapatkan perbaikan keamanan terbaru untuk layanan SSH dan komponen sistem lainnya.
Referensi Lanjutan untuk Pengerasan Sistem
Keamanan SSH hanyalah satu bagian dari pengerasan sistem Linux secara keseluruhan. Jika Anda ingin mempelajari langkah-langkah pengerasan yang lebih komprehensif, mulai dari konfigurasi firewall, pembatasan hak akses pengguna, hingga pemantauan ancaman, Anda bisa merujuk ke panduan yang tersedia di kalilinux.net. Sumber tersebut menyediakan tutorial langkah demi langkah yang dapat diikuti untuk meningkatkan keamanan server Anda secara menyeluruh, sesuai dengan standar industri keamanan informasi.
Semua langkah di atas bertujuan untuk memperkecil permukaan serangan pintu masuk SSH server Anda, mengurangi risiko akses tidak sah dan pengambilalihan sistem. Ingatlah untuk selalu menguji setiap perubahan konfigurasi di lingkungan terisolasi sebelumnya sebelum diterapkan ke server produksi, dan hanya melakukan tindakan ini pada sistem milik Anda sendiri atau yang telah memiliki izin resmi untuk dielola.
