sshuttle je izbran, ker SSH že deluje in kriptografija deluje znano, in to razmišljanje preskoči edino vprašanje, ki odloči o ustreznosti. Kateri paketi zapustijo stroj, kateri račun jih nosi na drugi strani in koliko lokalnih pravic zahteva orodje. Ti trije odgovori se razlikujejo glede na metodo posredovanja, zato lahko nastavitev, ki deluje za eno aplikacijo, tiho odpove pri naslednji. Pregled spodaj se začne s protokolom, ki ga aplikacija zares potrebuje.

Začnite s protokolom, ki ga aplikacija potrebuje

Podpora protokolom v sshuttle 2.0 je odvisna od izbrane metode. Metodi NAT in nft v Linuxu obravnavata TCP in DNS, TPROXY pa doda splošni UDP. Vsaka platforma in metoda imata svoje meje, macOS pa prestreza s popolnoma drugačnim mehanizmom. Preden karkoli izberete, zapišite nameščeno različico, izbrano metodo in protokole, ki jih aplikacija potrebuje.

Delujoča zahteva TCP torej zelo malo dokaže o aplikaciji UDP ali o vsaki poizvedbi DNS. sshuttle obravnava TCP tudi kot tokove, namesto da bi tuneliral cele pakete IP, zato se sklep o prepustnosti, izposojen pri običajnem VPN, sem ne prenese. Primerjajte mehanizem, ki ga v resnici izvajate, z obremenitvijo, ki jo v resnici imate.

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

Kaj odjemalec potrebuje lokalno

Dokumentirana postavitev odjemalca zahteva root ali sudo, ker namešča lokalna pravila prestrezanja, namesto da bi ustvarila vmesnik tunela. To eno dejstvo spremeni varnostno zgodbo: proces s to pravico lahko preusmeri promet celega stroja, ne le ene aplikacije. Pravico obravnavajte kot del zasnove in ne kot podrobnost namestitve.

Preverite, katera pravila je orodje namestilo in da izginejo ob izhodu. Sesija, ki se sesuje in pusti pravila prestrezanja, lahko pošlje promet v črno luknjo veliko pozneje, ko upravljavec meni, da je povezava izginila, in simptom je videti kot omrežna okvara, ne kot preostalo pravilo.

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

Prvi ukaz je oblika običajnega klica z res potrebnim predznakom. Drugi pokaže, kaj je orodje namestilo, tretji pa potrdi, da se vmesnik tunela ni pojavil, kar je pričakovan rezultat te zasnove.

Kaj izvaja oddaljena stran

Oddaljena stran je pooblaščen račun SSH in združljivo okolje pomočnika v Pythonu. Prijava, ki uspe v omejeni lupini, ne daje samodejno dovoljenja za zagon tega pomočnika, in račun, ki lahko zažene pomočnika, samodejno ne doseže vsake ciljne storitve. Obe dejstvi spadata v zahtevo za dostop in ne v zapiske za odpravljanje težav.

Zaščitite preverjanje istovetnosti gostitelja in preverjanje pristnosti računa. Sprejetje neznanega ključa gostitelja, da prva povezava deluje, odstrani preverjanje, da je oddaljena stran nameravani stroj, in to tukaj šteje več kot pri posredovanju za en sam namen.

Omejite oddaljeni račun na storitve, ki jih delovni tok potrebuje, in ta obseg uskladite s tistimi, ki upravljajo gostitelja. So del odnosa zaupanja in nobena nastavitev na strani odjemalca tega ne spremeni.

Kje je meja zaupanja

Posredovanje zasebne povezave API prek SSH ne pooblašča za vsako operacijo API. TLS aplikacije in prijava v aplikacijo še vedno veljata, orodje pa ne more narediti neoverjene storitve varne. Tudi naslednji skok z oddaljenega gostitelja ni samodejno isti zaščiteni segment kot kanal SSH, ker ta druga povezava sledi politiki, ki jo ima oddaljeni gostitelj.

Zapišite mejo v enem stavku: promet do teh predznakov odide skozi ta račun na tistem gostitelju. Če stavek potrebuje odstavek izjem, zasnova počne več, kot trdi njena dokumentacija, in si zasluži drug pogled, preden pride v produkcijo.

Dokažite to po posameznih protokolih in nato izberite orodje

Preizkusite vsak potrebni protokol z neškodljivo zahtevo, vključno s potjo razreševalnika in družinami naslovov, ki jih uporablja aplikacija. V preizkus vključite tudi prekinitev, da dovoljeno vedenje aplikacije ob napaki postane znan rezultat in ne presenečenje med incidentom. Seja, ki je med delovanjem pravilno posredovala, ne pove nič o tem, kaj se zgodi, ko pade.

Za nekaj izrecno imenovanih storitev je običajno lokalno posredovanje lažje imeti in lažje revidirati. Za promet aplikacij, ki ustreza njegovi metodi, sshuttle ponuja zakonito srednjo pot. Ko je zahteva široka povezljivost IP, je zasnova VPN pošten odgovor, izbira pa sledi pokritosti in operativni odgovornosti, ne pa lestvici šifrirnih algoritmov.

Sorodni članki