6 puan yazan GN⁺ 2024-09-20 | 1 yorum | WhatsApp'ta paylaş

SSH Tünelleme ve Port Yönlendirme için görsel rehber

  • Özet: Bu blog yazısı, SSH tünelleme ve port yönlendirmeyi anlamaya yardımcı olmak için hazırlanmıştır. Konular arasında kullanım senaryoları, yapılandırma, SSH jump host, yerel/uzak/dinamik port yönlendirme ve sınırlamalar yer alır.
Kullanım senaryoları
  • Güvenlik:

    • FTP gibi güvenli olmayan bağlantıları şifreleme
    • SSH tüneli üzerinden web yönetici paneline erişim (açık anahtar kimlik doğrulaması)
    • Açığa çıkan port sayısını azaltma (yalnızca 22 numaralı port açık)
  • Sorun giderme:

    • Güvenlik duvarı/içerik filtrelerini aşma
    • Farklı bir rota seçme
  • Bağlantı:

    • NAT arkasındaki sunuculara erişim
    • İnternet üzerinden iç sunuculara erişmek için jump host kullanma
    • Yerel portları internete açma
Port yönlendirme
  • Yapılandırma/hazırlık:
    • Yerel ve uzak kullanıcıların port açma yetkisine sahip olması gerekir
    • 0-1024 arası portlar root yetkisi gerektirir
    • İstemciyi ve ağ güvenlik duvarını uygun şekilde yapılandırın
    • SSH sunucusunda port yönlendirme etkinleştirilmelidir: AllowTcpForwarding yes
    • Portları başka arayüzlerde yönlendirmek için GatewayPorts yes etkinleştirilmelidir
SSH jump host / SSH tüneli
  • Jump host üzerinden bağlantı:

    ssh -J user@REMOTE-MACHINE:22 -p 22 user@10.99.99.1
    
  • Birden fazla jump host kullanma:

    ssh -J user@REMOTE-MACHINE:22,user@ANOTHER-REMOTE-MACHINE:22 -p 22 user@10.99.99.1
    
Yerel port yönlendirme
  • Örnek 1:

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

    ssh -L 8001:10.99.99.1:8000 user@REMOTE-MACHINE
    
Uzak port yönlendirme
  • Örnek 1+2:

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

    ssh -R 10.99.99.2:8000:10.10.10.2:8001 user@REMOTE-MACHINE
    
Dinamik port yönlendirme
  • SOCKS protokolünü kullanma:
    ssh -D 10.10.10.1:5555 user@REMOTE-MACHINE
    
SSH TUN/TAP tünelleme
  • Çift yönlü TCP tüneli oluşturma:
    ssh -w local_tun[:remote_tun]
    
SSH'yi arka planda çalıştırma
  • Arka planda çalıştırma:

    ssh -fN -L 8001:127.0.0.1:8000 user@REMOTE-MACHINE
    
  • Arka plandaki SSH'yi durdurma:

    ps -ef | grep ssh
    kill <PID>
    
SSH bağlantısını canlı tutma
  • Zaman aşımı yönetimi:
    • ClientAliveInterval 15
    • ClientAliveCountMax 3
Sınırlamalar
  • UDP:

    • SSH güvenilir aktarım gerektirdiği için UDP desteklenmez
  • TCP-over-TCP:

    • Ek yük arttığı için verim düşer ve gecikme artar
  • VPN'in yerine geçmez:

    • SSH tünelleme VPN'in yerini alabilir, ancak performans açısından VPN daha uygundur
  • Olası güvenlik riskleri:

    • Gerekli olmayan özellikleri devre dışı bırakmak iyi olur

GN⁺ Özeti

  • Bu yazı, SSH tünelleme ve port yönlendirmenin çeşitli kullanım senaryolarını ve yapılandırma yöntemlerini açıklar
  • SSH tünelleme, güvenli bağlantı sağlamak ve güvenlik duvarlarını aşmak için kullanışlıdır
  • Ancak VPN'in yerini tam olarak alamaz ve performans düşüşü gibi sınırlamaları vardır
  • İlgili diğer projeler arasında OpenVPN gibi VPN çözümleri bulunur

1 yorum

 
GN⁺ 2024-09-20
Hacker News görüşleri
  • 2024'te SSH komutlarını doğrudan yazmak yerine ~/.ssh/config dosyasını kullanarak LocalForward, RemoteForward ve ProxyJump ayarlamak daha iyi

    • Örnek yapılandırmalar, birden fazla ara SSH bağlantısı üzerinden veri aktarırken zaman kazandırabilir
    • Yapılandırmadan sonra takma adlar üzerinden target-server için SSH, SCP ve RSYNC kullanılabilir
    • LocalForward ve RemoteForward ayarlarıyla port yönlendirme kolayca yapılabilir
  • SSH tünelleme, karmaşık kurumsal ortamlarda vazgeçilmezdir

    • Çok fazla bürokrasi ve bekleme süresi nedeniyle gerekli erişim izinlerini almak zaman alır
    • ssh -D 8888 someserver komutuyla tarayıcının SOCKS proxy'sini localhost:8888 olarak ayarlarsanız, tarayıcı trafiği o sunucu üzerinden yönlendirilir
  • Güvenlik duvarının arkasında olan ve sabit IP'si bulunmayan Linux sunucularına veya IoT cihazlarına SSH ile bağlanmak istediğinizde tünelleme hizmetleri kullanılabilir

  • En karmaşık SSH tünelleme hack deneyimi veri merkezleri arasındaki bağlantılarda yaşanmış

    • Veriyi A'dan B'ye, B'den C'ye taşımak gerekmiş
    • rsync, SSH tünelleri, anahtarlar ve yönlendirme birleştirilerek veri başarıyla taşınmış
    • O zamanlar büyük bir başarı hissiydi ve hâlâ çok net hatırlanıyor
  • Ağ oluşturma konusunda daha fazla görselleştirme yapılması isteniyor

    • Özellikle düşük seviyeli bağlantılarda trafik görselleştirmesine ihtiyaç var
  • TCP-over-TCP ek yükü artırabilir, gecikmeyi yükseltebilir ve performansı düşürebilir

    • SSH tünellerinde, TAP/TUN kullanılmadıkça bu genelde sorun olmaz
    • Ancak birden fazla kanal kullanıldığında performans düşüşü yaşanabilir
  • SSH tünelleri harika bir araç, ancak bugünlerde TLS ve reverse proxy özellikleri yerleşik olan araçlar daha sık kullanılıyor

  • sshuttle, tünelleme için daha iyi bir araçtır

    • sshuttle -r user@host 10.0.0.0/8 komutuyla VPN gibi kullanılabilir
  • 15 yıl önce üniversite ağındaki güvenlik duvarını aşmak için SSH tünelleri kullanılmaya başlanmış

    • Varsayılan port 443 olarak değiştirilmiş
    • O zamandan beri güvenlik duvarını aşmanın ötesinde çeşitli amaçlarla kullanılmaya devam ediliyor
  • SSH'nin kendisinde yerleşik bir yönlendirme özelliği olup olmadığı merak ediliyor

    • A, B'ye SSH bağlantısı kurmaya çalıştığında B'nin A'ya C'ye bağlanmasını söylemesi ve A'nın şeffaf biçimde doğrudan C'ye bağlanması gibi bir özellik
    • Bu durumda B artık kritik veri yolunun bir parçası olmaz
    • Böyle bir özelliğin mevcut olup olmadığı soruluyor