sshuttle proti polnemu VPN: kaj njegova metoda v resnici pokriva
sshuttle prenaša le tisto, kar podpira njegova metoda posredovanja: najprej preverite pokritost TCP, DNS in UDP, potrebne lokalne pravice in oddaljenega pomočnika.
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.
| Approach | What it carries | What it needs locally |
|---|---|---|
| SSH local forward | One explicitly named TCP destination | Nothing beyond the SSH client |
| sshuttle, nft or nat method | TCP and DNS to the routed prefixes | Root or sudo for firewall rules |
| sshuttle, tproxy method | TCP, DNS and general UDP | Root or sudo, and kernel support |
| IP VPN | Routed IP traffic in a tunnel | A 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.