sshuttle pasirenkamas todėl, kad SSH jau veikia ir kriptografija atrodo pažįstama, o šis samprotavimas praleidžia vienintelį klausimą, kuris nusprendžia tinkamumą. Kurie paketai palieka įrenginį, kuri paskyra juos neša kitoje pusėje ir kiek vietinių teisių reikalauja įrankis. Šie trys atsakymai skiriasi priklausomai nuo persiuntimo metodo, todėl vienai programai veikianti konfigūracija gali tyliai sugesti kitai. Toliau pateikta apžvalga pradedama nuo protokolo, kurio programai tikrai reikia.

Pradėkite nuo protokolo, kurio reikia programai

Protokolų palaikymas sshuttle 2.0 priklauso nuo pasirinkto metodo. Linux NAT ir nft metodai tvarko TCP ir DNS, o TPROXY prideda bendrą UDP. Kiekviena platforma ir metodas turi savo ribas, o macOS perima visiškai kitu mechanizmu. Užsirašykite įdiegtą versiją, pasirinktą metodą ir protokolus, kurių reikia programai, prieš ką nors rinkdamiesi.

Todėl veikianti TCP užklausa labai mažai įrodo apie UDP programą ar apie kiekvieną DNS užklausą. sshuttle taip pat traktuoja TCP kaip srautus, o ne tuneliuoja ištisus IP paketus, todėl našumo išvada, pasiskolinta iš įprasto VPN, čia nepersikelia. Palyginkite mechanizmą, kurį iš tikrųjų paleidžiate, su apkrova, kurią iš tikrųjų turite.

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

Ko klientui reikia vietoje

Dokumentuota kliento sąranka reikalauja root arba sudo, nes ji įdiegia vietines perėmimo taisykles, o ne sukuria tunelio sąsają. Šis vienas faktas keičia saugumo istoriją: procesas su ta teise gali peradresuoti viso įrenginio srautą, ne tik vienos programos. Traktuokite teisę kaip dizaino dalį, o ne kaip diegimo detalę.

Patvirtinkite, kurias taisykles įrankis įdiegė ir kad jos išnyksta jam pasitraukus. Sužlugusi sesija, palikusi perėmimo taisykles, gali nukreipti srautą į juodąją skylę dar ilgai po to, kai operatorius mano, kad ryšys dingo, o simptomas atrodo kaip tinklo gedimas, o ne likusi taisyklė.

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

Pirmoji komanda yra tipinio iškvietimo forma su tikrai reikalingu priešdėliu. Antroji parodo, ką įdiegė įrankis, o trečioji patvirtina, kad tunelio sąsaja nepasirodė, ko ir tikimasi iš šio dizaino.

Ką vykdo nuotolinė pusė

Nuotolinė pusė yra įgaliota SSH paskyra ir suderinama Python pagalbininko aplinka. Prisijungimas, kuris pavyksta ribotame apvalkale, automatiškai nesuteikia leidimo paleisti to pagalbininko, o paskyra, galinti paleisti pagalbininką, automatiškai nepasiekia kiekvienos tikslinės paslaugos. Abu faktai priklauso prieigos prašymui, o ne trikčių šalinimo pastaboms.

Saugokite prieglobos tapatybės patikrinimą ir paskyros autentifikavimą. Nežinomo prieglobos rakto priėmimas, kad pirmasis ryšys veiktų, pašalina patikrinimą, ar nuotolinė pusė yra numatytas įrenginys, ir tai čia sveria daugiau nei vienos paskirties persiuntime.

Apribokite nuotolinę paskyrą paslaugomis, kurių reikia darbo eigai, ir suderinkite šią apimtį su prieglobą valdančiais asmenimis. Jie yra pasitikėjimo santykių dalis, ir jokia kliento pusės nuostata to nekeičia.

Kur yra pasitikėjimo riba

Privačios API jungties persiuntimas per SSH neįgalina kiekvienos API operacijos. Programos TLS ir prisijungimas prie programos vis dar galioja, o įrankis negali padaryti saugios paslaugos be autentifikavimo. Tolesnis šuolis iš nuotolinės prieglobos taip pat nėra automatiškai ta pati apsaugota atkarpa kaip SSH kanalas, nes tas antrasis ryšys laikosi politikos, kurią turi nuotolinė priegloba.

Užrašykite ribą vienu sakiniu: srautas į šiuos priešdėlius išeina per šią paskyrą toje priegloboje. Jei sakiniui reikia išimčių pastraipos, dizainas daro daugiau, nei teigia jo dokumentacija, ir nusipelno antro žvilgsnio prieš pasiekiant produkciją.

Įrodykite tai pagal kiekvieną protokolą, tada rinkitės įrankį

Išbandykite kiekvieną reikalingą protokolą nekenksminga užklausa, įskaitant sprendėjo kelią ir adresų šeimas, kurias naudoja programa. Įtraukite į bandymą ir atsijungimą, kad leistinas programos gedimo elgesys taptų žinomu rezultatu, o ne netikėtumu incidento metu. Sesija, kuri teisingai persiuntė, kol veikė, nieko nesako apie tai, kas nutinka jai nutrūkus.

Kelioms aiškiai įvardytoms paslaugoms įprastas vietinis persiuntimas yra lengviau valdomas ir lengviau audituojamas. Programų srautui, kuris atitinka jo metodą, sshuttle siūlo teisėtą vidurį. Kai reikalavimas yra platus IP ryšys, VPN dizainas yra sąžiningas atsakymas, o pasirinkimas seka aprėptį ir operacinę atsakomybę, o ne šifravimo algoritmų reitingą.

Susiję straipsniai