Lokale SSH-doorsturing of volledige VPN voor één Mac-scherm?
Voor één scherm op één host is een loopback-SSH-doorsturing kleiner dan een VPN. Hier staat wanneer die volstaat, wat die versleutelt en wanneer je ermee moet stoppen.
Je moet het scherm van één Mac vanaf je eigen machine zien, de Mac staat achter een host waar je al via SSH bij kunt, en de vraag is of dat een VPN verdient. Meestal niet. Eén lokale doorsturing draagt één TCP-poort door de SSH-sessie die je al hebt, en voor één scherm op één host is dat een kleinere en beter controleerbare regeling dan een heel netwerk routeren.
Drie voorwaarden beslissen het, en elk ervan kan je richting de beheerde VPN duwen.
Drie voorwaarden beslissen het
De eerste is omvang: één dienst op één host, of meerdere hosts en meerdere poorten. De tweede is of elke sprong tussen de bastion en het doel al vertrouwd is, omdat SSH alleen het segment beschermt dat het beëindigt. De derde is wie de regeling moet ondersteunen nadat je hem hebt gebouwd, want een handgemaakte tunnel overleeft meestal de persoon die hem begreep. Noem die persoon voordat je begint, en schrijf het commando op een plek waar hij het kan vinden. Een ongedocumenteerde doorsturing is een toekomstig incident met een uitgestelde startdatum.
Als de antwoorden ‘één’, ‘ja’ en ‘ik, voorlopig’ zijn, is de doorsturing het juiste gereedschap. Als er één antwoord verandert, is een ondersteund ontwerp voor toegang op afstand over een jaar goedkoper dan de incidentbeoordeling die op een ongedocumenteerde tunnel volgt.
Stuur één poort door, niet het netwerk
Een lokale doorsturing opent een luisteraar op je machine en leidt elke verbinding via de SSH-server naar een bestemming die die server kan bereiken. Voor een Mac waarvan de schermdelingsdienst op TCP 5900 luistert, en een bastion dat mac.corp.example kan oplossen, is het commando kort en bewust smal. Elke optie erin bestaat om de regeling klein te houden: geen shell, geen luisteraar op alle interfaces, geen daemon. Lees het als een omvangsverklaring, niet als een recept.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:15900:mac.corp.example:5900 [email protected]De luisteraar aan 127.0.0.1 binden houdt hem weg van alle andere interfaces. Dat is geen formaliteit: een doorsturing die aan alle interfaces is gebonden maakt je laptop tot een open relay naar het bedrijfsnetwerk voor iedereen op dezelfde café-wifi. Als de poort al in gebruik is, kies een andere hoge poort en werk de viewer bij; stop geen ongerelateerde dienst om het voorbeeld te laten passen.
Het account op de bastion heeft ook toestemming nodig om naar die bestemming door te sturen. Sommige geharde SSH-configuraties schakelen poortdoorsturing volledig uit, en sommige beperken het met een permit-listen- of permit-open-richtlijn. Lees het serverbeleid voordat je aanneemt dat een geweigerd kanaal betekent dat het wachtwoord fout was.
Wat SSH versleutelt, en waar het stopt
De SSH-sessie beschermt verkeer van je Mac naar de bastion, en de doorsturing draagt het VNC-protocol binnen die sessie zonder het te begrijpen. Zodra de verbinding de bastion verlaat richting het doel, zit ze niet meer in je SSH-sessie. Welke bescherming er op die laatste sprong ook is, ze hoort bij het doelprotocol en bij de eigen controles van het privénetwerk.
Daarom moet een gewone laatste VNC-sprong niet als end-to-end versleuteld worden beschreven, alleen omdat de eerste sprong SSH gebruikte. Beschrijf de segmenten eerlijk: sterk van client tot bastion, en daarna wat het doel ondersteunt. Als de eis is dat het hele pad door één mechanisme wordt versleuteld, voldoet de doorsturing daar niet aan.
Authenticatie op het doel is weer een apart verhaal. Het SSH-account geeft geen macOS-login, en de schermdelingsdienst vraagt nog steeds om zijn eigen inloggegevens en past nog steeds zijn eigen toegangslijst toe. Een lokale luisteraar die een verbinding accepteert, bewijst niets over de vraag of de dienst op afstand de sessie toelaat.
Wanneer de volledige VPN de juiste keuze is
Kies de VPN wanneer de taak meer dan één poort nodig heeft: de beheer- en rapportagefuncties van Apple Remote Desktop gebruiken extra TCP- en UDP-verkeer dat één TCP-doorsturing niet draagt. Een doorsturing is geen gedeeltelijke implementatie van het hele product; het is een ander, kleiner gereedschap.
Kies hem wanneer meerdere beheerders vanaf wisselende locaties verbinden, omdat een beheerd profiel routes, inloggegevens en beleid verdeelt zonder dat iedereen een commandoregel verzint. Kies hem wanneer het auditspoor moet laten zien wie met wat verbond, want een SSH-sessie per gebruiker en een gedeelde lokale doorsturing laten heel verschillende registraties achter.
Kies hem, ten slotte, wanneer het doornetwerk helemaal niet vanaf een laptop bereikbaar zou moeten zijn zonder de eigen poort van de organisatie. Een persoonlijke doorsturing omzeilt die poort per ontwerp, en daarom hoort ze in een wijzigingsregistratie en niet in een shellgeschiedenis.
Laat de doorsturing luid falen
Gebruik ExitOnForwardFailure=yes zodat een mislukte binding de sessie stopt in plaats van een shell achter te laten die verbonden lijkt en niets doorstuurt. Houd de verificatie van de hostsleutel aan, en geef de voorkeur aan een sleutel of agent boven een wachtwoord. Test dan de exacte URL die de viewer gebruikt, want een werkende SSH-sessie en een werkende schermverbinding zijn twee verschillende resultaten.
Voor de native client op macOS bereik je de viewer via een lokale URL: open "vnc://127.0.0.1:15900". Als het venster opent en de host op afstand de authenticatie weigert, is de tunnel in orde en ligt het probleem bij het doel. Als het venster nooit opent, ligt het probleem bij de luisteraar of de poort.
Stop de sessie wanneer je klaar bent, en noteer de poort, de bastion, het doel en het accountbeleid. Een doorsturing die niemand heeft gedocumenteerd, is zes maanden later niet te onderscheiden van een achterdeur, en dat is het sterkste argument om hem klein, benoemd en tijdelijk te houden.