sshuttle väljs för att SSH redan fungerar och kryptografin verkar bekant, och det resonemanget hoppar över den enda frågan som avgör om det passar. Vilka paket som lämnar maskinen, vilket konto som bär dem på andra sidan och hur mycket lokal behörighet verktyget kräver. De tre svaren varierar med vidarebefordringsmetoden, så en uppsättning som fungerar för en applikation kan tyst misslyckas för nästa. Genomgången nedan börjar med protokollet som applikationen faktiskt behöver.

Börja med protokollet som applikationen behöver

Protokollstödet i sshuttle 2.0 beror på metoden du väljer. Linuxmetoderna NAT och nft hanterar TCP och DNS, och TPROXY lägger till allmän UDP. Varje plattform och metod har sina egna gränser, och macOS fångar upp genom en helt annan mekanism. Anteckna den installerade versionen, den valda metoden och de protokoll applikationen behöver innan du väljer något.

En fungerande TCP-begäran bevisar därför mycket lite om en UDP-applikation eller om varje DNS-sökning. sshuttle behandlar också TCP som strömmar i stället för att tunnla hela IP-paket, så en genomströmningsslutsats lånad från ett vanligt VPN överförs inte. Jämför mekanismen du faktiskt kör med den belastning du faktiskt har.

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

Vad klienten behöver lokalt

Den dokumenterade klientuppsättningen kräver root eller sudo, eftersom den installerar lokala avlyssningsregler i stället för att skapa ett tunnelgränssnitt. Det enda faktumet ändrar säkerhetsberättelsen: en process med den behörigheten kan omdirigera trafik för hela maskinen, inte bara en applikation. Behandla behörigheten som en del av designen och inte som en installationsdetalj.

Bekräfta vilka regler verktyget installerade och att de försvinner när det avslutas. En kraschad session som lämnar avlyssningsregler kan skicka trafik i ett svart hål långt efter att operatören tror att anslutningen är borta, och symtomet ser ut som ett nätavbrott snarare än en kvarvarande regel.

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

Det första kommandot är formen av ett typiskt anrop, med prefixet du faktiskt behöver. Det andra visar vad verktyget installerade, och det tredje bekräftar att inget tunnelgränssnitt dök upp, vilket är det förväntade resultatet för den här designen.

Vad fjärrsidan kör

Fjärrsidan är ett auktoriserat SSH-konto plus en kompatibel Python-hjälparmiljö. En inloggning som lyckas under ett begränsat skal ger inte automatiskt tillstånd att köra den hjälparen, och ett konto som kan köra hjälparen når inte automatiskt varje mältjänst. Båda förhållandena hör hemma i åtkomstbegäran och inte i felsökningsanteckningarna.

Skydda verifieringen av värdidentitet och kontots autentisering. Att acceptera en okänd värdnyckel för att få den första anslutningen att fungera tar bort kontrollen att fjärrsidan är den maskin du avsåg, och det väger tyngre här än vid en vidarebefordran för ett enda ändamål.

Begränsa fjärrkontot till de tjänster arbetsflödet behöver, och förhandla omfattningen med dem som driftar värden. De är en del av förtroendeförhållandet, och ingen inställning på klientsidan ändrar det.

Var förtroendegränsen ligger

Vidarebefordran av en privat API-anslutning via SSH ger inte behörighet till varje API-operation. Applikationens TLS och inloggningen i applikationen gäller fortfarande, och verktyget kan inte göra en oautentiserad tjänst säker. Inte heller ett vidare hopp från fjärrvärden är automatiskt samma skyddade segment som SSH-kanalen, eftersom den andra anslutningen följer vilken policy fjärrvärden har.

Skriv gränsen som en mening: trafik till dessa prefix lämnar genom detta konto på den värden. Om meningen behöver ett stycke undantag gör designen mer än dokumentationen hävdar, och den förtjänar en andra titt innan den når produktion.

Bevisa det per protokoll och välj sedan verktyget

Testa varje nödvändigt protokoll med en ofarlig begäran, inklusive resolvervägen och de adressfamiljer som applikationen använder. Ta med en frånkoppling i testet, så att applikationens tillåtna felbeteende blir ett känt resultat i stället för en överraskning under en incident. En session som vidarebefordrade korrekt medan den var uppe säger ingenting om vad som händer när den faller.

För en handfull uttryckligen namngivna tjänster är en vanlig lokal vidarebefordran lättare att äga och lättare att granska. För applikationstrafik som passar dess metod erbjuder sshuttle en legitim mellanväg. När kravet är bred IP-anslutning är en VPN-design det ärliga svaret, och valet följer täckning och driftsansvar snarare än en rangordning av krypteringsalgoritmer.

Relaterade artiklar