Beranda » bagaimana » Cara Menggunakan Tunneling SSH untuk Mengakses Server Terbatas dan Menjelajah dengan Aman

    Cara Menggunakan Tunneling SSH untuk Mengakses Server Terbatas dan Menjelajah dengan Aman

    Klien SSH terhubung ke server Secure Shell, yang memungkinkan Anda untuk menjalankan perintah terminal seolah-olah Anda sedang duduk di depan komputer lain. Tetapi klien SSH juga memungkinkan Anda untuk "tunnel" port antara sistem lokal Anda dan server SSH jarak jauh.

    Ada tiga jenis tunneling SSH, dan semuanya digunakan untuk tujuan yang berbeda. Masing-masing melibatkan penggunaan server SSH untuk mengarahkan lalu lintas dari satu port jaringan ke yang lain. Lalu lintas dikirim melalui koneksi SSH terenkripsi, sehingga tidak dapat dimonitor atau dimodifikasi dalam perjalanan.

    Anda dapat melakukan ini dengan ssh perintah termasuk di Linux, macOS, dan sistem operasi mirip UNIX lainnya. Pada Windows, yang tidak termasuk perintah ssh bawaan, kami merekomendasikan alat gratis Putty untuk terhubung ke server SSH. Ini mendukung tunneling SSH juga.

    Port Forwarding Lokal: Membuat Sumber Daya Jarak Jauh Dapat Diakses pada Sistem Lokal Anda

    "Penerusan porta lokal" memungkinkan Anda untuk mengakses sumber daya jaringan lokal yang tidak terpapar ke Internet. Misalnya, katakanlah Anda ingin mengakses server database di kantor Anda dari rumah Anda. Demi alasan keamanan, server basis data itu hanya dikonfigurasikan untuk menerima koneksi dari jaringan kantor lokal. Tetapi jika Anda memiliki akses ke server SSH di kantor, dan bahwa server SSH memungkinkan koneksi dari luar jaringan kantor, maka Anda dapat terhubung ke server SSH dari rumah dan mengakses server database seolah-olah Anda berada di kantor. Ini sering terjadi, karena lebih mudah untuk mengamankan server SSH tunggal terhadap serangan daripada mengamankan berbagai sumber daya jaringan yang berbeda.

    Untuk melakukan ini, Anda membuat koneksi SSH dengan server SSH dan memberi tahu klien untuk meneruskan lalu lintas dari port tertentu dari PC lokal Anda - misalnya, port 1234 - ke alamat server database dan port-nya di jaringan kantor. Jadi, ketika Anda mencoba mengakses server database di port 1234 PC Anda saat ini, "localhost", lalu lintas itu secara otomatis "diteruskan" melalui koneksi SSH dan dikirim ke server database. Server SSH duduk di tengah, meneruskan lalu lintas bolak-balik. Anda dapat menggunakan baris perintah atau alat grafis apa pun untuk mengakses server database seolah-olah itu berjalan di PC lokal Anda.

    Untuk menggunakan penerusan lokal, sambungkan ke server SSH secara normal, tetapi juga sertakan -L. argumen. Sintaksnya adalah:

    ssh -L local_port: remote_address: remote_port [email protected]

    Misalnya, katakanlah server database di kantor Anda terletak di 192.168.1.111 di jaringan kantor. Anda memiliki akses ke server SSH kantor di ssh.youroffice.com , dan akun pengguna Anda di server SSH adalah bob . Jika demikian, perintah Anda akan terlihat seperti ini:

    ssh -L 8888: 192.168.1.111: 1234 [email protected]

    Setelah menjalankan perintah itu, Anda dapat mengakses server basis data di port 8888 di localhost. Jadi, jika server database menawarkan akses web, Anda bisa mencolokkan http: // localhost: 8888 ke browser web Anda untuk mengaksesnya. Jika Anda memiliki alat baris perintah yang membutuhkan alamat jaringan database, Anda akan mengarahkannya ke localhost: 8888. Semua lalu lintas yang dikirim ke port 8888 pada PC Anda akan disalurkan ke 192.168.1.111:1234 di jaringan kantor Anda.

    Ini sedikit lebih membingungkan jika Anda ingin terhubung ke aplikasi server yang berjalan pada sistem yang sama dengan server SSH itu sendiri. Sebagai contoh, katakanlah Anda memiliki server SSH yang berjalan di port 22 di komputer kantor Anda, tetapi Anda juga memiliki server database yang berjalan di port 1234 pada sistem yang sama di alamat yang sama. Anda ingin mengakses server database dari rumah, tetapi sistem hanya menerima koneksi SSH pada port 22 dan firewall-nya tidak memungkinkan koneksi eksternal lainnya.

    Dalam hal ini, Anda bisa menjalankan perintah seperti yang berikut:

    ssh -L 8888: localhost: 1234 [email protected]

    Ketika Anda mencoba mengakses server database di port 8888 pada PC Anda saat ini, lalu lintas akan dikirim melalui koneksi SSH. Ketika tiba pada sistem yang menjalankan server SSH, server SSH akan mengirimkannya ke port 1234 di "localhost", yang merupakan PC yang sama yang menjalankan server SSH itu sendiri. Jadi "localhost" pada perintah di atas berarti "localhost" dari perspektif server jarak jauh.

    Untuk melakukan ini di aplikasi Putty pada Windows, pilih Koneksi> SSH> Terowongan. Pilih opsi "Lokal". Untuk "Port Sumber", masukkan port lokal. Untuk “Tujuan”, masukkan alamat dan port tujuan dalam bentuk remote_address: remote_port.

    Misalnya, jika Anda ingin mengatur terowongan SSH yang sama seperti di atas, Anda akan masuk 8888 sebagai port sumber dan localhost: 1234 sebagai tujuan. Klik "Tambah" sesudahnya dan kemudian klik "Buka" untuk membuka koneksi SSH. Anda juga harus memasukkan alamat dan port server SSH itu sendiri pada layar "Session" utama sebelum menghubungkan, tentu saja.

    Remote Port Forwarding: Membuat Sumber Daya Lokal Dapat Diakses pada Sistem Remote

    "Remote port forwarding" adalah kebalikan dari penerusan lokal, dan tidak sering digunakan. Ini memungkinkan Anda untuk membuat sumber daya pada PC lokal Anda tersedia di server SSH. Sebagai contoh, katakanlah Anda menjalankan server web pada PC lokal yang Anda duduki di depannya. Tetapi PC Anda berada di belakang firewall yang tidak mengizinkan lalu lintas masuk ke perangkat lunak server.

    Dengan asumsi Anda dapat mengakses server SSH jarak jauh, Anda dapat terhubung ke server SSH dan menggunakan penerusan port jarak jauh. Klien SSH Anda akan memberi tahu server untuk meneruskan port-say tertentu, port 1234-pada server SSH ke alamat dan port tertentu pada PC Anda saat ini atau jaringan lokal. Ketika seseorang mengakses port 1234 di server SSH, lalu lintas itu akan secara otomatis “diteruskan” melalui koneksi SSH. Siapa pun yang memiliki akses ke server SSH akan dapat mengakses server web yang berjalan pada PC Anda. Ini secara efektif merupakan cara untuk menembus terowongan melalui firewall.

    Untuk menggunakan penerusan jarak jauh, gunakan ssh perintah dengan -R argumen. Sintaksnya sebagian besar sama dengan penerusan lokal:

    ssh -R remote_port: local_address: local_port [email protected]

    Katakanlah Anda ingin membuat aplikasi server mendengarkan di port 1234 pada PC lokal Anda tersedia di port 8888 pada server SSH jarak jauh. Alamat server SSH adalah ssh.youroffice.com dan nama pengguna Anda di server SSH adalah bob. Anda telah menjalankan perintah berikut:

    ssh -R 8888: localhost: 1234 [email protected]

    Seseorang kemudian dapat terhubung ke server SSH di port 8888 dan koneksi itu akan disalurkan ke aplikasi server yang berjalan di port 1234 pada PC lokal Anda membuat koneksi dari.

    Untuk melakukannya di Putty pada Windows, pilih Koneksi> SSH> Terowongan. Pilih opsi "Remote". Untuk "Port Sumber", masukkan port jarak jauh. Untuk “Tujuan”, masukkan alamat dan port tujuan dalam bentuk local_address: local_port.

    Misalnya, jika Anda ingin menyiapkan contoh di atas, Anda akan masuk 8888 sebagai port sumber dan localhost: 1234 sebagai tujuan. Klik "Tambah" sesudahnya dan kemudian klik "Buka" untuk membuka koneksi SSH. Anda juga harus memasukkan alamat dan port server SSH itu sendiri pada layar "Session" utama sebelum menghubungkan, tentu saja.

    Orang-orang kemudian dapat terhubung ke port 8888 di server SSH dan lalu lintas mereka akan dialirkan ke port 1234 pada sistem lokal Anda.

    Secara default, server SSH jarak jauh hanya akan mendengarkan koneksi dari host yang sama. Dengan kata lain, hanya orang-orang di sistem yang sama dengan server SSH itu sendiri yang dapat terhubung. Ini untuk alasan keamanan. Anda harus mengaktifkan opsi "GatewayPorts" di sshd_config pada server SSH jarak jauh jika Anda ingin mengganti perilaku ini.

    Dynamic Port Forwarding: Gunakan SSH Server Anda sebagai Proxy

    Ada juga "port forwarding dinamis", yang berfungsi mirip dengan proxy atau VPN. Klien SSH akan membuat proksi SOCKS yang dapat Anda konfigurasikan aplikasi untuk digunakan. Semua lalu lintas yang dikirim melalui proxy akan dikirim melalui server SSH. Ini mirip dengan penerusan lokal-dibutuhkan lalu lintas lokal yang dikirim ke port tertentu pada PC Anda dan mengirimkannya melalui koneksi SSH ke lokasi yang jauh.

    Misalnya, Anda menggunakan jaringan Wi-Fi publik. Anda ingin menjelajah dengan aman tanpa diintip. Jika Anda memiliki akses ke server SSH di rumah, Anda bisa menyambungkannya dan menggunakan penerusan port dinamis. Klien SSH akan membuat proxy SOCKS pada PC Anda. Semua lalu lintas yang dikirim ke proxy itu akan dikirim melalui koneksi server SSH. Tidak ada yang memonitor jaringan Wi-Fi publik yang dapat memonitor penjelajahan Anda atau menyensor situs web yang dapat Anda akses. Dari perspektif situs web mana pun yang Anda kunjungi, rasanya seolah-olah Anda sedang duduk di depan PC di rumah. Ini juga berarti Anda dapat menggunakan trik ini untuk mengakses situs web AS saja saat berada di luar AS - dengan asumsi Anda memiliki akses ke server SSH di AS, tentu saja.

    Sebagai contoh lain, Anda mungkin ingin mengakses aplikasi server media yang Anda miliki di jaringan rumah Anda. Untuk alasan keamanan, Anda mungkin hanya memiliki server SSH yang terekspos ke Internet. Anda tidak mengizinkan koneksi masuk dari Internet ke aplikasi server media Anda. Anda dapat mengatur penerusan port dinamis, mengkonfigurasi browser web untuk menggunakan proxy SOCKS, dan kemudian mengakses server yang berjalan di jaringan rumah Anda melalui browser web seolah-olah Anda sedang duduk di depan sistem SSH Anda di rumah. Misalnya, jika server media Anda terletak di port 192.168.1.123 di jaringan rumah Anda, Anda bisa mencolokkan alamatnya 192.168.1.123 ke dalam aplikasi apa pun menggunakan proxy SOCKS dan Anda akan mengakses server media seolah-olah Anda berada di jaringan rumah Anda.

    Untuk menggunakan penerusan dinamis, jalankan perintah ssh dengan -D argumen, seperti:

    ssh -D local_port [email protected]

    Misalnya, katakanlah Anda memiliki akses ke server SSH di ssh.yourhome.com dan nama pengguna Anda di server SSH adalah bob . Anda ingin menggunakan penerusan dinamis untuk membuka proxy SOCKS di port 8888 pada PC saat ini. Anda telah menjalankan perintah berikut:

    ssh -D 8888 [email protected]

    Anda kemudian dapat mengkonfigurasi browser web atau aplikasi lain untuk menggunakan alamat IP lokal Anda (127.0.01) dan port 8888. Semua lalu lintas dari aplikasi itu akan dialihkan melalui terowongan.

    Untuk melakukannya di Putty pada Windows, pilih Koneksi> SSH> Terowongan. Pilih opsi "Dinamis". Untuk "Port Sumber", masukkan port lokal.

    Misalnya, jika Anda ingin membuat proxy SOCKS pada port 8888, Anda akan masuk 8888 sebagai port sumber. Klik "Tambah" sesudahnya dan kemudian klik "Buka" untuk membuka koneksi SSH. Anda juga harus memasukkan alamat dan port server SSH itu sendiri pada layar "Session" utama sebelum menghubungkan, tentu saja.

    Anda kemudian dapat mengonfigurasi aplikasi untuk mengakses proxy SOCKS pada PC lokal Anda (yaitu, alamat IP 127.0.0.1, yang menunjuk ke PC lokal Anda) dan menentukan port yang benar.

    Misalnya, Anda dapat mengonfigurasi Firefox untuk menggunakan proksi SOCKS. Ini sangat berguna karena Firefox dapat memiliki pengaturan proxy sendiri dan tidak harus menggunakan pengaturan proxy di seluruh sistem. Firefox akan mengirimkan lalu lintasnya melalui terowongan SSH, sementara aplikasi lain akan menggunakan koneksi Internet Anda secara normal.

    Saat melakukan ini di Firefox, pilih "Konfigurasi proxy manual", masukkan "127.0.0.1" ke dalam kotak host SOCKS, dan masukkan port dinamis ke dalam kotak "Port". Biarkan kotak HTTP Proxy, SSL Proxy, dan FTP Proxy kosong.

    Terowongan akan tetap aktif dan terbuka selama Anda memiliki koneksi sesi SSH terbuka. Saat Anda mengakhiri sesi SSH dan memutuskan koneksi dari server, terowongan juga akan ditutup. Cukup sambungkan kembali dengan perintah yang sesuai (atau opsi yang sesuai di Putty) untuk membuka kembali terowongan.