sshuttle tegen een volledige VPN: wat zijn methode werkelijk dekt
sshuttle vervoert alleen wat zijn doorstuurmethode ondersteunt: controleer eerst de dekking van TCP, DNS en UDP, het lokale recht dat het nodig heeft en de hulp op afstand.
sshuttle wordt gekozen omdat SSH al werkt en de cryptografie vertrouwd lijkt, en die redenering slaat de enige vraag over die bepaalt of het past. Welke pakketten de machine verlaten, welk account ze aan de andere kant draagt en hoeveel lokaal recht het gereedschap eist. Die drie antwoorden verschillen per doorstuurmethode, dus een opstelling die voor de ene toepassing werkt, kan voor de volgende stil falen. De uitleg hieronder begint bij het protocol dat de toepassing echt nodig heeft.
Begin bij het protocol dat de toepassing nodig heeft
Protocolondersteuning in sshuttle 2.0 hangt af van de methode die je kiest. De Linux-methoden NAT en nft behandelen TCP en DNS, en TPROXY voegt algemene UDP toe. Elk platform en elke methode heeft eigen grenzen, en macOS onderschept via een heel ander mechanisme. Noteer de geïnstalleerde versie, de gekozen methode en de protocollen die de toepassing nodig heeft voordat je iets kiest.
Een werkend TCP-verzoek bewijst dus heel weinig over een UDP-toepassing of over elke DNS-opzoeking. sshuttle behandelt TCP ook als stromen in plaats van hele IP-pakketten te tunnelen, dus een doorvoerconclusie die van een gewone VPN is geleend, gaat hier niet op. Vergelijk het mechanisme dat je werkelijk draait met de belasting die je werkelijk hebt.
| 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 |
Wat de client lokaal nodig heeft
De gedocumenteerde clientopstelling vereist root of sudo, omdat ze lokale onderscheppingsregels installeert in plaats van een tunnelinterface te maken. Dat ene feit verandert het beveiligingsverhaal: een proces met dat recht kan verkeer van de hele machine omleiden, niet alleen van één toepassing. Behandel het recht als deel van het ontwerp en niet als installatiedetail.
Controleer welke regels het gereedschap heeft geïnstalleerd en dat ze verdwijnen wanneer het stopt. Een gecrashte sessie die onderscheppingsregels achterlaat, kan verkeer nog lang naar een zwart gat sturen nadat de operator denkt dat de verbinding weg is, en het symptoom lijkt op een netwerkstoring en niet op een achtergebleven regel.
sudo sshuttle --method nft --dns 172.19.4.0/24
nft list ruleset | grep -i sshuttle
ip route
De eerste opdracht is de vorm van een typische aanroep, met het voorvoegsel dat je werkelijk nodig hebt. De tweede toont wat het gereedschap heeft geïnstalleerd, en de derde bevestigt dat er geen tunnelinterface verscheen, wat het verwachte resultaat voor dit ontwerp is.
Wat de andere kant draait
De andere kant is een geautoriseerd SSH-account plus een compatibele Python-hulpomgeving. Een aanmelding die onder een beperkte shell lukt, geeft niet automatisch toestemming om die hulp te draaien, en een account dat de hulp kan draaien, bereikt niet automatisch elke doeldienst. Beide feiten horen in het toegangsverzoek en niet in de foutopsporingsnotities.
Bescherm de verificatie van de hostidentiteit en de authenticatie van het account. Een onbekende hostsleutel accepteren om de eerste verbinding te laten werken haalt de controle weg dat de andere kant de bedoelde machine is, en dat weegt hier zwaarder dan bij een doorsturing voor één doel.
Beperk het externe account tot de diensten die de werkstroom nodig heeft, en onderhandel die reikwijdte met degenen die de host beheren. Zij maken deel uit van de vertrouwensrelatie, en geen instelling aan de clientzijde verandert dat.
Waar de vertrouwensgrens ligt
Een particuliere API-verbinding via SSH doorsturen machtigt niet elke API-bewerking. TLS van de toepassing en de aanmelding bij de toepassing gelden nog steeds, en het gereedschap kan een niet-geauthenticeerde dienst niet veilig maken. Een volgende sprong vanaf de externe host is ook niet automatisch hetzelfde beschermde segment als het SSH-kanaal, omdat die tweede verbinding het beleid volgt dat de externe host heeft.
Schrijf de grens als één zin: verkeer naar deze prefixen verlaat via dit account op die host. Als de zin een alinea uitzonderingen nodig heeft, doet het ontwerp meer dan de documentatie beweert en verdient het een tweede blik voordat het productie bereikt.
Bewijs het per protocol en kies dan het gereedschap
Test elk vereist protocol met een onschadelijk verzoek, inclusief het pad van de resolver en de adresfamilies die de toepassing gebruikt. Neem een verbreking op in de test, zodat het toegestane foutgedrag van de toepassing een bekend resultaat wordt in plaats van een verrassing tijdens een incident. Een sessie die correct doorstuurde terwijl ze actief was, zegt niets over wat er gebeurt als ze wegvalt.
Voor een handvol uitdrukkelijk genoemde diensten is een gewone lokale doorsturing gemakkelijker te bezitten en te auditen. Voor toepassingsverkeer dat bij zijn methode past, biedt sshuttle een legitieme middenweg. Wanneer de eis brede IP-connectiviteit is, is een VPN-ontwerp het eerlijke antwoord, en de keuze volgt dekking en operationele verantwoordelijkheid en niet een rangschikking van versleutelingsalgoritmen.