sshuttle, SSH zaten çalıştığı ve kriptografi tanıdık göründüğü için seçilir ve bu gerekçe uygunluğu belirleyen tek soruyu atlar. Hangi paketler makineden çıkar, karşı tarafta hangi hesap onları taşır ve araç ne kadar yerel yetki ister. Bu üç yanıt yönlendirme yöntemine göre değişir, bu yüzden bir uygulama için çalışan bir kurulum bir sonraki için sessizce başarısız olabilir. Aşağıdaki anlatım uygulamanın gerçekten ihtiyaç duyduğu protokolle başlar.

Uygulamanın ihtiyaç duyduğu protokolle başlayın

sshuttle 2.0'da protokol desteği seçtiğiniz yönteme bağlıdır. Linux'taki NAT ve nft yöntemleri TCP ve DNS'i işler, TPROXY genel UDP ekler. Her platform ve yöntemin kendi sınırları vardır ve macOS tamamen farklı bir mekanizmayla yakalar. Bir şey seçmeden önce kurulu sürümü, seçilen yöntemi ve uygulamanın ihtiyaç duyduğu protokolleri not edin.

Bu nedenle çalışan bir TCP isteği, bir UDP uygulaması ya da her DNS sorgusu hakkında çok az şey kanıtlar. sshuttle TCP'yi tüm IP paketlerini tünellemek yerine akış olarak ele alır, bu nedenle geleneksel bir VPN'den ödünç alınan aktarım sonucu buraya taşınmaz. Gerçekten çalıştırdığınız mekanizmayı gerçekten sahip olduğunuz yükle karşılaştırın.

ApproachWhat it carriesWhat it needs locally
SSH local forwardOne explicitly named TCP destinationNothing beyond the SSH client
sshuttle, nft or nat methodTCP and DNS to the routed prefixesRoot or sudo for firewall rules
sshuttle, tproxy methodTCP, DNS and general UDPRoot or sudo, and kernel support
IP VPNRouted IP traffic in a tunnelA client with the required privileges

İstemcinin yerelde neye ihtiyacı var

Belgelenen istemci düzeni root ya da sudo gerektirir, çünkü tünel arayüzü oluşturmak yerine yerel yakalama kuralları kurar. Bu tek gerçek güvenlik hikâyesini değiştirir: bu yetkiye sahip bir süreç yalnızca bir uygulamanın değil, tüm makinenin trafiğini yönlendirebilir. Yetkiyi kurulum ayrıntısı değil, tasarımın parçası olarak görün.

Aracın hangi kuralları kurduğunu ve çıkarken bunların kaybolduğunu doğrulayın. Çöküp yakalama kuralları bırakan bir oturum, operatör bağlantının gittiğine inandıktan çok sonra trafiği kara deliğe gönderebilir ve belirti kalan bir kuraldan çok ağ arızasına benzer.

sudo sshuttle --method nft --dns 172.19.4.0/24
nft list ruleset | grep -i sshuttle
ip route

İlk komut tipik bir çağrının biçimidir ve gerçekten ihtiyaç duyduğunuz önekle gelir. İkincisi aracın ne kurduğunu gösterir, üçüncüsü ise tünel arayüzü görünmediğini doğrular; bu tasarım için beklenen sonuç budur.

Uzak taraf ne çalıştırır

Uzak taraf, yetkilendirilmiş bir SSH hesabı ve uyumlu bir Python yardımcı ortamıdır. Kısıtlı bir kabuk altında başarılı olan oturum açma, o yardımcıyı çalıştırma iznini otomatik vermez ve yardımcıyı çalıştırabilen bir hesap her hedef hizmete otomatik ulaşmaz. İki gerçek de sorun giderme notlarına değil, erişim isteğine aittir.

Sunucu kimliği doğrulamasını ve hesabın kimlik doğrulamasını koruyun. İlk bağlantı çalışsın diye bilinmeyen bir sunucu anahtarını kabul etmek, uzak tarafın amaçladığınız makine olduğu kontrolünü kaldırır ve bu burada tek amaçlı bir yönlendirmeden daha ağır basar.

Uzak hesabı iş akışının ihtiyaç duyduğu hizmetlerle sınırlayın ve bu kapsamı sunucuyu işletenlerle görüşün. Onlar güven ilişkisinin parçasıdır ve istemci tarafındaki hiçbir ayar bunu değiştirmez.

Güven sınırı nerede

Özel bir API bağlantısını SSH üzerinden yönlendirmek her API işlemine izin vermez. Uygulamanın TLS'i ve uygulamaya giriş hâlâ geçerlidir ve araç kimlik doğrulaması olmayan bir hizmeti güvenli hâle getiremez. Uzak sunucudan yapılan bir sonraki atlama da otomatik olarak SSH kanalıyla aynı korunan kesim değildir, çünkü o ikinci bağlantı uzak sunucunun sahip olduğu politikayı izler.

Sınırı tek cümleyle yazın: bu öneklere giden trafik o sunucudaki bu hesaptan çıkar. Cümle bir istisna paragrafı gerektiriyorsa tasarım belgesinin iddia ettiğinden fazlasını yapıyordur ve üretime ulaşmadan önce ikinci bir bakışı hak eder.

Her protokolde kanıtlayın, sonra aracı seçin

Gereken her protokolü zararsız bir istekle test edin; çözümleyici yolunu ve uygulamanın kullandığı adres ailelerini de dahil edin. Teste bir kopma da ekleyin ki uygulamanın izin verilen hata davranışı olay sırasında sürpriz değil, bilinen bir sonuç olsun. Çalışırken doğru yönlendiren bir oturum, düştükten sonra ne olduğu hakkında hiçbir şey söylemez.

Açıkça adlandırılmış birkaç hizmet için sıradan yerel yönlendirme sahiplenmesi ve denetlemesi daha kolaydır. Yöntemine uyan uygulama trafiği için sshuttle meşru bir orta yol sunar. Gereksinim geniş IP bağlantısı olduğunda VPN tasarımı dürüst yanıttır ve seçim şifreleme algoritmalarının sıralamasını değil, kapsamı ve operasyonel sorumluluğu izler.

İlgili makaleler