Secure Shell (SSH) — Penjelasan Dasar dan Secure Remote Login
Secure Shell (SSH) adalah sistem keamanan jaringan berbasis software. SSH melakukan enkripsi terhadap seluruh komunikasi client-server secara transparan, yang berarti klien tidak mengalami perubahan komunikasi secara kasat mata.
SSH server diinstall dan diadministrasi oleh administrator, bertugas menerima atau menolak koneksi yang datang ke hostnya. Klien kemudian menjalankan SSH client dari komputer lain untuk mengirimkan permohonan kepada SSH server seperti “tolong lakukan login” atau “tolong kirimkan saya data”. Seluruh komunikasi ini terenkripsi dan terproteksi dari pengubahan data secara tidak sah.
Walaupun namanya mengandung kata “shell”, tapi SSH bukanlah shell seperti Bourne atau C Shellpada sistem UNIX. SSH bukanlah command interpreter, tidak menyediakan wildcard expansion,command history dan lainnya. SSH hanya membentuk channel terenkripsi untuk menjalankan shell lain pada komputer remote. SSH juga bukanlah solusi paling aman – mengingat tidak ada solusi yang pasti aman dalam internet – karena SSH tidak bisa melindungi komputer anda dari percobaan serangan seperti brute force atau denial of service. SSH juga tidak bisa melindungi komputer anda dari Trojan, virus maupun worm. Fungsi SSH adalah authentication, encryption dan integrity.
SSH (dalam postingan ini saya menggunakan OpenSSH yang menggunakan protokol ssh2) menggunakan RSA, RSA1 dan DSA sebagai algoritma pasangan kunci publik-privatnya. Saya akan membahas tentang kunci ini lebih dalam pada postingan berikutnya.
Saya akan memberikan demonstrasi secure remote login menggunakan Lubuntu 12.04 sebagai serverdan Windows 8 Pro sebagai client menggunakan putty. Instalasi SSH server pada Lubuntu dapat dilakukan menggunakan perintah apt-get install openssh-server.
Kemudian kita akan menambahkan sedikit konfigurasi demi memperkuat keamanan SSH kita. Buka filesshd_config yang ada di direktori /etc/ssh dan ubah konfigurasi berikut :
- UsePrivilegeSeparation yes, ubah menjadi no
- PermitRootLogin yes, ubah menjadi no
- StrictModes yes, pastikan tetap yes
UserPrivilegeSeparation akan membagi proses yang dikerjakan sshd menjadi 2 bagian, pertama proses turunan/anak yang bersifat unprivileged dan proses induk yang memerlukan otentikasi, merupakan proses lanjutan dari turunan setelah mengotentikasi koneksi yang ada.
PermitRootLogin akan mengizinkan komputer client untuk mengakses user root yang memiliki hak akses tertinggi, sehingga akan membahayakan sistem.
StrictModes akan mengeluarkan pengawasan akses ketat, jika sebuah user memiliki direktori pangkal dengan hak akses 777 maka pengguna tersebut tidak diizinkan mengakses melalui OpenSSH.
Sementara pada sisi client (Windows 8 Pro), kita bisa menggunakan putty. Sekarang saya akan mencoba masuk ke komputer SSH server menggunakan akun saya. Kira-kira begini tampilannya :
Saya juga melakukan capture terhadap paket data yang mengalir menggunakan Wireshark. Dengan data ini saya lebih mudah melakukan penjelasan detil kepada pembaca sekalian.
Setelah melakukan TCP 3-way handshake maka client dan server akan saling memperkenalkan diri (aplikasi yang digunakan). Lalu terjadi Key Exchange Init yang berarti memulai pertukaran kunci. Karena ini pertama kalinya kita mengakses SSH server maka server akan memutuskan bahwa kunci baru akan digunakan. Setelah itu, komunikasi berjalan dalam keadaan terenkripsi.
Seberapa amannya menggunakan SSH? Gambar di bawah ini menunjukkan perbandingan keamananremote login menggunakan telnet yang nyatanya mengirim seluruh berkas secara plaintext dan menggunakan SSH yang mengenkripsi komunikasinya.
Sekian dulu postingan kali ini, semoga bermanfaat. Di postingan selanjutnya kita akan membahas tentang kunci publik/privat pada SSH. Saya memutuskan untuk memilah tema SSH menjadi banyak postingan agar pembaca bisa mempelajarinya perlahan dan mengerti konsep utamanya
Tidak ada komentar:
Posting Komentar