Wednesday, January 23, 2013

Key-Based SSH Logins With PuTTY



Panduan ini menerangkan bagaimana untuk menjana dan menggunakan sepasang kunci persendirian/awam (private/public key) untuk log masuk ke remote system dengan SSH menggunakan PuTTY. PuTTY adalah klien SSH yang boleh digunakan untuk Windows dan Linux (selalunya ia digunakan pada sistem Windows). Menggunakan kunci berasaskan SSH login, anda boleh melumpuhkan prosedur mamasukkan username/password login yang bermaksud bahawa, hanya orang yang mempunyai sepasang kunci persendirian/awam yang sah sahaja boleh log masuk. Dengan cara itu, tidak ada cara untuk serangan brute-force berjaya dilakukan, supaya sistem anda lebih selamat.

Saya tidak mengeluarkan apa-apa jaminan jikalau sistem anda tetap boleh dicerobohi.



1. Nota Awal

Dalam tutorial ini saya menggunakan sistem Windows 7 untuk menyambung ke pelayan SSH Linux (Ubuntu Server, alamat IP: 192.168.25.3).

2. Pemasangan PuTTY, PuTTYgen, Dan Pagenat Pada Sistem Windows

Pertama sekali kita perlu memasang PuTTY, PuTTYgen, dan Pageant pada sistem Windows. Apa yang perlu kita lakukan ialah memuat turun fail exectuable (.exe) dan simpan aplikasi tersebut di satu tempat/folder, contohnya pada desktop. Kita tidak perlu untuk install aplikasi-aplikasi ini kerana aplikasi-aplikasi ini adalah aplikasi standalone. Untuk memulakan aplikasi ini, kita hanya perlu klik dua kali pada aplikasi tersebut.

Muat turun fail berikut dari halaman muat turun PuTTY dan simpan aplikasi ini pada sistem Windows anda, contohnya pada desktop:
  1. PuTTY - http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
  2. PuTTYgen - http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
  3. Pageant - http://the.earth.li/~sgtatham/putty/latest/x86/pageant.exe
Rajah 2: PuTTY, PuTTYgen dan Pageant

3. Mewujudkan Satu Profil Dengan Tetapan Untuk Pelayan saya 192.168.25.3

Dalam PuTTY, anda boleh membuat profil untuk sambungan kepada pelbagai pelayan SSH anda, jadi anda tidak perlu menukar tetapan apabila anda mahu menyambung kepada pelayan tertentu.

Mari buat profil untuk pelayan saya 192.168.25.3. Mulakan aplikasi PuTTY dengan mengklik dua kali pada PuTTY.exe. Anda sekarang berada dalam kategori Session (lihat tree di sebelah kiri Rajah 3.1). Masukkan 192.168.25.3 di bawah Host Name (or IP address), masukkan 22 di bawah Port dan pilih SSH bawah Connection type seperti Rajah 3.1: Tetapan PuTTY dibawah:

Rajah 3.1: Tetapan PuTTY

Kemudian pergi ke Connection -> Data dan isikan nama pengguna yang anda mahu untuk log masuk ke pelayan SSH anda di bawah Auto-login username seperti Rajah 3.2: Tetapan PuTTY Username dibawah. Dalam artikel ini saya menggunakan ubuntu:

Rajah 3.1: Tetapan PuTTY Username


Kemudian pergi ke Session semula. Di bahagian Saved Sessions masukkan nama untuk profil, contohnya ubuntu atau mana-mana nama lain yang membolehkan anda ingat yang pelayan profil. Kemudian klik pada Save:
Rajah 3.2: Tetapan PuTTY, Saved

Selepas ini jika anda menggunakan PuTTY, anda boleh memilih profil yang sesuai dari kotak Saved Sessions, klik pada Load dan kemudian Open.

4. Sambungan Ke Pelayan SSH

Sekarang kita boleh menyambung kepada pelayan SSH dengan hanya klik pada Open.

Rajah 4.1: Sambungan Ke Pelayan SSH

Jika anda menyambung kepada pelayan bagi kali pertama, amaran keselamatan muncul. Ini adalah kerana PuTTY tidak tahu kunci hos pelayan lagi, jadi ia adalah selamat untuk klik pada Ya. (Jika ini berlaku sekali lagi di kemudian hari, ini boleh bermakna bahawa pelayan lain kini berjalan di bawah alamat IP yang sama, atau seseorang yang telah menceroboh dan menukar kunci.)

Rajah 4.2: Sambungan Kali Pertama

Saya telah menyimpan nama pengguna dalam tetapan profil tadi, jadi saya tidak perlu untuk menaip di sini lagi. Saya hanya perlu menentukan kata laluan pengguna:

Rajah 4.3: Log Masuk ke Pelayan

Sekarang ini adalah cara "biasa" untuk log masuk ke pelayan SSH, iaitu, dengan nama memasukkan pengguna dan kata laluan. Jika orang lain tahu username dan password, dia boleh log masuk juga. Jadi jika anda mempunyai kata laluan lemah atau menjadi mangsa serangan brute-force, ini boleh mendatangkan masalah. Mari kita ubah sekarang.

5. Menjana Sepasang Kunci Persendirian/Awam (Public/Private Key)

Kita boleh menggunakan PuTTYgen untuk mencipta sepasangan kunci persendirian/awam. Mulakan aplikasi dengan mengklik dua kali fail PuTTYgen.exe. Pastikan anda pilih SSH-2 RSA di bawah pilihan Type of key to generate dan nyatakan 1024 sebagai Number of bit in a generated key. Kemudian klik pada Generate:

Rajah 5.1: Antaramuka PuTTYgen.exe

Sila gerakkan tetikus di kawasan kosong semasa proses penjanaan kunci berlaku untuk menjana kunci secara rawak:

Rajah 5.2: Penjanaan Kunci Secara Rawak

Sekarang sepasang kunci persendirian/awam telah dijana. Di bahagian Key comment, anda boleh masukkan apa-apa komen, biasanya saya menggunakan alamat e-mel atau nama pelayan. Kemudian nyatakan Key passphrase anda dan mengulangi di bawah ruangan kosong Confirm passphrase. Anda perlukan passphrase untuk log masuk ke pelayan SSH dengan kunci baru anda. Kemudian klik pada Save public key dan menyimpannya di lokasi yang selamat pada komputer anda. Anda bebas untuk memilih nama fail dan extensions, tetapi anda perlu ingat untuk sistem manakah kunci ini digunakan pada kemudian hari.

Rajah 5.3: Simpan Public Key 1

Rajah 5.4: Simpan Public Key 2

Kemudian klik pada Save private key pula. Anda boleh menyimpan ia di lokasi yang sama pada public key - ia harus berada di lokasi yang hanya anda boleh mengakses dan anda jamin tidak akan kehilangannya! (Jika anda kehilangan kunci dan telah melumpuhkan username/password ketika proses log masuk, maka anda tidak boleh log masuk lagi pada pelayan SSH anda!) Sekali lagi, anda bebas untuk memilih nama fail, tetapi kali ini extension mesti .PPK:

Rajah 5.5: Simpan Private Key 1

Rajah 5.6: Simpan Private Key 2

Seterusnya salin kunci awam(private key) dari tingkap PuTTYgen:

Rajah 5.6: Salin Public Key

6. Simpan Kunci Awam Pada Pelayan

Kemudian log masuk ke pelayan SSH anda (jika anda telah menututup sesi SSH sebelumnya), masih dengan username dan password, dan paste kunci awam ke dalam fail ~/.ssh/authorized_keys (dalam satu baris!) Seperti ini:
mkdir ~/.ssh 
chmod 700 ~/.ssh
Rajah 6.1: Cipta Fail authorized_keys

Seterusnya disusuli pula perintah untuk membina satu fail baru yang berjudul authorized_keys
nano ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EA[...]C3SbHFMFAVD5LrvBeLgbNazDh5ABCKXfS42qbUmjWSCpmC6tChqT7PPmQ== Pelayan SSH Ubuntu

Rajah 6.2: Text Editor nano

Fail authorized_keys mestilah mempunyai hak untuk write/readable hanya oleh pengguna tersebut, jadi kita menjalankan perintah:
chmod 600 ~/.ssh/authorized_keys

Rajah 6.3: Chmod

7 Lampirkan Kunci Persendirian Di Profil PuTTY

Sekarang jalankan aplikasi PuTTY dan Load profil pelayan SSH anda (192.168.25.3):

Rajah 7.1: Load Tetapan Profil

Kemudian pergi ke SSH -> Auth dan klik pada Browse:

Rajah 7.2: Browse Private Key

Lihat sistem fail anda dan pilih kunci peribadi yang anda cipta sebentar tadi:

Rajah 7.3: Pemilihan Private Key

Rajah 7.4: Selesai Memilih Private Key

Kemudian pergi ke Sessions sekali lagi dan klik pada Save:

Rajah 7.5: Simpan Tetapan Profil PuTTY


8. Pertama Kali Masuk Berasaskan Kunci

Sekarang segala-galanya telah sedia untuk pertama kali log masuk dengan berasaskan kunci kepada pelayan SSH kita. Klik pada Open:

Rajah 8.1: Log Masuk Pertama Kali Dengan Menggunakan Kunci

Seperti yang anda boleh lihat, kunci awam kini digunakan untuk pengesahan, dan anda akan diminta untuk memasukkan phassphrase (seperti yang dinyatakan pada bab 5):

Rajah 8.2: Masukkan Passphrase

9. Melumpuhkan Username/Password Untuk Log Masuk

Sehingga kini, anda boleh log masuk dengan menggunakan sepasang kunci persendirian/awam dan masih dengan menggunakan username/password untuk log masuk, jadi jika seseorang tidak melampirkan kunci persendirian pada sesi PuTTY beliau, beliau akan diminta untuk memasukkan nama pengguna dan kata laluan. Jadi untuk mencapai keselamatan yang lebih baik, kita mesti melumpuhkan cara log masuk menggunakan username/password (pastikan cara log masuk berasaskan kunci anda berjaya sebelum melumpuhkan cara log masuk menggunakan username/password, kerana jika cara log masuk berasaskan kunci tidak berfungsi dan anda telah melumpuhkan cara log masuk menggunakan username/password, anda akan menghadapi masalah).

Untuk melumpuhkan cara log masuk menggunakan username/password, kita mesti mengubah suai fail konfigurasi SSHD. Pada sistem Debian/Ubuntu, ia berada di /etc/ssh/sshd_config. Anda perlu menetapkan Protokol kepada 2 (protokol 1 adalah tidak selamat dan tidak harus digunakan!), tetapan PasswordAuthentication kepada no, dan UsePAM kepada no (atau komen pada garis UsePAM), contohnya. seperti ini:

[...]
Protocol 2
PasswordAuthentication no
UsePAM no
[...]

Kemudian restart SSHD. Pada Debian/Ubuntu, anda boleh melakukannya seperti ini:
/etc/init.d/ssh restart
Sekarang jika anda membuka PuTTY tanpa berlampirkan kunci persendirian anda, anda tidak akan dapat log masuk.

10. Biarkan Pageant Ingat Kunci Passphrase Anda

Apabila anda menggunakan cara log masuk berasaskan kunci, anda masih perlu untuk menentukan kunci passphrase anda. Ini boleh menjengkelkan jika anda menyambung ke pelayan SSH beberapa kali sehari. Mujurlah, anda boleh memberitahu passphrase pada Pageant yang kemudiannya Pagenat akan menyediakan passphrase secara automatic apabila anda log masuk ke pelayan SSH anda.

Anda boleh mulakan Pageant dengan mengklik dua kali Pageant.exe:

Rajah 10.1: Pageant.exe

Selepas itu, anda perlu pastikan Pageant beroperasi pada taskbar:

Rajah 10.2: Pageant Pada Taskbar

Sekarang klik dua kali ikon Pageant di taskbar. Tetingkap berikut akan keluar. Klik pada Add Key:

Rajah 10.3: Add Key Pada Pageant

Browse sistem fail anda dan pilih kunci persendirian anda:

Rajah 10.3: Pilih Private Key Pada Pageant

Kemudian masukkan passphrase untuk kunci persendirian:

Rajah 10.4: Masukkan Passphrase Pada Pageant

Kunci peribadi telah disenaraikan dalam senarai utama Pageant. Klik pada Close:

Rajah 10.5: Senarai Utama Pageant

Selagi Pageant sedang beroperasi di taskbar, anda boleh log masuk ke pelayan SSH anda tanpa menyediakan passphrase - ini dilakukan oleh Pageant:

Rajah 10.6: Log Masuk Tanpa Passphrase

Apabila Pageant anda berhenti beroperasi, ia akan lupa semua kunci, jadi masa hadapan apabila anda jalankan semula operasi Pageant, anda mesti menambah kunci semula. Ini juga boleh jadi menjengkelkan, tetapi untuk mengelakkan perkara ini berlaku, kita boleh membuat pintasan pada untuk Pageant. Klik kanan Pageant dan pilih Create Shortcut:

Rajah 10.7: Shortcut Pageant

Anda kini dapati terpada shortcut Pageant di lokasi yang sama. Klik kanan dan pergi ke Properties:

Rajah 10.8: Icon Shortcut Pageant

Di bahagian Target, anda akan mendapati lokasi untuk Pageant.exe, contohnya C:\Users\Documents\putty\pageant.exe. Sekarang anda boleh menambah lokasi kunci peribadi anda pada barisan itu, sebagai contoh jika kunci persendirian anda berada di C:\Users\Documents\ssh-key\private_key_ubuntu.ppk. Maka barisan itu akan kelihatan seperti ini:

C:\Users\Documents\putty\pageant.exe C:\Users\Documents\ssh-key\private_key_ubuntu.ppk

Kemudian klik pada butang OK.

Rajah 10.9: Target Private Key

Sekarang apabila anda klik dua kali pada pintasan Pageant, Pageant akan secara automatik memuatkan kunci peribadi anda dan meminta anda untuk passphrase. Masukkan, dan itu sahaja.

11. Pautan




Sekian, Terima Kasih.

No comments:

Post a Comment