09 Juli 2014

Pengenalan dan Penggunaan SSH di Linux

Secure Shell atau lebih dikenal dengan ssh adalah protocol yang digunakan untuk berkomunikasi  berbasis mesin berbasis UNIX secara remote. Umumnya, ssh digunakan untuk login ke mesin secara remote. Kegunaan lain dari ssh antara lain untuk transfer file secara aman dengan scp, atau ssh sebagai media komunikasi aman untuk aplikasi lainnya.



1. Command ssh sederhana

Format command ssh secara sederhana adalah <nama user>@<alamat mesin>. Alamat mesin bisa berupa hostname ataupun IP adrress. Apabila anda tidak menyertakan username, (ssh <alamat mesin>) maka username yang dipakai akan dianggap sama dengan user yang sedang login di mesin.

pupil@DreamChaser:~$ ssh root@192.168.56.203
The authenticity of host '192.168.56.203 (192.168.56.203)' can't be established.
RSA key fingerprint is 20:c9:78:6c:a5:c1:26:db:2f:44:07:ef:21:75:b3:45.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.203' (RSA) to the list of known hosts.
root@192.168.56.203's password: 
Last login: Thu Jul  3 01:53:43 2014
[root@webserver ~]# 

Ketika anda melakukan koneksi ssh, mesin kita akan memeriksa "fingerprint" dari mesin target. Apabila sudah pernah dilakukan koneksi sebelumnya, user tidak akan diberi peringatan. Namun apabila belum pernah melakukan koneksi ke mesin target, maka user akan diberi peringatan. Dengan demikian user bisa terhindar dari serangan dns spoofing.

2. Koneksi ssh dengan fingerprint yang tidak sama

Sekarang kita akan mencoba melakukan koneksi ssh ke alamat IP yang memiliki fingerprint tidak sama.

pupil@DreamChaser:~$ ssh root@192.168.56.203
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
8c:78:c0:a6:cc:14:13:b8:c4:d7:b5:5f:6e:a2:01:a6.
Please contact your system administrator.
Add correct host key in /home/pupil/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/pupil/.ssh/known_hosts:1
  remove with: ssh-keygen -f "/home/pupil/.ssh/known_hosts" -R 192.168.56.203
RSA host key for 192.168.56.203 has changed and you have requested strict checking.
Host key verification failed.

Bila peringatan seperti di atas muncul, berarti ada perbedaan antara fingerprint di host kita dengan mesin di alamat yang dituju. Hal ini bsia terjadi karena kita melakukan install ulang mesin ssh server. Akan tetapi, hal ini juga bisa terjadi antara lain karena memang mesin yang dituju bukanlah mesin yang ingin kita akses dengan ssh, hanya saja memiliki alamat yang sama. Sehingga, apabila peringatan ini muncul, kita harus benar-benar memastikan bahwa mesin target yang akan kita akses dengan ssh adalah mesin yang kita inginkan.

Apabila kita yakin perubahan fingerprint karena penyebab yang kita sengaja, dan kita yakin mesin yang dituju sesuai dengan alamat pada perintah ssh, maka untuk menghilangkan peringatan ini cukup dengan perintah seperti saran yang ada di peringatan, sesuaikan alamat IP pada command dengan alamat mesin yang ingin anda hapus dari tampilan peringatan.

ssh-keygen -f "/home/pupil/.ssh/known_hosts" -R 192.168.56.203

3. Membuat public key dan private key ssh

Perintah login ssh sederhana di atas menggunakan username dan password yang sama dengan login langsung di mesin. Dengan metode tersebut, siapa saja yang mengetahui username dan password untuk login di mesin target, dapat mengakses ssh ke mesin target tersebut. Metode ssh yang lebih aman adalah dengan menggunakan public key dan private key. Dengan metode ini, akses ssh hanya dapat dilakukan dari mesin tertentu saja, misalnya laptop user yang bersangkutan. Command yang digunakan untuk men-generate public key dan private key di linux adalah ssh-keygen.

pupil@DreamChaser:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pupil/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/pupil/.ssh/id_rsa.
Your public key has been saved in /home/pupil/.ssh/id_rsa.pub.
The key fingerprint is:
04:c2:eb:42:e9:7d:88:7b:c3:16:43:fa:6f:75:46:6c pupil@DreamChaser
The key's randomart image is:
+--[ RSA 2048]----+
|   .. .          |
|    .. .         |
|   . .  ..       |
|  o o  .  E      |
| o * .  So       |
|  = * . . o      |
|   = + . o       |
|  . * .          |
|   o +.          |
+-----------------+

Option -t adalah option utama yang harus ada ketika kita men-generate key ssh. Option ini digunakan untuk menentukan tipe dari key yang dibuat. Umumnya tipe key ssh yang dibuat adalah rsa. Key yang dihasilkan akan disimpan secara default di direktori .ssh pada direktori home user yang men-generate key ssh dengan nama id_rsa untuk private key dan id_rsa.pub untuk public key. Anda bisa menentukan dimana key yang dihasilkan disimpan dengan menuliskan lokasi penyimpanan ketika ditanyakan.

4. Menginstall public key ssh ke mesin target

Setelah membuat key ssh, sekarang kita install public key ke mesin yang menjadi target kita. Perintah yang digunakan adalah ssh-copy-id <username pada target>@<alamat mesin target>.

pupil@DreamChaser:~$ ssh-copy-id user1@192.168.56.203
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user1@192.168.56.203's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'user1@192.168.56.203'"
and check to make sure that only the key(s) you wanted were added.

5. Login dengan ssh key

Saat menginstall, anda akan diminta password login dari user yang anda gunakan untuk akses ssh, dalam posting ini adalah user1. Setelah diinstall, kita coba akses ssh dengan key yang sudah diiinstall.

pupil@DreamChaser:~$ ssh user1@192.168.56.203
Enter passphrase for key '/home/pupil/.ssh/id_rsa': 
Last login: Wed Jun 25 19:19:47 2014 from 192.168.56.203
[user1@santos ~]$ 

Passphrase yang diminta adalah password ketika anda membuat key, bukanlah password login user tersebut.

6. File konfigurasi ssh server

Konfigurasi ssh server ada dalam file /etc/ssh/sshd_config. Untuk mengatur bagaimana sebuah mesin dapat diakses dengan ssh, gunakan option-option yang ada dalam file ini. Edit file ini dengan nano, vim atau text editor lainnya. Setiap kali anda melakukan edit terhadap file konfigurasi ssh server, anda harus merestart service ssh agar edit dapat diterapkan, jika tidak segera restart service ssh, maka hasil edit akan terasa setelah reboot. Di bawah ini adalah perintah untuk merestart service ssh di server:

service sshd restart

7. Konfigurasi ssh server: mematikan login ssh dengan user root

User root adalah user dengan pangkat tertinggi dalam sistem linux. Sebaiknya user root tidak diijinkan login melalui ssh. Untuk mematikan login root via ssh, bukalah file konfigurasi ssh server/etc/ssh/sshd_config ) dan carilah baris berikut ini:

#PermitRootLogin yes

Ubahlah baris di atas menjadi:

PermitRootLogin no

Kemudian restart service ssh.

8. Konfigurasi ssh server: mematikan login ssh dengan password

Salah satu metode penyerangan adalah dengan bruteforce, yaitu dengan username dan atau password secara terus- menerus. Untuk mengatasi resiko ini, anda harus men-generate ssh ke sesuai dengan tutorial pada nomor 3 dan 4. Setelah public key di install di ssh server, edit file konfigurasi ssh server dan carilan baris berikut:

PasswordAuthentication yes

Kemudian edit menjadi

PasswordAuthentication no

Selanjutnya restart service ssh di server.

NB:
Untuk penggunaan lebih lanjut bisa dilihat di manual page dari masing-masing command yang digunakan:
man ssh
man sshd_config
man sshd

Referensi:
support.suso.com/supki/SSH_Tutorial_for_Linux
www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix/










Tidak ada komentar:

Posting Komentar