Thursday, December 2, 2010

SSH

1.     SSH
Pada awalnya SSH dikembangkan oleh Tatu Yl nen di Helsinki University of Technology. SSH memberikan alternatif yang secure terhadap remote session tradisional dan file transfer protocol seperti telnet dan relogin.Protokol SSH mendukung otentikasi terhadap remote host, yang dengan demikian meminimalkan ancaman pemalsuan identitas client lewat IP address spoofing maupun manipulasi DNS. Selain itu SSH mendukung beberapa protocol enkripsi secret key untuk membantu memastikan privacy dari keseluruhan komunikasi, yang dimulai dengan username/password awal. Algoritma enkripsi yang didukung oleh SSH di antaranya TripleDES(Pengembangan dari DES oleh IBM), BlowFish (BRUCE SCHNEIER), IDEA (The International Data Encryption Algorithm), dan RSA (The Rivest-Shamir-Adelman). Dengan berbagai metode enkripsi yang didukung oleh SSH, Algoritma yang digunakan dapat diganti secara cepat jika salah satu algoritma yang diterapkan mengalami gangguan. SSH menyediakan suatu virtual private connection pada application layer, mencakup interactive logon protocol (ssh dan sshd) serta fasilitas untuk secure transfer file (scd). Setelah meng-instal SSH, sangat dianjurkan untuk mendisable telnet dan rlogin. Implementasi SSH pada linux diantaranya adalah OpenSSH. SSH merupakan paket program yang digunakan sebagai pengganti yang aman untuk rlogin, rsh dan rcp.
SSH dirancang untuk menggantikan protokol telnet dan FTP. SSH merupakan produk serbaguna yang dirancang untuk melakukan banyak hal, yang kebanyakan berupa penciptaan tunnel antar host. Dua hal penting SSH adalah console login (menggantikan telnet) dan secure filetransfer (menggantikan FTP), tetapi dengan SSH anda juga memperoleh kemampuan membentuk source tunnel untuk melewatkan HTTP,FTP,POP3, dan apapun lainnya melalui SSH tunel.
SSH menggunakan metode public-key cryptography untuk mengenkripsi komunikasi antara dua host, demikian pula untuk autentikasi pemakai. Dengan metode ini, kita akan memerlukan 2 buah kunci berbeda yang digunakan baik untuk melakukan enkripsi dan dekripsi. Dua buah kunci tersebut masing-masing disebut public key (dipublikasikan ke publik/orang lain) dan private key (dirahasiakan/hanya pemiliknya yang tahu). Masing-masing kunci di atas dapat digunakan untuk melakukan enkripsi dan dekripsi. SSH dapat digunakan untuk login secara aman ke remote host atau menyalin data antarn host, sementara mencegah man-in-themiddle attacks (pembajakan sesi) dan DNS spoofing atau dapat dikatakan Secure Shell adalah program yang melakukan loging terhadap komputer lain dalam jaringan, mengeksekusi perintah lewat mesin secara remote, dan memindahkan file dari satu mesin ke mesin lainnya. SSH merupakan produk serbaguna yang dirancang untuk melakukan banyak hal, yang kebanyakan berupa penciptaan tunnel antar host.
Sejarah SSH
Pada tahun 1995, Tatu Ylönen, seorang peneliti di Helsinki University of Technology, Finlandia, merancang versi pertama protokol (sekarang disebut SSH-1) karena didorong oleh peristiwa serangan pembongkaran sandi di jaringan universitas. Tujuan dari pembuatan SSH adalah untuk menggantikan fungsi rlogin, TELNET, dan rsh protokol, yang tidak memberikan otentikasi kuat atau menjamin kerahasiaan. Ylönen merilis SSH sebagai freeware pada bulan Juli 1995, dan tool tersebut berkembang dengan cepat untuk mendapatkan popularitas. Menjelang akhir 1995, basis pengguna SSH telah tumbuh hingga 20.000 pengguna di lima puluh negara.
Pada bulan Desember 1995, Ylönen mendirikan SSH Communications Security untuk memasarkan dan mengembangkan SSH. Versi asli dari software yang digunakan SSH adalah berbagai potongan perangkat lunak bebas, seperti GNU libgmp, tetapi versi yang dikeluarkan oleh Secure SSH Communications semakin berkembang menjadi perangkat lunak berpemilik.
Pada tahun 1996, sebuah versi revisi protokol dirancang, SSH-2, yang tidak cocok dengan SSH-1. Fitur SSH-2 mencakup kedua fitur keamanan dan peningkatan perbaikan atas SSH-1. Keamanan yang lebih baik, misalnya, datang melalui algoritma pertukaran kunci Diffie-Hellman dan pemeriksaan dengan integritas yang kuat melalui kode otentikasi pesan. Fitur baru dari SSH-2 mencakup kemampuan untuk menjalankan sejumlah sesi shell melalui satu koneksi SSH.
Pada tahun 1998 ditemukan kerentanan yang digambarkan dalam 1,5 SSH sehingga memungkinkan masuknya konten yang tidak sah ke dalam aliran data SSH terenkripsi karena integritas data tidak mencukupi perlindungan dari CRC-32 yang digunakan dalam protokol versi ini. Sebuah perbaikan (SSH Compentation Attack Detector) diperkenalkan ke dalam banyak implementasi.
Pada tahun 1999, pengembang menginginkan versi perangkat lunak bebas untuk tersedia kembali seperti rilis 1.2.12, yang lebih tua dari program ssh asli, yang terakhir dirilis di bawah lisensi open source. OSSH Björn Grönvall ini kemudian dikembangkan berdasarkan basis kode ini. Tak lama kemudian, para pengembang OpenBSD menggunakan kode Grönvall untuk melakukan pengembanga yang lebih luas di atasnya, sehingga terciptalah OpenSSH, yang dimasukkan dalam rilis OpenBSD 2.6. Dari versi ini, sebuah cabang “portable” dibentuk untuk dapat memportingkan OpenSSH pada sistem operasi lain.
Diperkirakan, sejak tahun 2000, terdapat lebih dari 2.000.000 pengguna SSH.
Pada tahun 2005, OpenSSH adalah satu-satunya aplikasi ssh yang paling populer, yang diinstal secara default dalam sejumlah besar sistem operasi. Sementara itu, OSSH telah menjadi usang.
Pada tahun 2006, protokol SSH-2 yang telah disebutkan di atas, diusulkan untuk menjadi Standar Internet dengan penerbitan oleh IETF “secsh” work group dari RFC (lihat referensi).
Pada tahun 2008 sebuah kelemahan kriptografi ditemukan pada SSH-2 yang memungkinkan pengambilan sampai 4 byte plaintext dari aliran data SSH tunggal di bawah kondisi khusus. Namun hal ini telah diperbaiki dengan mengubah mode enkripsi standar OpenSSH 5,2.
Penggunaan SSH
SSH adalah sebuah protokol yang dapat digunakan untuk berbagai aplikasi. Beberapa aplikasi di bawah ini mungkin membutuhkan fitur-fitur yang hanya tersedia atau yang kompatibel dengan klien atau server SSH yang spesifik. Sebagai contoh, menggunakan protokol SSH untuk mengimplementasikan VPN adalah dimungkinkan, tapi sekarang hanya dapat dengan implementasi server dan klien OpenSSH.
  • untuk login ke shell pada remote host (menggantikan Telnet dan rlogin)
  • untuk mengeksekusi satu perintah pada remote host (menggantikan rsh)
  • untuk menyalin file dari server lokal ke remote host. Lihat SCP, sebagai alternatif untuk rcp
  • dalam kombinasi dengan SFTP, sebagai alternatif yang aman untuk FTP transfer file
  • dalam kombinasi dengan rsync untuk mem-backup, menyalin dan me-mirror file secara efisien dan aman
  • untuk port forwarding atau tunneling port (jangan dikelirukan dengan VPN yang rute paket antara jaringan yang berbeda atau menyambung dua wilayah broadcast menjadi satu)
  • untuk digunakan sebagai VPN yang terenkripsi penuh. Perhatikan bahwa hanya OpenSSH server dan klien yang mendukung fitur ini
  • untuk meneruskan X11 melalui beberapa host
  • untuk browsing web melalui koneksi proxy yang dienkripsi dengan klien SSH yang mendukung protokol SOCKS
  • untuk mengamankan mounting direktori di server remote sebagai sebuah sistem file di komputer lokal dengan menggunakan SSHFS
  • untuk mengotomasi remote monitoring dan pengelolaan server melalui satu atau lebih dari mekanisme seperti yang dibahas di atas
Arsitektur SSH
SSH-2 protokol memiliki arsitektur internal (didefinisikan dalam RFC 4.251) pada lapisan terpisah dengan baik. Yaitu:
  • Lapisan transportasi (RFC 4253). Lapisan ini menangani pertukaran kunci awal dan server otentikasi dan set up enkripsi, kompresi dan integritas verifikasi. Lapisan ini memperlihatkan ke lapisan atas sebuah antarmuka untuk mengirim dan menerima paket teks terang hingga masing-masing 32.768 byte (atau lebih yang diperbolehkan oleh implementasi). Lapisan transportasi juga mengatur ulang pertukaran kunci, biasanya setelah 1 GB data yang ditransfer atau setelah 1 jam telah berlalu, tergantung mana yang lebih cepat.
  • Lapisan otentikasi pengguna (RFC 4252). Lapisan ini menangani otentikasi klien dan menyediakan sejumlah metode otentikasi. Otentikasi client-driven: ketika seseorang diminta untuk memasukkan password, mungkin diminta oleh klien SSH, bukan servernya. Server hanya menanggapi permintaan otentikasi klien. Metode otentikasi pengguna yang sering digunakan meliputi:
    • password: sebuah metode untuk otentikasi password secara langsung, termasuk fasilitas yang memungkinkan sandi untuk diubah. Metode ini tidak diimplementasikan pada semua program.
    • kunci publik: sebuah metode untuk otentikasi berbasis kunci publik, biasanya mendukung setidaknya pasangan kunci DSA atau RSA, pada implementasi lain juga mendukung sertifikat X.509.
    • keyboard-interactive (RFC 4256): sebuah metode serbaguna di mana server akan mengirimkan satu atau lebih prompt untuk memasukkan informasi sehingga klien menampilkannya dan mengirimkan kembali tanggapan oleh pengguna. Digunakan untuk menyediakan otentikasi password sekali-waktu seperti S/Key atau SecurID. Digunakan oleh beberapa konfigurasi OpenSSH dimana PAM bertindak sebagai penyedia otentikasi host yang mendasar agar secara efektif dapat menyediakan otentikasi password, namun kadang-kadang menyebabkan kegagalan untuk login dengan klien yang hanya mendukung metode otentikasi password biasa.
    • metode otentikasi GSSAPI yang menyediakan sebuah skema extensible untuk melakukan otentikasi SSH menggunakan mekanisme eksternal seperti Kerberos 5 atau NTLM, menyediakan satu kemampuan sign on untuk sesi SSH. These methods are usually implemented by commercial SSH implementations for use in organizations, though OpenSSH does have a working GSSAPI implementation. Metode ini biasanya digunakan pada implementasikan SSH komersial untuk digunakan dalam organisasi, meskipun OpenSSH memang memiliki implementasi kerja GSSAPI.
  • Lapisan koneksi. Lapisan ini mendefinisikan konsep kanal, kanal permintaan dan permintaan global menggunakan layanan yang disediakan SSH. Sebuah koneksi SSH dapat melayani beberapa kanal secara bersamaan, masing-masing mentransfer data dalam dua arah. Permintaan kanal tersebut digunakan untuk menyambungkan saluran data spesifik secara out-of-band, seperti perubahan ukuran jendela terminal atau exit code dari sebuah proses server-side. Klien SSH meminta sebuah port server-side untuk diteruskan menggunakan sebuah permintaan global. Jenis saluran standar yang tersedia adalah:
    • shell untuk terminal, SFTP dan request exec (termasuk transfer SCP)
    • direct-tcpip untuk koneksi klien-ke-server yang diteruskan
    • forwarded-tcpip for server-to-client forwarded connections forwarded-tcpip untuk koneksi server-ke-klien yang diteruskan
  • SSHFP DNS record (RFC 4255) menyediakan sidik jari kunci publik untuk membantu memverifikasi keaslian host.
Fungsi lapisan transportasi sendiri sebanding dengan TLS; lapisan otentikasi pengguna sangat extensible dengan metode otentikasi khusus; dan lapisan sambungan menyediakan kemampuan untuk membuat banyak sesi sekunder ke dalam satu koneksi SSH, sebuah fitur yang sebanding dengan BIP dan tidak tersedia di TLS. 

1.      Konfigurasi SSH Server
1.      Pastikan paket openssh sudah terinstal pada saat instalasi Linux
Sudo dpkg –l | grep ssh
b. Melakukan editing pada file /etc/ssh/sshd_config, demgan cara ketikkan perintah berikut ini :
sudo vi /etc/ssh/sshd_config
  1. Untuk melihat ip yang ada dalam computer kita
Ifconfig

  1. Mengirim data dengan SCP
Secure Copy Protocol (SCP) adalah sebuah tool yang sangat berguna dalam mengirim dan menerima file melalui Secure Shell (SSH) di internet tanpa (atau dengan sedikit) resiko jalur kita terdeteksi oleh pihak lain. File Transfer Protocol (FTP) adalah adalah protokol yang paling populer digunakan dalam transfer File. Namun ternyata cara ini dirasakan kurang aman karena penyampaiannya yang tanpa enkripsi. SCP atau Secure Copy dan SSH File Transfer Protocol dibuat sebagai alternatif dengan mempertimbangkan hal ini maka ia pun disampaikan dengan channel yang terenkripsi. Berikut adalah cara menggunakan SCP untuk mengirim file dan menerima file.

Caranya adalah :
Scp /home/namauser/namafile.txt user@iptujuan :/home/user/
Mengirim File/Folder
Kita dapat mengirim file melalui SCP dari Terminal (Shell) dengan perintah:
scp namafile.ext username@namadomain.tld:/nama/folder/tujuan
Masing-masing parameter tersebut berarti sebagai berikut:
  • namafile.ext adalah nama file yang akan dikirim berikut extensionnya, atau dapat juga berupa nama folder (bila berupa nama folder maka akan digunakan parameter -r).
  • username adalah nama user di mesin tujuan kita.
  • namadomain.tld adalah nama domain atau nomor IP tujuan kita. Contoh: wordpress.com atau 192.168.1.1
  • /nama/folder/tujuan adalah path/jalur lokasi folder dimana kita akan menempatkan file yang kita maksud.


Berikut adalah beberapa parameter tambahan dalam penggunaan SCP:
  • -r parameter ini digunakan bila kita akan mengirimkan sebuah folder, maka parameter “-r” akan dibutuhkan agar seluruh isi folder tersebut, termasuk file dan sub-folder juga ikut dicopy.
  • -P # parameter ini digunakan bila kita ingin menggunakan port selain port default yaitu port 22.
Mengambil File/Folder
Untuk mengambil file atau folder dari mesin/server yang kita maksud, gunakan perintah:
scp username@namadomain.tld:/nama/folder/asal/namafile.ext /folder/tujuan/lokal
Dari pembahasan di atas maka dapat disimpulkan bahwa :
  1. Secure Copy Protocol (SCP) adalah sebuah tool yang sangat berguna dalam mengirim dan menerima file melalui Secure Shell (SSH) di internet tanpa (atau dengan sedikit) resiko jalur kita terdeteksi oleh pihak lain.
  2. SSH dirancang untuk menggantikan protokol telnet dan FTP. SSH merupakan produk serbaguna yang dirancang untuk melakukan banyak hal, yang kebanyakan berupa penciptaan tunnel antar host. Dua hal penting SSH adalah console login (menggantikan telnet) dan secure filetransfer (menggantikan FTP), tetapi dengan SSH anda juga memperoleh kemampuan membentuk source tunnel untuk melewatkan HTTP,FTP,POP3, dan apapun lainnya melalui SSH tunel.

No comments:

Post a Comment