U houdt het misschien niet voor mogelijk, maar zo af en toe (als ik op het werk aan mijn nieuwe krachtige laptop met Windows XP zit) vergeet ik waarom ik zo graag met linux en andere open source software werk. Tot ik weer iets nieuws ontdek in die wondere geek-wereld. Zo ben ik deze week overdonderd door een mij tot voor kort volkomen onbekend aspect van ssh; tcp port forwarding ofte vpn for the linux-masses ..
Voor wie zo moedig was om van de inleidende paragraaf (op mijn homepage) toch nog door te klikken naar dit artikel, een korte uitleg als ‘fond’:
SSH staat voor secure shell, een ‘protocol’ voor beveiligde communicatie met een linux/unix-server. Met ssh krijg je vanop afstand toegang tot zo een machine in de vorm van een shell (te vergelijken met een dos-venster in windows, maar dan veel krachtiger). De beveiliging bestaat uit zware encryptie van alle data die over en weer gaat tussen de server en het ‘dos-venster’. de meest voorkomende implementatie van ssh op linux/ unix is openssh (gratis en open source).
Enig begrip van wat een ‘port’ (poort) is, kan ook helpen om te snappen waar ik het straks over heb. Een computer die op het internet aangesloten is, heeft een op dat moment uniek ip-adres waarop je die machine kunt bereiken (te vergelijken met een huisnummer). Op die computer worden er typisch echter verschillende diensten aangeboden. Daarom wacht elk van die diensten in principe aan een eigen ‘port’ op aanvragen. Zo een poort zou je kunnen vergelijken met de tientallen huisbellen (met parlofoon) in de hal van een appartementsgebouw. De belangrijkste diensten hebben een vaste poort; zo gaat al het webverkeer over poort 80, mail over 25 (om te versturen en 110 om af te halen) en ssh over 22.
Omdat IT- en security-verantwoordelijken beroepshalve paranoia moeten zijn, wordt zoveel mogelijk verkeer van de boze buitenwereld afgeschermd door de firewall op te dragen verkeer voor bijna alle computers en poorten tegen te houden. Daarom kun je van thuis uit bv. niet aan je computer op je werk. Met VPN kan dat wel en ssh tcp forwarding is daar een heel leuk zelfbouw-alternatief voor (als je ssh-toegang hebt tot een linux/unix server op het werk die niet in een DMZ ofzo staat) 🙂
Tot daar de theorie, dan nu de praktijk! Port forwarding is functionaliteit in ssh die toelaat om, via de beveiligde tunnel die ssh opzet over poort 22, requests naar andere poorten (andere diensten dus) te laten forwarden. Hoe? Wel:
ssh -L 5900:mydesktop.mycompany.be:5900 mylinuxserver
naam en paswoord geven en klaar is frank! alle verkeer voor de normaal van thuis uit onbereikbare mydekstop kan nu vanop mijn thuiscomputer (via localhost op poort 5900 naar mylinuxserver naar mydesktop op poort 5900) bereikt worden. en waarvoor ik dat dan gebruik? wel, 5900 is de vnc-poort. ik kan van thuis uit, op mijn linux-laptop, mijn windowsXP-laptop op het werk overnemen (de vncviewer van tightvnc, ook al gratis en open source, doet dat zelfs al automatisch, met de “-via”-optie). en met
ssh -L 1139:fileserver:139 mylinuxserver
en daarna
smbmount //fileserver/myshare myremoteshare -o ip=127.0.0.1,port=1139
kan ik mijn windows-gesharede homedrive op de fileserver op het werk rechtstreeks op mijn thuiscomputertje mounten (aanspreken). smbmount is overigens onderdeel van samba, een gratis en open source implementatie van SMB, het protocol waarmee windows shares werken.
andere mogelijkheden; je mail op een veilige manier binnenhalen (met pop3 of imap4 wordt je wachtwoord in principe immers ongeencrypteerd verstuurd). of surfen via de proxy van het werk. of met de exchange connecteren. vandaar: met ssh port forwarding kun je zo ongeveer alles wat je via vpn zou willen doen, maar niet durfde vragen aan die autistische coorporate IT’er op je werk. en wedden dat die man geen probleem heeft met incoming connections op port 22? 😉
ik heb nu overigens op mijn usb-key (waarvoor ik eigenlijk nog geen echt nuttig gebruik had gevonden) vncviewer en putty gezet. met putty (een ssh client voor op windows, ook gratis en open source) kun je ook port forwarden. waar ik ook kom, ik hoef mijn usb-key maar in te pluggen, putty op te starten en in te loggen op een unix/linux-machine op het werk en ik kan met vncviewer aan mijn laptop..
en for the record: op die nieuwe blinkende dell latitude d505 komt eerstdaags ook wel linux te draaien. kwestie van geduldig op de nieuwe Ubuntu te wachten, die perfect met de Intel Centrino chipset zou moeten kunnen werken .. en in tussentijd zorgt cygwin voor een vertrouwde shell ;D