Belajar SSH Tunnel dan NGROX


SSH (Secure Shell) client yang terhubung ke SSH server dapat menjalankan perintah untuk melakukan konfigurasi atau manajemen server yang diremote. Selain untuk kebutuhan remote server, SSH juga dapat menjadi protokol untuk transfer file dengan menggunakan SCP (Secure Copy) dan SFTP (Secure FTP). Masih ada lagi yang dapat kita lakukan dengan protokol SSH ini, yaitu SSH Tunneling.

SSH Tunneling

Dengan menggunakan SSH Tunneling, memungkinkan kita untuk mem-forward sebuah port dari remote server ke local atau sebaliknya, dapat juga berfungsi sebagai Proxy server. Lebih mudah dalam konfigurasi dibandingkan dengan Virtual Private Network, yang bertujuan untuk mengamankan komunikasi private network melalui public network.

Ada 3 tipe SSH Tunneling yang masing-masing memiliki tujuan berbeda, yaitu Local Port Forwarding, Remote Port Forwarding, dan Dynamic Port Forwarding. Semuanya dapat dilakukan dengan menggunakan perintah ssh (OpenSSH client) di Linux, macOS, dan sistem operasi Unix-like lainnya. Di Windows kita dapat menggunakan SSH client seperti PuTTY atau Xshell.

Local SSH Port Forwarding

Tipe ini mem-forward port yang diminta di local ke remote server. Misalnya kita ingin mengakses sebuah aplikasi web yang berada di remote server, tetapi terhalang firewall, sehingga tidak bisa diakses secara langsung, hanya komputer yang berada dalam satu private network yang bisa mengaksesnya.

Perintah Local SSH Port Forwarding

ssh -L local_port:remote_address:remote_port user@ip-server

Kasus untuk akses aplikasi

ssh -L 8888:178.128.86.173:80 root@178.128.86.173

Local SSH Port Forwarding Menggunakan PuTTY



Setelah menjalankan perintah tersebut, kita dapat mengakses aplikasi web http://localhost:8888. Ketika mengakses http://localhost:8888, sebenarnya kita sedang mengakses http://178.128.86.173 pada remote server.

Remote SSH Port Forwarding

Tipe ini merupakan kebalikan dari Local SSH Port Forwarding atau biasa juga disebut Reverse SSH Port Forwarding. Misalnya aplikasi yang ada di komputer local ingin dapat diakses di internet.

Perintah Remote SSH Port Forwarding

ssh -R remote_port:local_address:local_port user@ip-server

Kasus aplikasi web di local

ssh -R 8888:localhost:80 user@ip-server

Remote SSH Port Forwarding Menggunakan PuTTY



Di sisi server lakukan konfigurasi pada SSH server

sudo nano /etc/ssh/sshd_config

Aktifkan opsi di bawah ini dengan melepas tanda #. Hal ini dilakukan agar SSH server menjadi Gateway dan mem-forward paket TCP, sehingga yang ingin mengakses aplikasi web tidak harus melakukan Local SSH Port Forwarding ke server atau berada dalam satu network dengan server.

AllowTcpForwarding yes

GatewayPorts yes

Sekarang kita mengakses http://178.128.86.173:8888, yang diakses sebenarnya adalah web server pada komputer local.

Dynamic SSH Port Forwarding

Tipe ini sama seperti proxy atau VPN. Misalnya kita ingin mengakses sebuah web secara aman, menyembunyikan Public IP Address, lokasi geografis, atau mengakses website yang hanya bisa diakses dari negara tertentu saja. SSH client akan membuat SOCKS proxy yang nantinya dikonfigurasikan ke sistem operasi atau web browser.

Perintah Dynamic SSH Port Forwarding

ssh -D local_port user@ip-server

Kasus membuat SOCKS proxy

ssh -D 8888 user@ip-server

Dynamic SSH Port Forwarding Menggunakan PuTTY



Setelah itu pasang SOCKS proxy di web browser, localhost dengan port 8888.



Dengan menggunakan SOCKS proxy, website yang kita akses melalui perantara server, sehingga yang terbaca mengunjungi website adalah IP server bukan IP komputer local kita.

Mengenal Ngrok

Ngrok adalah proxy server untuk membuat atau membuka jaringan private melalui NAT atau firewall, lalu Menghubungkan localhost ke internet dengan tunnel yang aman. Atau bahasa gampangnya ngrok adalah layanan gratis yang memberikan kemampuan kepada aplikasi kita agar bisa diakses online. Cara bacanya "N jin rok".

Berikut beberapa kegunaan dari ngrok:
  • Demo tanpa mendeploy
    Sobat punya program lalu ingin ditest tanpa harus repot-repot menaruh file di server hosting? ngrok inilah salah satu pilihannya, dengan ngrok kita dapat secara langsung menunjukan hasil program yang ada di komputer / localhost ke komputer client melalui internet.
  • Mempermudah pengujian di perangkat mobile
    Program yang kita selesaikan kadang perlu diuji dibeberapa perangkat mobile untuk memastikan apakah program dapat berjalan baik. 
  • Membuat jaringan private 
    Ya dengan ngrok ini, anda mempunyai jaringan private untuk menjalankan layanan personal cloud yang fungsinya untuk mensinkronisasi file, menjalankan webmail dari hardware anda secara aman menggunakan end-to-end encryption.

Mendapatkan authtoken di Ngrok

Berikut ini adalah langkah - langkah untuk mensetting Ngrok pada aplikasi :
  1. Mendaftar akun di situs https://ngrok.com/
  2. Masuk ke menu Getting Started -> Your Authtoken
  3. Silahkan copy authtoken Anda.
Menjalankan aplikasi NGROK

Download terlebih dahulu ngrok di https://ngrok.com/download pilih platform yang sobat gunakan, pada saat ini saya menggunakan ngrok di windows 10.

Jika sobat sudah selesai mendownload, silahkan unzip file tersebut. lalu buka file .exe berikut tampilan nya.



Untuk me-run silahkan sobat ketik ngrok http 80 jika tidak ada error tampilannya akan terlihat seperti dibawah berikut.





Sampai disini sobat sudah berhasil menjalankan ngrok, ngrok menyediakan real time web user interface untuk memeriksa traffic dari file yang di akses. Silahkan sobat ketik di url browser localhost:4040 jika tidak ada masalah, tampilannya akan terlihat seperti berikut. 



Klik link dari salah satu link yang ada, sobat akan dibawa ke daftar folder dan file yang ada di localhost. Untuk melihat traffic dari file yang diakses silahkan kunjungi http://localhost:4040/inspect/http.



Untuk tambahan, apabila sobat ingin memberi password sebelum client / orang lain yang ingin mengakses, silahkan sobat tutup command prompt lalu buka kembali dan perintahnya seperti berikut.

ngrok http -auth="username:password" port

Sebagai Contoh

ngrok http -auth="root:321" 8080

Maka ketika membuka localhost:4040 di browser akan muncul semacam alert agar memasukan username dan password untuk keperluan autentikasi.






Catatan:
  • Referensi artikel https://musaamin.web.id/apa-itu-ssh-tunneling/
  • Referensi artikel https://yapsamuel.blogspot.com/2016/12/pengertian-ngrok-dan-kegunaannya.html
  • Gambar dari https://www.freepik.com/free-photo/architecture_1007099.htm

Komentar

Postingan populer dari blog ini

SIPD Chrome Extension untuk Migrasi Data dari SIPD ke SIMDA PINK Th. Anggaran 2022

FMIS Chrome Extension untuk Integrasi Data SIPD ke FMIS

Mapping Sumber Dana di WP-SIPD