Apa Itu Tunneling atau Port Forwarding?

Tunneling atau port forwarding adalah proses pengiriman data yang seharusnya hanya digunakan dalam jaringan privat — biasanya jaringan internal perusahaan — melalui jaringan publik, dengan cara yang membuat node routing di jaringan publik tersebut tidak menyadari bahwa data tersebut sebenarnya bagian dari jaringan privat. Teknik ini memungkinkan kita untuk menggunakan internet, yang merupakan jaringan publik, untuk menyampaikan data atas nama jaringan privat.

Mengenal Konsep Tunneling

Tunneling adalah teknik untuk mengalihkan traffic jaringan dari satu port ke port lainnya, agar akses ke traffic dan layanan jaringan bisa dilakukan secara aman, termasuk dari luar jaringan maupun melewati firewall. Sederhananya, tunneling adalah teknik pengalihan port di mana traffic masuk melalui satu port dan diteruskan ke port lain. Biasanya, data dari jaringan privat dan informasi protokol dikemas (encapsulated) dalam jaringan publik, sehingga data bisa lewat dengan aman. Saat ini ada beberapa protokol tunneling yang sering digunakan, contohnya Generic Routing Encapsulation (GRE).

Generic Routing Encapsulation

GRE adalah salah satu protokol tunneling yang umum digunakan dan dikembangkan oleh Cisco. Pada GRE, paket data yang menggunakan satu protokol routing dibungkus (encapsulated) dalam paket lain yang menggunakan protokol berbeda. Proses encapsulation inilah yang jadi dasar penamaan protokol ini.
GRE mempermudah koneksi antar jaringan yang terpisah dengan membuat sambungan langsung point-to-point. Dengan encapsulation, sebuah paket bisa melewati jaringan yang sebelumnya tidak bisa dilewati. Misalnya, ketika paket data harus dikirim antar LAN di dua lokasi fisik yang berbeda. Walaupun kedua LAN tersebut menggunakan protokol yang sama — misalnya IPv6 — mungkin saja traffic harus melewati jaringan pihak ketiga yang hanya mendukung IPv4. Nah, GRE bisa mengatasi perbedaan ini dengan cara membungkus paket IPv6 dalam paket IPv4, sehingga bisa melewati jaringan pihak ketiga tadi.

Apa Itu SSH Tunneling?

Pada SSH tunneling atau SSH port forwarding, dibuat koneksi SSH terenkripsi antara client dan server — atau antara host lokal dan remote. Port layanan bisa disalurkan lewat koneksi ini. SSH akan menerima permintaan layanan dari mesin client dan membuat koneksi untuk meneruskan permintaan tersebut ke mesin server. Permintaan dari client didekripsi dulu, lalu dikirim ke server. SSH tunneling hanya bisa digunakan kalau baik client maupun server sudah punya konfigurasi SSH.
SSH tunneling sering digunakan untuk melewati firewall. Sysadmin — dan juga pelaku serangan siber — memanfaatkannya untuk membuka akses (backdoor) ke jaringan internal dari jarak jauh.

Ada tiga jenis SSH tunneling yang umum digunakan:

1. Local Port Forwarding

Local port forwarding digunakan untuk meneruskan port dari client SSH ke server agar resource remote, seperti layanan internal atau yang ada di balik firewall, bisa diakses secara lokal. Pertama-tama, client akan mendengarkan koneksi pada port tertentu. Kalau ada koneksi masuk, maka koneksi itu akan diteruskan — alias ditunnel — ke server SSH, yang kemudian menyambungkannya ke port tujuan yang ditentukan.
Contoh sintaks untuk local port forwarding di OpenSSH:

ssh -L 80:intra.example.com:80 gw.example.com

2. Remote Port Forwarding

Remote port forwarding memungkinkan akses ke resource lokal dari remote. Jadi kalau konfigurasi remote forwarding sudah dilakukan, siapa pun yang ada di server remote bisa terhubung ke port TCP tertentu — misalnya 8080 — pada server remote tersebut. Teknik ini berguna kalau karyawan tidak bisa mengakses sistem kantor atau web server internal dari luar.
Contoh sintaks remote port forwarding di OpenSSH:

ssh -R 8080:localhost:80 public.example.com

3. Dynamic Port Forwarding

Tujuan utama dynamic port forwarding adalah untuk menyalurkan banyak port sekaligus dan memungkinkan komunikasi melalui port-port tersebut. Di sini, SSH bertindak seperti proxy server. Proxy ini dijalankan di mesin lokal (client SSH). Saat client terhubung ke mesin tersebut, koneksi diteruskan ke mesin remote (server SSH), lalu ke port dinamis di mesin tujuan. Dengan metode ini, semua koneksi menuju server SSH akan diteruskan ke destinasi akhirnya.
Di Linux, macOS, dan sistem Unix lainnya, dynamic port forwarding bisa dikonfigurasi dengan sintaks berikut:

ssh -D [LOCAL_IP:]LOCAL_PORT [USER@]SSH_SERVER

Keuntungan Menggunakan Tunneling

Keuntungan utama dari tunneling adalah pengguna bisa mengakses traffic jaringan dengan aman, bahkan jika ada firewall. Organisasi bisa menggunakan tunneling untuk membuat koneksi VPN dan memungkinkan pengguna mengakses data perusahaan dari lokasi yang aman.
Dengan SSH tunneling, data bisa dikirim ke sistem remote sambil menghindari protokol keamanan firewall standar. SSH tunnel ini terenkripsi, sehingga data yang dikirim tetap aman dari penyadapan atau serangan lainnya.

Local port forwarding sangat berguna untuk memungkinkan pengguna remote mengakses layanan dan file yang ada di jaringan internal. Remote forwarding juga berguna untuk memberikan akses ke web server internal dari luar jaringan, asalkan pengguna tersebut sudah diizinkan. Tapi, perlu diingat juga kalau penyerang bisa menyalahgunakan remote forwarding untuk mengekspos web application internal ke internet publik. Karena itu, sysadmin dan tim IT harus hati-hati saat mengatur tunnel dan memberikan akses remote ke sistem internal perusahaan.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *