Tips Mengamankan Port SSH – Secure Shell


ssh

SSH sangat populer di pengguna Linux dan Unix varian lainnya. SSH adalah protokol utama yang digunakan untuk remote shell, sistem admnistrasi, pertukaran data, sinkronisasi dan secure tunnel (sebuah alternatif murah dari VPN, orang bilang “poor man’s VPN” :-) ). SSH lahir pada dekade akhir milenium lalu, dengan perkembangan yang sangat cepat, dan dimplementasikan untuk berbagai hal yang membutuhkan keamanan dengan cara yang murah dan mudah.

SSH sebenarnya didesain untuk menggantikan Telnet (di port standar 23 TCP): yang dalam operasinya mengirimkan informasi dalam bentuk teks biasa tanpa enkripsi atau pengacakan. Sementara SSH dengan port standar 22 TCP, menyediakan enkripsi sebagai standar komunikasinya, dengan metode public-key cryptography untuk mengautentikasi komputer yang diperbolehkan atau user/password jika diperlukan.

Kegunaan utama SSH adalah untuk memasuki sistem komputer di tempat lain yang terhubung melalui jaringan dengan cara yang aman. Tapi saat ini SSH dapat diturunkan untuk berbagai hal yang amat dibutuhkan dalam komputasi jaringan atau lebih besar lagi: internet.

Lewat SSH
Bertukar data dengan SSH dapat dilakukan dengan beberapa cara/protokol. Semuanya adalah subset dari SSH, artinya dapat digunakan dengan metode yang sama yang bisa dilakukan dengan SSH. Diantaranya adalah:

  • SCP/SFTP adalah metode bertukar data yang aman. Bedanya bahwa SCP tidak interaktif sehingga bisa diotomasi dengan script. SFTP secara interaktif hampir sama dengan FTP, tetapi aman karena baik informasi kredensial maupun data terenkripsi.
  • SSHFS (Secure Shell Filesystem) adalah implementasi filesystem pada FUSE. Pada SFTP atau SCP harus ada aksi untuk memindahkan file ke sistem/komputer lain tetapi SSHFS dapat memetakan sistem/komputer tersebut seolah menjadi bagian dari sistem/komputer lokal yang terhubung. Ini akan mempermudah transaksi data yang sering dilakukan, tanpa harus jabat-tangan jaringan dulu setiap saat data akan dipertukarkan.
  • Rsync over SSH adalah eksekusi rsync (protokol sinkronisasi jarak jauh) yang dilewatkan protokol SSH. Dalam hal ini Rsync dapat diterapkan langsung melalui SSH atau secara lokal dengan SSHFS pada sistem/komputer yang telah terpetakan ke lokal.
  • SSH Port Forwarding & Tunneling adalah cara SSH untuk meneruskan koneksi ke sebuah port yang normalnya tidak terenkripsi melalui tunnelling. Cara ini lazim digunakan untuk banyak service port yang tidak terenkripsi, misalnya: database, http, svn dan service lain pada sebuah sistem/komputer.

[tunnel1-1.gif]

SSH adalah hal yang generik di lingkungan Linux/BSD/Unix, tapi tidak demikian di Windows. Jadi implementasi SSH untuk berbagai keperluan di Linux tidak akan dibahas disini karena sudah biasa dan wajar saja.

SSH di Windows
[sftp.png]
Pada dasarnya SSH hanya sebuah standar protokol. Implementasinya secara luas digunakan di dunia opensource dengan OpenSSH-Server. OpenSSH-Server adalah paket yang hampir standar tersedia di semua distribusi Linux, Appliance berbasis Linux (RouterOS, UTM) dan varian Unix lainnya: OpenBSD, OpenSolaris, etc.

Windows menggunakan cara sendiri untuk bertukar data. Sayangnya standar yang umum terjadi adalah tidak adanya enkripsi. FTP service bisa diinstalasikan pada Windows varian, dari Windows 2000 prof, Windows XP Pro dan semua keluarga Windows Server. Maka SSH di Windows tidak secara generik tersedia, tetapi melalui pihak ketiga: para pengembang.

OpenSSH di Windows adalah salah satu yang bisa ditemukan. OpenSSH untuk Windows tersedia sebagai bebas berlisensi opensource varian dengan menggunakan pustaka Cygwin. Cygwin adalah semacam kumpulan pustaka yang membawa lingkungan mirip-Linux di Windows. Pustaka ini akan memungkinkan semua aplikasi berbasis sistem POSIX (Linux, BSD dan Unix) untuk dapat dijalankan di Windows. OpenSSH untuk Windows bisa dianggap implementasi SSH secara umum di Windows, yang dapat digunakan untuk keperluan apa saja yang memerlukan protokol SSH.

Untuk keperluan khusus misalnya juga bisa menggunakan cwRsync. cwRsync adalah rsync yang sudah dipaket dengan Cygwin, dan sudah dibundel pula dengan OpenSSH server.Secara mudah kita bisa menginstalasikan cwRsync di Windows dan memperoleh semua kemampuan SSH kecuali SCP. Jika sudah ada Rsync dan SFTP buat apa pula anda memerlukan SCP? Karena Rsync over SSH bisa diperlakukan/difungsikan seperti SCP dengan cara tertentu. Tetapi cwRsync juga menyediakan copSSH, jika kita lebih memerlukan SSH standarnya saja.

Untuk klien SSH di Windows, sudah tersedia banyak sekali, tergantung dari yang dibutuhkan. Jika hanya untuk remote shell, kita bisa menggunakan Putty, mRemote atau Poderosa. Jika hanya untuk bertukar data, sudah tersedia WinSCP, Filezilla dan OpenSSH/cwRsync client. Tunnelier termasuk yang multifungsi, dapat digunakan untuk remote shell, bertukar data dan port forwarding/tunneling sekaligus.

Mengamankan Windows dengan SSH
Salah satu cara mengamankan Windows anda adalah memasang firewall dan menutup semua port yang tidak diperlukan. Membuat Windows anda menjadi Fileserver memerlukan prosedur standar operasi yang ketat. Membuka file sharing membuat semua kredensial user dan data yang dipertukarkan dapat diendus oleh siapapun di dalam network. Pada desktop kerja yang tidak membuka service seperti http, print sharing dll, sebaiknya bahkan ditutup semua port akses dari luar dengan firewall.

Pada saat itulah SSH bisa dimanfaatkan dengan baik. Untuk bertukar data dan sinkronisasi dapat digunakan SFTP server dari OpenSSH, sementara untuk file sharing dapat digunakan langsung SSH client dari workstation lain. Jika diperlukan dapat pula digunakan SSHFS untuk Windows dengan Dokan. Dokan membuat koneksi SSH ke remote sistem/komputer dapat dipetakan ke sistem file lokal.
dokan.png
Dokan pada dasarnya adalah implementasi FUSE (Filesystem in Userspace) di Windows. Dokan membuat inisiasi pemetaan remote sistem/komputer memungkinkan dilakukan dari Windows, bukan sebaliknya. Jadi Windows client/workstation dapat memanfaatkan userspace di tempat lain melalui protokol SSH. Sehingga kita dapat bertukar file seolah lokal dan tetap aman lewat SSH.

Alternatif Lain: Virtualisasi
Dengan semakin banyak sistem virtualisasi tersedia bebas, maka virtualisasi bisa dimanfaatkan sebagai kanal SSH di Windows. Ambil saja Qemu, coLinux atau Virtualbox, lalu instalasikan sistem operasi Linux/BSD(openBSD, FreeBSD, NetBSD)/OpenSolaris, maka kita akan dapatkan lingkungan alamiah OpenSSH tanpa pustaka seperti Cygwin.

Ambil saja Virtualbox, dan instalasikan Debian/Ubuntu base system, lalu tambahkan OpenSSH-Server. Jika Virtualbox kita konfigurasikan untuk dapat membaca filesystem induknya, kita kita bisa dapatkan akses penuh lewat SSH ke filesystem Windows. Cara ini barangkali relatif mudah dan alami. Cygwin terkadang membuat aplikasi POSIX seperti OpenSSH atau lainnya berjalan lebih lambat di Windows dibandingkan di lingkungan Linux/Unix. Dengan Virtualisasi, Windows filesystem menjadi host yang dapat kita perlakukan sebagai tempat penyimpanan saja. Kontrol, manajemen dan pengelolaan filesystem dapat kita lakukan dari guest system: Debian/Ubuntu.

Kesimpulan
Service seperti fileserver bisa saja kita letakkan di Windows, dimana kita tidak akan cuma berurusan dengan keamanan tetapi juga dengan soal lisensi. Semakin banyak orang/user yang dilayani, semakin banyak lisensi yang harus kita beli untuk di Windows. Sebut saja misal: 100 user. Alternatif tangguh dari opensource adalah Samba. Mau berapa ratus user kita tak akan perlu kuatir dengan soal lisensi. Yang perlu kita pikirkan hanya kemampuan perangkat keras yang memadai untuk hal itu. Jika hanya untuk penggunaan bersama, kita dapat menghubungkan banyak sistem komputer secara aman dengan SSH (SFTP/SSHFS). SSH membuat kita terhubung dengan sistem/komputer lain, dan kanal untuk mengelola file di system/komputer lain. Dari Linux ke Windows, tak perlu rumit, mudah diimplementasikan, tersedia bebas dan tetap aman. Pilihannya kembali pada kita.

========================================================
Mengamankan Service SSH

SSH yaitu sebuah daemon untuk meremote sebuah komputer dari jauh dalam hal ini biasanya server yang akan diremote. Biasanya administrator sebuah server tidak bisa selalu ada ditempat maka ia menggunakan ssh untuk bisa meremote server tersebut dari jauh , mungkin dari rumahnya. Tetapi bila service ssh ini tidak dikonfigurasi dengan baik maka bisa menjadi senjata makan tuan dan digunakan oleh orang lain untuk meng hack server tersebut.
Bila kita membicarakan soal keamanan server maka mungkin ssh merupakan service yang paling banyak disukai para hacker karena melalui ssh mereka dapat masuk ke shell konsole dan dapat melakukan perintah untuk mengambil alih server tersebut. Maka apabila hacker melihat server yang akan ia hack membuka port ssh nya maka dia akan senang sekali dan itulah yang pertama akan ia serang. Jadi ssh merupakan pintu pertama pengamanan server anda dari serangan melalui network/internet.
Sekarang pertanyaannya bagaimana kita bisa mengamankan service tersebut. Pertama-tama kita harus tahu terlebih dahulu apakah SSH itu. OpenSSH merupakan sebuah aplikasi remote login yang dikembangkan untuk menggantikan rlogin dan rsh ,dengan ssh keamanan remote lebih tinggi karena menggunakan komunikasi yang terenkripsi antara dua host. Untuk lebih detailnya bisa anda cari sendiri di om google karena bila dijelaskan disini tentu akan panjang sekali. Untuk bisa melakukan ssh maka kita perlu menginstall aplikasi ssh-server dan ssh-client, ssh-server untuk host yang akan diremote dan ssh-client untuk meremote host. Tetapi biasanya semua distribusi linux biasanya sudah membundel ssh pada default instalasinya. Bila ssh belum terinstalai pada komputer anda maka gunakan manajemen paket pada distribusi linux yang anda gunakan untuk menginstall aplikasi ssh dari CD atau DVD instalasinya.

Nah setelah aplikasi ssh telah terinstall pada komputer anda sekarang kita mengkonfigurasinya agar aman dari tangan-tangan jahil yang mencoba masuk ke server kita menggunakan ssh. Oke sekarang kita buka file konfigurasi ssh pada “⁄etc⁄ssh⁄sshd.conf” , buka file tersebut dengan editor kesayangan anda. Karena saya menggunakan Fedora Core maka file tersebut berada di “⁄etc⁄ssh⁄sshd.conf” , mungkin berbeda pada distro lainnya tetapi biasanya ada pada direktori “⁄etc⁄ssh⁄” . Oke sudah dibuka file tersebut ,sekarang coba dibaca-baca dulu sebentar untuk melihat konfigurasinya mungkin saja anda bisa mengerti dan melakukan konfigurasi sesuai dengan keinginan anda. Jangan lupa backup dahulu file tersebut agar bila nantinya anda salah mengkonfigurasi masih ada file aslinya.

[root@www ~]# cp ⁄etc⁄ssh⁄sshd_config ⁄etc⁄ssh⁄sshd_config.old

Lalu buka file ⁄etc⁄ssh⁄sshd.conf
[root@www ~]# vim ⁄etc⁄ssh⁄sshd_config
Sudah belum baca-bacanya karena sekarang kita akan mengkonfigurasi file ini. Sekarang yang pelru diamankan adalah mencegah untuk login remote melalaui ssh dengan menggunakan user root kenapa kita melakukan ini , sekarang coba kita pikirkan apabila kita mencoba masuk ke server orang lain melalui ssh tentu kita perlu sebuah user yang ada pada server tersebutagar bisa login iya apa iya, kita pasti tidak tahu nama-nama user yang ada pada server tersebut bukan tetapi pasti ada satu user yang pasti ada pada server tersebut yang juga ada pada setiap server yang menggunakan linux sebagai OS nya, ya anda benar root pasti ada maka seorang hacker pasti akan mencoba user root pertama kali karena hanya user tersebut yang dia tahu yang pasti ada pada server. Apabila kita tidak mencegah dan membiarkan root bisa login melalui ssh maka mungkin saja hacker akan menggunakan user tersebut dan menggunakan brute force untuk mencari tahu passwordnya. Oleh karena itu jangan biarkan root bisa login melalui ssh. Udah ah penjelasannya sekarang konfigurasinya, pada file sshd.conf cari parameter PermitRootLogin parameter ini untuk menkonfigurasi apakah root bisa login atau tidak. Pada Fedora Core secara default parameter tersebut di comment dan default valuenya adalah yes jadi root bisa login menggunakan ssh. Mungkin pada distro lain default valuenya berbeda seperti pada Ubuntu default valuenya no. Jadi kita perlu mengubah parameter tersebut untuk mencegah root login , cari parameter ini pada file sshd.conf
#PermitRootLogin yes
Uncomment baris tersebut dan ubah valuenya menjadi no seperti ini
PermitRootLogin no
Sekarang coba restart service ssh anda dan coba ssh komputer anda dengan user root bila tidak bisa maka anda berhasil .Konfigurasi yang kedua yaitu membatasi inputan password salah , bila kita remote komputer melalui ssh bila password kita salah maka kita pasti disuruh mencoba lagi kita bisa membatasi inputan tersebut agar hacker tidak bisa menggunakan brute force untuk mengcrack password kita. Untuk bisa menset inputan password tersebut cari parameter berikut pada file sshd.conf
#MaxAuthTries 6
Secara default kita bisa input password 6 kali bila salah kita bisa merubah valuenya dengan uncomment parameter tersebut dan beri value dengan angka yang anda inginkan seperti ini
MaxAuthTries 3
Selanjutnya untuk lebih aman lagi kita harus membatasi user yang bisa melakukan ssh ke server kita karena user dalam komputer kita banyak dan hanya user tertentu saja yang bisa login ssh dan belum lagi user system⁄aplikasi jadi kita harus membatasi user yang bisa ssh. Untuk bisa melakukan itu tambah kan baris berikut pada bagian bawah file sshd.conf
AllowUsers namauser1 namauser2
Ganti namauser1 dan namauser2 dengan user yang anda inginkan, ingat user tersebut harus ada pada komputer anda. Anda juga bisa memblock user yang anda tidak inginkan untuk login ssh dengan menambahkan parameter berikut pada baris terakhir file sshd.conf
DenyUsers namauser1 namauser2
Jangan lupa ganti namauser1 dan namauser2 dengan user yang anda inginkan. Perlu saya tambahkan apabila anda mengunakan AllowUsers maka user lain yang tidak disebutkan pada parameter tersebut akan di deny dan apabila anda menggunakan DenyUsers maka user lain yang tidak disebutkan pada parameter tersebut akan bisa login jadi anda hanya perlu menggunakan satu parameter saja.
Kita juga bisa menset waktu dari user untuk user bisa meremote komputer kita jadi user akan automatic logout apabila telah logni melebihi waktu yang telah kita set. Untuk bisa memnegset waktunya cari parameter berikut ini
#LoginGraceTime 2m
Uncomment baris tersebut lalu ubah valuenya sesuai dengan yang anda inginkan seperti berikut ini saya menset waktu 1 jam untuk user dapat login
LoginGraceTime 60m
Lanjut lagi sekarang kita akan memanipulasi port uang digunakan ssh agar hacker tidak tahu yang masih cupu tidak tahu bahwa service ssh kita terbuka. Secara default port ssh adalah 22 tetapi kita bisa merubahnya menjadi nomor sesuai dengan yang kita inginkan. Untuk bisa mengubahnya cari parameter berikut ini
#Port 22
Uncomment baris tersebut dan ubah valuenya menjadi nomor port yang anda inginkan seperti ini saya akan memberi value 9000.
Port 9000
Maka sekarang ssh anda berjalan pada port 9000 kalo enggak percaya coba anda scan komputer anda dengan nmap
[root@www ~]# nmap localhost
Coba cari port 22 enggak ada kan adanya port 9000
Mungkin hanya ini saja komfigurasi yang bisa saya berikan anda bisa mencari sendiri konfigurasi lainnya dengan membaca manual pagenya ssh dengan perintah
[root@www ~]# man ssh
Lain waktu kita akan membahas bagaimana membuat user yang login menggunakan shell yang kita buat sendiri jadi user tidak bisa menggunakan perintah-perintah yang bisa dilakuakan pada shel biasa kita menset perintah-perintah pada shel yang kita buat tersebut.

permalink

2 Comments to “Tips Mengamankan Port SSH – Secure Shell”

  1. thknsss…bos

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: