Mar 12, 2014

Menggunakan SSH Key sebagai pengganti password

Beberapa tahun lalu ketika saya masih bekerja sebagai seorang software engineer, saya teringat server kami tampaknya pernah diincar oleh orang, yang berusaha membruteforce password admin. Pada waktu itu salah satu solusinya adalah password dibuat sangat susah dan sangat panjang sekitar 19-25 karakter, dengan style alay dan bbrp non alphanumerik (yes, you are the best alay boss wakakaka (kidding)).

Okay, jurus diatas memang sangat efektif. Bayangkan untuk melakukan bruteforce password tersebut kira2 membutuhkan \(x^n\) iterasi dimana \(x\) adalah jumlah karakter yang mungkin untuk digunakan, dan \(n\) adalah banyak karakter. Tetapi karena kebiasaan manusia adalah mengingat sesuatu berdasarkan kata, biasanya bruteforce ini di combine dengan dictionary attack. Sesuai namanya dictionary (kamus), maka ada beberapa list kata yang akan langsung digunakan misalnya "root", "r00t", "123456", dst.


Nah, ada satu cara lain untuk menggantikan efektifitas dari password panjang dan tidak bermakna, yang dinamakan SSHKey. SSHKey ini akan menggantikan password untuk melakukan ssh ke server. Pada prinsipnya user akan menggenerate SSHKey pada komputer pribadinya, sehingga mendapatkan 2 buah key yaitu public key dan private key. Setelah itu public key akan ditaruh diserver, dan private key akan ditaruh komputer.

Langkah-langkah untuk mengubah cara login ke ssh dari password based ke sshkey based adalah sebagai berikut:

  1. Buat terlebih dahulu public dan private key menggunakan algoritma RSA.
    keygen-keygen -t rsa
    
    Tinggal ikuti petunjuk, maka secara default public dan private key berada di folder "~/.ssh"
  2. Setelah itu buat folder "~/.ssh" di server
    ssh [user-name]@[host] mkdir -p .ssh
    
  3. Upload public key ke folder .ssh pada server
    cat ~/.ssh/id_rsa.pub | ssh [user-name]@[host] "cat >> .ssh/authorized_keys"
    
  4. Ubah permission dari .ssh dan .ssh/authorized_keys pada server
    ssh [user-name]@[host] "chmod 700 .ssh; chmod 600 .ssh/authorized_keys"
    
  5. Membuat login ssh tidak boleh menggunakan password
    sudo vim /etc/ssh/sshd_config
    
    kemudian cari "PasswordAuthentication" ganti menjadi "no"
Dengan demikian login ssh hanya dapat menggunakan sshkey yang memiliki keuntungan, tidak bisa dilakukannya brute force password.

No comments:

Post a Comment