sshuttle velges fordi SSH allerede virker og kryptografien virker kjent, og den begrunnelsen hopper over det eneste spørsmålet som avgjør om det passer. Hvilke pakker som forlater maskinen, hvilken konto som bærer dem på den andre siden, og hvor mye lokal rettighet verktøyet krever. De tre svarene varierer med videresendingsmetoden, så et oppsett som virker for én applikasjon kan feile lydløst for den neste. Gjennomgangen nedenfor begynner med protokollen applikasjonen faktisk trenger.

Begynn med protokollen applikasjonen trenger

Protokollstøtten i sshuttle 2.0 avhenger av metoden du velger. Linux-metodene NAT og nft håndterer TCP og DNS, og TPROXY legger til generell UDP. Hver plattform og metode har sine egne grenser, og macOS fanger opp gjennom en helt annen mekanisme. Noter den installerte versjonen, den valgte metoden og protokollene applikasjonen trenger før du velger noe.

En fungerende TCP-forespørsel beviser derfor svært lite om en UDP-applikasjon eller om hvert DNS-oppslag. sshuttle behandler også TCP som strømmer i stedet for å tunnelere hele IP-pakker, så en gjennomstrømningskonklusjon lånt fra en vanlig VPN overføres ikke. Sammenlign mekanismen du faktisk kjører med belastningen du faktisk 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

Hva klienten trenger lokalt

Det dokumenterte klientoppsettet krever root eller sudo, fordi det installerer lokale avskjæringsregler i stedet for å opprette et tunnelgrensesnitt. Den ene kjensgjerningen endrer sikkerhetshistorien: en prosess med den rettigheten kan omdirigere trafikk for hele maskinen, ikke bare én applikasjon. Behandle rettigheten som en del av designet og ikke som en installasjonsdetalj.

Bekreft hvilke regler verktøyet installerte og at de forsvinner når det avsluttes. En krasjet økt som etterlater avskjæringsregler kan sende trafikk i et svart hull lenge etter at operatøren tror forbindelsen er borte, og symptomet ser ut som et nettverksutfall snarere enn en gjenværende regel.

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

Den første kommandoen er formen av et typisk kall, med prefikset du faktisk trenger. Den andre viser hva verktøyet installerte, og den tredje bekrefter at det ikke dukket opp et tunnelgrensesnitt, som er det forventede resultatet for dette designet.

Hva fjernsiden kjører

Fjernsiden er en autorisert SSH-konto pluss et kompatibelt hjelpemiljø i Python. En innlogging som lykkes under et begrenset skall gir ikke automatisk tillatelse til å kjøre den hjelperen, og en konto som kan kjøre hjelperen når ikke automatisk hver målstjeneste. Begge forholdene hører i tilgangsforespørselen og ikke i feilsøkingsnotatene.

Beskytt verifiseringen av vertsidentitet og autentiseringen av kontoen. Å godta en ukjent vertsnøkkel for å få den første forbindelsen til å virke fjerner kontrollen av at fjernsiden er maskinen du hadde tenkt, og det veier tyngre her enn ved en videresending for ett enkelt formål.

Begrens fjernkontoen til tjenestene arbeidsflyten trenger, og forhandle omfanget med dem som driver verten. De er en del av tillitsforholdet, og ingen innstilling på klientsiden endrer det.

Hvor tillitsgrensen ligger

Videresending av en privat API-forbindelse gjennom SSH autoriserer ikke hver API-operasjon. Applikasjonens TLS og innlogging i applikasjonen gjelder fortsatt, og verktøyet kan ikke gjøre en uautentisert tjeneste sikker. Et videre hopp fra fjernverten er heller ikke automatisk det samme beskyttede segmentet som SSH-kanalen, fordi den andre forbindelsen følger den politikken fjernverten har.

Skriv grensen som én setning: trafikk til disse prefiksene går ut gjennom denne kontoen på den verten. Hvis setningen trenger et avsnitt med unntak, gjør designet mer enn dokumentasjonen hevder, og det fortjener et nytt blikk før det når produksjon.

Bevis det per protokoll, og velg deretter verktøyet

Test hver påkrevde protokoll med en ufarlig forespørsel, inkludert resolverstien og adressefamiliene applikasjonen bruker. Ta med en frakobling i testen, slik at applikasjonens tillatte feilatferd blir et kjent resultat i stedet for en overraskelse under en hendelse. En økt som videresendte riktig mens den var oppe, sier ingenting om hva som skjer når den faller.

For en håndfull eksplisitt navngitte tjenester er en vanlig lokal videresending enklere å eie og enklere å revidere. For applikasjonstrafikk som passer til metoden, tilbyr sshuttle en legitim mellomvei. Når kravet er bred IP-tilkobling, er et VPN-design det ærlige svaret, og valget følger dekning og operativt ansvar snarere enn en rangering av krypteringsalgoritmer.

Relaterte artikler