6 poin oleh GN⁺ 2024-09-20 | 1 komentar | Bagikan ke WhatsApp

Panduan visual untuk SSH tunneling dan port forwarding

  • Ringkasan: Postingan blog ini ditulis untuk membantu memahami SSH tunneling dan port forwarding. Topik yang dibahas mencakup kasus penggunaan, konfigurasi, jump host SSH, port forwarding lokal/jarak jauh/dinamis, serta batasannya.
Kasus penggunaan
  • Keamanan:

    • Mengenkripsi koneksi yang tidak aman seperti FTP
    • Mengakses panel admin web melalui SSH tunnel (autentikasi kunci publik)
    • Mengurangi jumlah port yang terekspos (hanya mengekspos port 22)
  • Pemecahan masalah:

    • Melewati firewall/filter konten
    • Memilih rute lain
  • Konektivitas:

    • Mengakses server yang berada di balik NAT
    • Mengakses server internal melalui internet menggunakan jump host
    • Mengekspos port lokal ke internet
Port forwarding
  • Konfigurasi/persiapan:
    • Pengguna lokal dan jarak jauh memerlukan izin untuk membuka port
    • Port 0-1024 memerlukan hak akses root
    • Atur firewall klien dan jaringan dengan tepat
    • Port forwarding harus diaktifkan pada server SSH: AllowTcpForwarding yes
    • Untuk meneruskan port dari antarmuka lain, GatewayPorts yes harus diaktifkan
Jump host SSH / SSH tunnel
  • Koneksi melalui jump host:

    ssh -J user@REMOTE-MACHINE:22 -p 22 user@10.99.99.1
    
  • Menggunakan beberapa jump host:

    ssh -J user@REMOTE-MACHINE:22,user@ANOTHER-REMOTE-MACHINE:22 -p 22 user@10.99.99.1
    
Port forwarding lokal
  • Contoh 1:

    ssh -L 10.10.10.1:8001:localhost:8000 user@REMOTE-MACHINE
    
  • Contoh 2:

    ssh -L 8001:10.99.99.1:8000 user@REMOTE-MACHINE
    
Port forwarding jarak jauh
  • Contoh 1+2:

    ssh -R 8000:localhost:8001 user@REMOTE-MACHINE
    ssh -R 8000:10.10.10.2:8001 user@REMOTE-MACHINE
    
  • Contoh 3:

    ssh -R 10.99.99.2:8000:10.10.10.2:8001 user@REMOTE-MACHINE
    
Port forwarding dinamis
  • Menggunakan protokol SOCKS:
    ssh -D 10.10.10.1:5555 user@REMOTE-MACHINE
    
SSH TUN/TAP tunneling
  • Membuat tunnel TCP dua arah:
    ssh -w local_tun[:remote_tun]
    
Menjalankan SSH di latar belakang
  • Jalankan di latar belakang:

    ssh -fN -L 8001:127.0.0.1:8000 user@REMOTE-MACHINE
    
  • Menghentikan SSH latar belakang:

    ps -ef | grep ssh
    kill <PID>
    
Menjaga koneksi SSH tetap aktif
  • Menangani timeout:
    • ClientAliveInterval 15
    • ClientAliveCountMax 3
Batasan
  • UDP:

    • SSH tidak mendukung UDP karena memerlukan pengiriman yang andal
  • TCP-over-TCP:

    • Throughput menurun dan latensi meningkat karena overhead yang bertambah
  • Bukan pengganti VPN:

    • SSH tunneling bisa menggantikan VPN, tetapi dari sisi performa VPN lebih cocok
  • Potensi risiko keamanan:

    • Sebaiknya nonaktifkan fitur yang tidak diperlukan

Ringkasan GN⁺

  • Artikel ini menjelaskan berbagai kasus penggunaan dan cara konfigurasi SSH tunneling serta port forwarding
  • SSH tunneling berguna untuk menyediakan koneksi aman dan melewati firewall
  • Namun, ini tidak sepenuhnya bisa menggantikan VPN dan memiliki batasan seperti penurunan performa
  • Proyek terkait lainnya mencakup solusi VPN seperti OpenVPN

1 komentar

 
GN⁺ 2024-09-20
Komentar Hacker News
  • Pada 2024, alih-alih menulis perintah SSH secara langsung, lebih baik menggunakan file ~/.ssh/config untuk mengatur LocalForward, RemoteForward, dan ProxyJump

    • Melalui contoh konfigurasi, kita bisa menghemat waktu saat mentransfer data melalui beberapa koneksi SSH perantara
    • Setelah dikonfigurasi, kita bisa menggunakan SSH, SCP, dan RSYNC ke target-server melalui alias
    • Port forwarding dapat dilakukan dengan mudah melalui pengaturan LocalForward dan RemoteForward
  • SSH tunneling sangat penting di lingkungan perusahaan yang kompleks

    • Karena banyak birokrasi dan waktu tunggu, butuh waktu untuk mendapatkan hak akses yang diperlukan
    • Dengan menggunakan perintah ssh -D 8888 someserver lalu mengatur proxy SOCKS browser ke localhost:8888, trafik browser akan dirutekan melalui server tersebut
  • Jika ingin mengakses via SSH ke server Linux atau perangkat IoT yang berada di balik firewall dan tidak memiliki IP statis, layanan tunneling bisa digunakan

  • Pengalaman peretasan SSH tunneling yang paling rumit terjadi saat koneksi antar data center

    • Data harus dipindahkan dari A ke B, lalu dari B ke C
    • Dengan menggabungkan rsync, tunnel SSH, key, dan routing, data berhasil dipindahkan
    • Saat itu rasanya pencapaian besar, dan sampai sekarang kenangannya masih sangat jelas
  • Ingin ada lebih banyak visualisasi jaringan

    • Terutama visualisasi trafik pada koneksi level rendah
  • TCP-over-TCP dapat menambah overhead dan latensi sehingga performa bisa menurun

    • Dalam tunnel SSH, ini bukan masalah kecuali menggunakan TAP/TUN
    • Namun, jika memakai beberapa channel, penurunan performa bisa terjadi
  • Tunnel SSH adalah alat yang sangat bagus, tetapi belakangan ini lebih sering menggunakan alat yang sudah memiliki TLS dan fitur reverse proxy bawaan

  • sshuttle adalah alat yang lebih baik untuk tunneling

    • Dengan perintah sshuttle -r user@host 10.0.0.0/8, alat ini bisa digunakan seperti VPN
  • Mulai menggunakan tunnel SSH 15 tahun lalu untuk melewati firewall jaringan kampus

    • Port default diubah ke 443 untuk digunakan
    • Sejak itu, tunnel ini dipakai untuk berbagai keperluan selain melewati firewall
  • Bertanya-tanya apakah SSH sendiri memiliki fitur redirect

    • Jika A mencoba SSH ke B, lalu B menyuruh A untuk terhubung ke C, dan A secara transparan langsung terhubung ke C
    • B tidak lagi menjadi bagian dari jalur data yang penting
    • Ingin tahu apakah fitur seperti ini memang ada