Cara Menggunakan SSH Tunneling di GNU/Linux

Cara Menggunakan SSH Tunneling di GNU/Linux -  Kali ini saya akan membahas sedikit tentang SSH Tunneling. Saat kita menggunakan layanan internet di area publik (misalnya di bandara), alangkah baiknya kalian juga memperhatikan masalah privasi karena bisa saja di layanan wifi publik seperti itu ada "hacker" yang sedang menyadap lalu lintas pengguna. Nah, salahsatu cara mengantisipasinya adalah dengan mengenkripsi trafik dari device kita menggunakan SSH Tunneling.
Oke sebagai pendahuluan, sebenarnya manfaat lain dari SSH Tunneling adalah untuk resource lokal kita bisa diakses di server maupun sebaliknya.


Local Port Forwarding
Ini memungkinkan kita untuk mengakses resource yang ada di server dan mengakses nya di local. Sebagai contoh, kita ingin login ke database mysql yang ada di server namun  via local. Ya ini hanya contoh saja, agar lebih mudah dipahami. Implementasi lainnya masih banyak.

ssh -L 1337:localhost:3306 root@server.linuxsec.org -p 22

Perintah ini untuk membuat kita dapat mengakses service database MySQL di port 3306 (default mysql port) milik server.linuxsec.org melalui local di port 1337.  Jadi maksud dari "localhost" di perintah tersebut adalah localhost dari sisi server.linuxsec.org, bukan localhost di local machine kita.

Selanjutnya kita coba akses service database mysql nya melalui local machine kita.
mysql -u linuxsec -p -P 1337 -h 127.0.0.1

Maka kita akan masuk ke database milik server.linuxsec.org melalui local machine kita. Contoh output:

root@local-machine:~# mysql -u linuxsec -p -P 1337 -h 127.0.0.1
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.22-0ubuntu18.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

Remote Port Forwarding
Kebalikan dari fungsi diatas, remote port forwarding memungkinkan server untuk mengakses resource local machine kita. Bedanya hanya ada di syntax -L dan -R .
ssh -R 1337:localhost:3306 root@server.linuxsec.org -p 22
Perintah diatas untuk membuat kita dapat mengakses database local machine kita melalui server.linuxsec.org. Jadi "localhost" yang dimaksud disini adalah localhost milik local machine, bukan milik server.linuxsec.org.

Selanjutnya kita akses database melalui server.linuxsec.org
mysql -u local -p -P 1337 -h 127.0.0.1


Contoh output:

root@remote-server:~# mysql -u local -p -P 1337 -h 127.0.0.1
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 5.5.5-10.1.29-MariaDB-6 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
Dynamic Port Forwarding
Hal ini memungkinkan service SSH kita jadikan SOCK proxy. Inilah yang menjadi topik utama pembahasan kali ini. Jadi nantinya saat kita berselancar di internet trafik dari local machine akan dilewatkan melalui proxy server. Hampir sama dengan local port forwarding sebenarnya.

Oke perintahnya adalah:
ssh -fND 1337 root@server.linuxsec.org  -p 22

Perintah diatas untuk membuat SOCK proxy di port 1337. Opsi f sendiri agar command ssh berjalan di background. Karena kita sendiri menggunakan perintah ini untuk proxy server, tentu akan menjadi masalah jika ada insiden dimana terminal terkena close secara tidak sengaja. Dengan kita menjalankan di background seharusnya tidak menjadi masalah. Perintah N adalah untuk memastikan bahwa kita hanya melakukan port forwarding saja.

Selanjutnya di browser kita setting SOCK proxy nya seperti berikut:

Lalu cek IP yang kiita gunakan saat ini.

Mudah bukan? Oke mungkin sekian tutorial kali ini, jika ada yang kurang jelas silahkan ditanyakan.

Referensi:
https://www.howtogeek.com/168145/how-to-use-ssh-tunneling/