Langsung ke konten utama

SSH Port Forwarding | Fitur Joss yang Mungkin Belum Anda Ketahui



Beberapa praktisi IT biasanya membutuhkan IP publik agar perangkatnya dapat diakses dari jarak jauh (remote acccess). Banyak sekali kasus perangkat remote tersebut terhubung dengan internet yang memiliki IP private (dibelakang NAT) atau IP dinamis. (Berkaitan dengan NAT, IP private dan dinamis, silahkan telusuri lebih lanjut di Wikipedia)



Solusi yang pernah saya temui untuk menghadapi permasalahan tersebut diantaranya:
1. Menyewa IP publik dari provider. Beberapa rekan-rekan meyakini ini adalah solusi yang simpel. Namun tidak semua provider bersedia menyewakan IP publik lantaran isu utama kelangkaan IPv4
2. Membuat VPN dan melakukan routing atau port forwarding. Anda harus melakukan konfigurasi VPN server dan mengotentikasi perangkat yang akan digunakan. Setelah semuanya selesai, anda berhasil membuat jaringan internal baru dan bebas melakukan apa saja terhadap perangkat remote. Sayang sekali, saya dan mungkin rekan-rekan mengeluhkan tentang tahapan yang cukup banyak untuk dilakukan. Dan kedua perangkat harus terhubung di server VPN yang sama.
3. SSH remote port forwarding. Ini adalah solusi yang akan saya bahas. Saya mengambil solusi ini karena perangkat remote hanya perlu melakukan otentikasi saja dan konfigurasi yang lebih sedikit dari poin nomor 2.


Prerequisite
Memahami dasar SSH dan bagaimana caranya untuk terhubung dengan SSH server.


Apa itu SSH
SSH adalah sebuah protokol yang memungkinkan pengguna untuk melakukan remote access berbasis teks. SSH juga bisa digunakan sebagai media tunnel bagi anda yang ingin mengkases alamat tertentu sekaligus melewati batasan firewall. Sebagaimana namanya, tunnel merupakan sebuah terowongan maya yang digunakan untuk melewatkan data dari pengirim ke tujuan. Hal tersebut akan membuat seolah rute yang dilalui adalah rute bypass. Jika diperhatikan, SSH tunnel adalah sebuah konsep yang mirip sekali dengan port forwarding.

Tunnel yang diciptakan oleh SSH adalah jenis terowongan terenkripsi dan aman dari eavesdropping.


SSH Tunnel
Pembahasan berikut mungkin terlalu umum dan menjauh dari topik permasalahan, namun tidak ada salahnya mungkin akan sangat membantu.
Secara garis besar, kita dapat menggunakan SSH tunnel dengan 3 mode, diantaranya:

1. Local Port Forwarding (-L)
Adalah jenis port forwarding dimana setiap permintaan yang masuk ke PC anda dengan port tertentu, akan diteruskan ke alamat tujuan melalui SSH server.

Sintaks: ssh -L l_port:r_address:r_port user@ip_SSH_server -p ssh_port

Contoh: ssh -L 9000:ftp.debian.org:80 user@ip_SSH_server -p 22

Pada contoh diatas, PC anda akan membuka local port 9000. Setiap anda mengakses localhost:9000 (misalkan melalui browser), trafik tersebut akan diarahkan ke SSH server melalui tunnel, selanjutnya SSH server akan meneruskannya ke ftp.debian.org:80


contoh: ssh -L 9000:127.0.0.1:80 user@ssh.server -p 22

Nah, untuk contoh ini sedikit menipu. Perintah diatas menyatakan bahwa setiap akses dari PC anda ke localhost port 9000 maka akses tersebut akan diteruskan ke 127.0.0.1 port 80. Lho berarti loopback dong?

Tidak!

127.0.0.1 yang dimaksud adalah localhost milik SSH server, bukan milik PC anda. Sehingga ketika anda mengakses dari PC anda ke localhost port 9000, maka permintaan tersebut akan diteruskan ke SSH server, selanjutnya SSH server akan mengakses 127.0.0.1 (yaitu memanggil SSH server itu sendiri).


SSH local port forwarding sangat membantu apabila anda ingin keamanan super ketat dan mem-filter seluruh port kecuali diakses oleh localhost.

2. Remote Port Forwarding (-R)
Remote Port Forwarding adalah kebalikan dari Local Port Forwarding. Yaitu jenis port forwarding dimana setiap permintaan yang masuk ke SSH server dengan port tertentu, akan diteruskan ke alamat tujuan melalui PC anda.

Sintaks: ssh -R r_port:r_address:l_port user@ip_SSH_server -p ssh_port

Contoh: ssh -R 8080:127.0.0.1:80 user@ip_SSH_server -p 22

Pada contoh diatas menyatakan setiap permintaan yang masuk ke SSH server dengan port 8080 akan diteruskan ke 127.0.0.1 port 80 (nah untuk remote port forwarding, 127.0.0.1 adalah localhost milik PC anda). Dengan kata lain, komputer anda yang berada dibelakang NAT atau memiliki IP private dapat diakses dari manapun melalui SSH server yang memiliki IP public.

Contoh lainnya misal: ssh -R 8080:192.168.10.1:80 user@ip_SSH_server -p 22

Sintaks diatas berbunyi apabila ada permintaan yang masuk ke SSH server dengan port 8080 maka server akan meneruskan permintaan tersebut ke PC anda, selanjutnya PC anda akan mencari alamat 192.168.10.1 dan mengakses port 80 pada alamat itu.

Remote port forwarding adalah solusi terbaik untuk masalah yang saya jabarkan pada pembuka artikel.

3. Dynamic Port Forwarding (-D)
Konsep dasar SSH port forwarding sebenarnya mirip sekali dengan proxy, namun pada pembahasan sebelumnya, pengguna harus menspesifikasikan baik remote address:port atau local address:port. Lalu bagaimana jika pengguna ingin menggunakan banyak address dan port sekaligus? Tentu akan merepotkan menuliskan ratusan bahkan ribuan address dan port. Selain itu, jika anda mengakses sebuah situs, beberapa diantaranya memiliki URL absolute jadi anda tidak bisa (sulit) memanfaat SSH local port forwarding.

Anda dapat menggunakan SSH sebagai proxy server dengan dynamic port forwarding dan memanfaatkan fitur SOCKS. SOCKS akan membantu anda mengarahkan seluruh paket yang datang dari komputer anda ke alamat dan port tertentu. Solusi ini sangat cocok bagi anda yang memiliki akses terbatas pada situs-situs tertentu (misalkan situs porno - bokep, red).

Sintaks: ssh -D r_port user@ip_SSH_server -p ssh_port

Contoh: ssh -D 1080 user@ip_SSH_server -p 22

Perintah diatas akan menghubungkan komputer anda dengan SSH server kemudian menjadikan komputer anda sebagai local proxy pada port 1080.

Selanjutnya, anda tinggal mencari sebuah aplikasi yang dapat mengarahkan permintaan komputer anda ke port tersebut (misalkan Proxychains)



NOTE
Ada beberapa hal yang perlu diperhatikan jika anda menggunakan fitur ini, diantaranya.
1. Pastikan konfigurasi pada sshd_config AllowTCPForwarding sudah yes atau all (secara default sudah)
2.  Jika anda ingin memberikan akses tunnel pada komputer lain, pastikan anda menyematkan opsi -g pada perintah. Contoh: Anda ingin memberikan akses VNC di SSH server pada teman melalui komputer anda.
Sehingga sintaksnya menjadi: ssh -g -L 9000:localhost:5091 user@ip_SSH_server -p 22
Teman anda tinggal mengakses VNC dengan alamat komputer anda dan port 9000
3. Secara default SSH akan memberikan akses shell pada komputer anda. Anda bisa menonaktifkan hal tersebut dengan memberikan opsi -N.
misalkan ssh -g -N -L 9000:localhost:5091 user@ip_SSH_server -p 22
4. Walaupun opsi -N membuat komputer anda keluar dari shell namun anda tidak boleh menutup jendela yang digunakan untuk terhubung dengan SSH server. Agar SSH client dapat berjalan pada background, gunakan opsi -f dan arahkan semua output baik itu stdout atau stderr ke blackhole.
Misalkan: ssh -g -f -N -L 9000:localhost:5091 user@ip_SSH_server -p 22 &> /dev/null
5. Port yang kurang dari 1025 atau 1-1024 (well-known port) harus menggunakan akses root untuk login ke SSH server. 
6. Jika anda ingin komputer lokal anda dapat diakses dari internet melalui SSH server, anda harus mengaktifkan gatewayport pada /etc/ssh/sshd_config.


Itu saja dari saya. Semoga artikel ini membantu kawan-kawan terutama praktisi IT.






Sumber:
Dev.to. (2020). The How To Of Port Forwarding With SSH - DEV Community 👩‍💻👨‍💻. [online] Available at:
Ssh.com. (2020). SSH port forwarding - Example, command, server config. [online] Available at:

P.S

Komentar

Postingan populer dari blog ini

Hubungan Manis antara Conan Edogawa dan Haibara Ai.

( Hubungan Manis antara Conan Edogawa dan Haibara Ai)  Halo para Conaners, tahu kenyataan unik nggak. Ternyata Haibara Ai tuh demen lho sama Conan Edogawa. Tapi dia berusaha menyembunyikannya lantaran dia udah tau kalo Conan (Shinichi) tuh suka dan cinta sama Ran. Haibara yang kita ketahui mempunyai kepribadian dingin ini, tak gampang putus asa nih buat nunjukin kegigihannya untuk mendapatkan perhatian dari Conan. Yuk kita lihat, usaha apa saja yang dilakukan Haibara untuk menaklukan Conan :

Live Streaming ke Banyak Media Sosial

Beberapa dekade terakhir, banyak sekali para gamer yang "nyambi" cari uang dengan melakukan live stream di media sosial terutama Facebook. Sebenarnya saya juga mulai kesel karena para fans live streamer sering membagikan live streaming-nya ke grup Facebook. Sehingga grup Facebook yang awalnya diperuntukkan sebagai media diskusi malah jadi ajang pencarian views. Spam dan annoying banget.

Instalasi FreeRADIUS ft. daloRADIUS | [UPDATE - Study case pada Debian Buster]

NOTE: Artikel ini telah mengalami perubahan. Sebelumnya, versi sistem operasi yang saya gunakan adalah Debian Wheezy. Dengan menggunakan Debian Buster beberapa versi package  juga ikut berubah. Update package akan saya beri warna font merah Remote Authentication Dial-In User Service atau sering disebut dengan RADIUS adalah sebuah protokol jaringan yang melayani administrasi pengguna dalam penggunaan jaringan secara terpusat. Aspek pelayanan yang diberikan meliputi  Authetication, Authorization dan Accounting  yang kemudian disingkat AAA atau triple A . RADIUS akan sangat dibutuhkan oleh provider skala besar, misalkan  Internet Service Provider (ISP) . Untuk platform MikroTik, RADIUS sering dikenal dengan userman ( user manager ) karena tugasnya memang manajemen pengguna.