Wildan's Workspace

Ngrok - Make Your localhost Accessible Publicly

Posted on 6 mins

Cyber Security Ngrok Tutorial

Ngrok?

Ngrok bagi sebagian orang mungkin sudah faniliar karena sering digunakan untuk berbagai kebutuhan. Tapi, bagi yang belum tahu, ngrok secara sederhana dapat didefinisikan sebagai aplikasi yang memungkinkan kita untuk mem-publish server lokal kita di localhost ke publik dengan aman. Artinya, service seperti misalnya web di localhost (http) atau bahkan SSH dan RDP dapat diakses di luar jaringan secara aman melalui bantuan dari Ngrok ini. Untuk detail teknisnya sebentar lagi kita akan lihat demonya.

Oiya, untuk spelling atau cara baca nama aplikasi ini saya juga tidak terlalu yakin, tapi saya menyebutnya dengan en-ji-rok, bukan en-grok apalagi nge-rok.

Instalasi

Merujuk pada halaman official Ngrok, kita dapat menginstall Ngrok di

  1. Windows
  2. Mac OS
  3. Linux
  4. Docker, dan
  5. FreeBSD

Namun, di blog ini, saya hanya akan melampirkan detail instalasi di linux saja karena setidaknya 2 alasan:

Jadi, untuk kalian yang menggunakan sistem operasi selain linux (khususnya debian-based distro), silakan merujuk ke halaman official Ngrok di sini:

https://ngrok.com/download

Di halaman official-nya tersebut, dijelaskan secara detail cara melakukan instalasi Ngrok di setiap sistem operasi.

Instalasi Ngrok di Linux

Kita dapat menginstall Ngrok dengan 3 cara:

  1. Via zip file
  2. Via apt (debian-based only)
  3. Via snap

Via Zip File

Jika ingin menginstall via zip file, kita perlu memilih dan mengunduh file zip-nya terlebih dahulu sesuai dengan arsitektur sistem operasi linux yang kita gunakan. ss1

Saya akan mengunduh file x86-64 karena arsitektur OS saya memang x86_64.

Untuk mengecek arsitektur komputernya, kita dapat mengetikkan perintah berikut di terminal:

arch

ss2

Setelah selesai mengunduh file zip-nya, kita dapat mengetikkan perintah berikut di terminal untuk menginstallnya"

 sudo tar xvzf ~/Downloads/ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin

Pada dasarnya, perintah tersebut akan mengekstrak file binary dari file zip tersebut untuk kemudian disimpan di PATH /usr/local/bin.

Atau kalau kita mau melakukannya secara manual, kira-kira bentuknya sama dengan perintah berikut: ss3

Dengan demikian, Ngrok sudah berhasil kita install di komputer kita via zip file.

Via apt

Untuk melakukan instalasi via package manager (apt), kita dapat mengetikkan perintah berikut di terminal:

 curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list && sudo apt update && sudo apt install ngrok

Apa yang dilakukan oleh perintah tersebut? Mari kita bedah…

Sampai sini, kita sudah berhasil menginstall Ngrok via apt.

Via Snap

Untuk menginstall via snap, kita cukup mengetikkan perintah berikut di terminal:

snap install ngrok

Perlu diketahui, snap juga berfungsi seperti package manager, jadi, sebelum dapat menginstall Ngrok via snap, kita terlebih dahulu juga perlu menginstall snap.

sudo apt install snap

Ngrok berhasil diinstall via snap.

Demo

Kita masuk ke bagian inti sekarang, yaitu demonstrasi penggunaan Ngrok untuk keperluan publish layanan di localhost ke publik.

Tapi, sebelum kita masuk ke detail demo, kita perlu memastikan bahwa kita sudah menginputkan token ke konfigurasi Ngrok, yaitu dengan mengetikkan perintah:

ngrok config add-authtoken <token>

Token tersebut hanya bisa didapatkan jika kita sudan membuat akun di website Ngrok1. Jadi, jika kalian belum punya akun di Ngrok, silakan buat akun terlebih dahulu.

Jika sudah membuat akun, token Ngrok dapat ditemukan di menu Your Authtoken. ss7

Di sini, saya akan mendemokan penggunaan Ngrok untuk mengekspos 3 services, yaitu

Web Server

Saya akan menggunakan salah satu layanan web server dari Python, yaitu updog di port 8000: ss4

Oke, web server sudah berjalan di localhost:8000 yang menyediakan akses untuk semua file di komputer lokal saya, secara spesifik di direktori /home/wildan/ngrok. ss5

Sekarang, kita akan mengekspos web saya di localhost tersebut dengan ngrok.

Caranya, saya akan mengetikkan perintah berikut di terminal:

ngrok http 8000

Perintah tersebut berarti memintah ngrok untuk menyediakan URL untuk web server di port 8000 di komputer kita.

Setelah mengetikkan perintah tersebut, maka ngrok akan menyediakan URL yang sudah kita minta sebagai berikut: ss6

Kalau saya membuka link yang terdapat di bagian Forwarding tersebut, kita akan menjumpai web server updog saya sama persis yang berjalan di localhost:

https://4383-2001-448a-114c-1db0-3d52-30e6-64dd-2511.ngrok-free.app ss8

Note: Link tersebut hanya aktif selagi saya masih menjalankan ngrok

SSH

Pada skema SSH ini, saya akan menggunakan laptop saya ini sebagai server yang menjalankan SSH (Secure Shell) server. Kemudian, saya akan mencoba melakukan remote login dari URL Ngrok via android (aplikasi Termius ). ss14

Pertama-tama, saya akan jalankan SSH server terlebih dahulu.

sudo systemctl start ssh

ss9

Oke, terpantau SSH server sudah ready di port 22.

Sekarang, saya akan buat tunnel-nya dengan Ngrok.

ngrok tcp 22

ss10

Oke, Ngrok sudah running tanpa kendala.

Kemudian, di Termius, saya mengetikkan perintah berikut:

ssh wildan@0.tcp.ngrok.io:14826

ss11 Login via SSH di Termius.

ss12 Acc fingerprint, kemudian input password, dan …

ss13 Boom! Berhasil login!

Via RDP

Di skema RDP (Remote Desktop Protocol) ini, saya juga akan menggunakan laptop saya ini sebagai server dan kemudian client-nya akan menggunakan android (via aplikasi Remote Desktop . ss15

Pertama-tama, saya akan jalankan server RDP-nya terlebih dahulu…

sudo systemctl start xrdp

ss16

Server RDP sudah berjalan di port 3389.

Sekarang, kita akan jalankan ngrok.

ngrok tcp 3389

ss17 Sip, Ngrok juga sudah running dengan baik…

Sekarang, saya akan coba me-remote laptop saya ini via RDP di android. ss18

Berhasil RDP!

Walaupun belum bisa login (karena entah kenapa saya juga gak paham), tapi setidaknya sudah terbukti bahwa kita bisa melakukan akses jarak jauh via RDP menggunakan bantuan Ngrok.

Poin minus Ngrok

Tentu, Ngrok sebagai aplikasi biasa juga memiliki kekurangan. Beberapa kekurangan Ngrok menurut saya adalah

upgrade Ngrok ke versi berbayar.

Okey, okey, sekian dulu tutorial tentang Ngrok kali ini.

Sebelum ditutup, satu lagi catatan saya ketika kalian mau menggunakan Ngrok untuk mengekspos server lokal kalian ke publik adalah mempertimbangkan juga mengenai isu keamanan (security). Jangan sembarangan mengekspos layanan penting seperti SSH ke sembarang jaringan kecuali 3 hal:

  1. kalian sudah mengkonfigurasi service tersebut dengan aman (misalnya passwordnya susah dan panjang).
  2. kalian sudah memahami resiko mengekspos layanan penting ke publik (misalnya jadi bahan bruteforce para hacker.
  3. kalian siap menerima konsekuensi atau akibat dari kecerobohan kalian (misalnya laptop kalian kena hack.

Demikian, semoga bisa jadi pertimbangan…

Sampai jumpa lagi di blog saya selanjutnya!!!

See you!