Sebagai sistem administrator, salah satu aspek penting yang tidak boleh diabaikan adalah keamanan server, dan salah satu pengamanan paling mendasar pada sistem operasi berbasis Linux yaitu akses remote via protokol SSH.
Mengapa harus menggunakan protokol SSH? Bagaimana jika menggunakan protokol lain seperti telnet dan FTP? Jawabannya simpel, karena protokol lain seperti telnet & FTP tidak mengenkripsi data yang dikirim dari komputer client ke server atau dalam arti kata, data tidak aman. Maka dari itu, jika menggunakan protokol unsecure seperti telnet atau FTP, data akan dikirimkan ke server tujuan dalam bentuk plain text dan tidak di enkripsi. Sehingga sangat mungkin data tersebut di intercept oleh hacker dan mendapatkan informasi penting dari data tersebut.
Lalu apa itu SSH? SSH merupakan protokol network untuk remote login ataupun mengirim data dari komputer client ke server dengan tingkat keamanan yang tinggi. Dalam hal ini data yang dikirim dari komputer client ke server sudah di enkripsi sehingga data asli tidak bisa dilihat oleh hacker, bahkan walaupun data yang kita kirimkan di intercept. Ini berarti SSH bisa digunakan untuk remote server dari manapun tanpa perlu mengkhawatirkan data dilihat oleh orang yang tidak bertanggung jawab, bahkan jika koneksi yang digunakan adalah free wifi di tempat umum sekalipun (Kecuali ada hacker yang bisa memecahkan enkripsinya SSH π ).
Selain untuk remote, SSH memiliki beberapa fungsi yang umum digunakan oleh sistem administrator Linux, dari mulai transfer file, eksekusi perintah sampai dengan tunneling. Maka dari itu protokol SSH sudah menjadi komponen yang fundamental karena menyediakan banyak fungsi serta tingkat keamanan yang tinggi.
Untuk dapat menggunakan protokol SSH, ada beberapa kebutuhan yang perlu diperhatikan dan dipersiapkan.
SSH Client & SSH Server
Protokol SSH bekerja dengan cara mengkomunikasikan 2 komputer/server yang berbeda, maka dari itu harus ada yang berperan sebagai SSH client & SSH server. Dengan posisi SSH client melakukan remote login ke SSH server. Client & server juga harus sudah dilengkapi dengan kemampuan untuk menggunakan protokol SSH ini. Nantinya, remote login SSH client akan diarahkan ke IP address atau hostname SSH server.
Dari sisi SSH client membutuhkan aplikasi untuk melakukan koneksi SSH ke server. Jika menggunakan sistem operasi berbasis Unix seperti Linux & MacOS bisa langsung menggunakan aplikasi command linenya yaitu Terminal. Sedangkan untuk client dengan sistem operasi berbasis Windows bisa menggunakan aplikasi pihak ketiga seperti Putty.
Dan dari sisi SSH server juga membutuhkan aplikasi SSH. SSH server ini umumnya hanya berfungsi pada komputer dengan sistem operasi berbasis Unix seperti Linux & MacOS. Pada sebagian besar sistem operasi Linux versi terbaru, secara default aplikasi SSH sudah terinstal. Aplikasi tersebut adalah openssh. Tetapi tidak perlu khawatir apabila openssh belum terinstal, karena package openssh ini sudah tersedia di semua repository Linux, jadi cukup jalankan 1 perintah saja untuk instalasi openssh.
Autentikasi SSH (Username & Password)
Protokol SSH ini juga membutuhkan autentikasi yang valid supaya koneksi dari SSH client bisa di accept oleh SSH server, sehingga tetap terjaga kemanannya. Client harus memasukkan password user server yang sudah diizinkan untuk remote login SSH ke server. Bahkan supaya lebih aman, kita bisa membuat user yang digunakan khusus untuk remote login SSH, lalu di konfigurasi sedemikian rupa supaya akses remote login SSH hanya bisa menggunakan autentikasi user SSH tersebut.
Jadi nantinya, user yang digunakan untuk remote login bukan user root/admin/superuser yang memiliki full akses terhadap semua konfigurasi yang ada di server, melainkan user biasa yang haknya sudah dibatasi. Pemberian password user SSH juga dianjurkan menggunakan password dengan kombinasi karakter supaya ancaman dari serangan brute force (Baca : https://en.wikipedia.org/wiki/Brute-force_attack) bisa diminimalisir. Kriteria strong password yaitu minimal mengandung 8 karakter, 1 huruf besar, 1 huruf kecil, 1 angka, 1 simbol serta tidak mengandung nama user.
Autentikasi SSH (SSH Key)
Selain autentikasi dengan username & password, metode autentikasi lain yang bisa digunakan adalah autentikasi dengan SSH key. Dengan metode ini kita tidak perlu lagi memasukkan password user SSH, cukup mendefinisikan file keynya saja.
Ada beberapa hal yang perlu dilakukan supaya SSH key bisa digunakan untuk remote login SSH. Pertama, generate SSH key dari client. Kedua, salin file key ke server. Ketiga, SSH ke server menggunakan SSH key. Setelah itu remote SSH akan di accept apabila key yang digunakan client cocok dengan key yang sudah didaftarkan di server. Bahkan kita bisa juga disable autentikasi password supaya client hanya bisa SSH ke server menggunakan SSH key.
Mungkin banyak yang mengira bahwa autentikasi SSH key ini tidak lebih aman daripada autentikasi password. Padahal tidak juga, karena autentikasi password juga memiliki ancaman tersendiri yaitu brute force. Jadi bisa dibilang SSH key ini lebih aman, dengan catatan tidak sembarangan memasukkan file key client untrusted ke server, karena jika hal tersebut terjadi client untrusted tersebut bisa login seenaknya ke server tanpa ditanyakan password. Dan tentu saja jangan sampai komputer client yang trusted tersebut digunakan oleh orang yang tidak bertanggung jawab π .
Port SSH
Kebutuhan lain yang tidak kalah penting adalah port yang digunakan protokol ini. Secara default komunikasi protokol SSH menggunakan port TCP 22. Maka dari itu network yang digunakan untuk komunikasi SSH klien & server harus allow TCP port 22, jadi dari sisi klien harus allow outgoing TCP port 22 sedangkan dari sisi server harus allow incoming TCP port 22.
Walaupun port SSH default adalah TCP 22 tapi tidak menutup kemungkinan untuk menggunakan port TCP lain untuk koneksi SSH. Biasanya penggunaan non-standard port SSH ini digunakan untuk memperkuat keamanan, jadi remote login SSH hanya bisa diakses dari port tertentu (Bukan 22). Port non-standard yang digunakan bisa port berapa saja, asalkan port tersebut belum digunakan oleh aplikasi lain di SSH server.
Tetapi Walaupun protokol SSH ini sudah dibuat aman sedemikian rupa, tapi masih ada beberapa hal yang perlu kita hardening dari sisi konfigurasi SSH sehingga server bisa terjamin keamanannya.
Selanjutnya saya akan menulis apa-apa saja yang bisa kita lakukan untuk hardening SSH server kita, supaya terhindar dari ancaman hacker.