Sikker tunnel til hjemmemaskin - med Mac fokus


Jeg har fra tid til annen behov til å koble meg til mitt eget hjemmenett - hovedsakelig fordi jeg har liggende noen filer der som av og til trengs på laptop'en - når jeg ikke er hjemme. Det er flere måter å få til dette på, ved hjelp av VPN funksjonalitet som ofte leveres i fra din nettverksleverandør for eksempel, men har du en Mac hjemme og en som du løper rundt med kan du også bruke SSH - eller sikker tunnelering om du vil.

 

apple

Problemet er bare det at SSH er skrevet av og for teknikere, og det er ikke akkurat rett frem å sette dette opp for personer som ikke er IT-kyndige og vel så det. Det finnes noen oppskrifter på internett, men de er jo som seg hør og bør stort sett skrevet på engelsk, og ofte også myntet på personer som har en del kunnskap om unix/linux og bruk av terminal.

 

Vel, jeg tenkte jeg skulle prøve meg på en forklaring som er forståelig/brukbar for flere enn som så, myntet spesielt på Mac OS X Tiger brukere. Så her følger en (forhåpentligvis) enkel forklaring. For enkelhets skyld vil jeg konsekvent snakke om hjemmemac og laptop som to begreper, hvor hjemmemac er den maskinen du har stående hjemme i ditt nettverk, mens laptop er den maskinen du benytter for å koble deg til med som du har med deg. Du vil selvsagt kunne benytte samme løsning om du ønsker å koble deg til et kontornettverk m.m., men den øvelsen får du gjøre på egen hånd... :)

 

Hva er sikker tunnelering?


Konseptet i seg selv er litt forvirrende for mange. Sikker tunnelering dreier seg rett og slett om å sende/motta informasjon fra en maskin til en annen over internett på en sikker måte. For å få til dette settes det opp en kryptert (kodet) forbindelse mellom disse maskinene, slik at andre maskiner ikke kan se hva som sendes. Når tunnelen er etablert så velger vi hvilken trafikk vi ønsker å kjøre gjennom tunnelen, eksempelvis e-post eller oppkobling av nettverksdisker.

 

 

Tre steg

Det er tre steg vi må gjennom for å kunne få til sikker tunnelering fra din laptop til din hjemmemac:

  1. Åpne i brannmur og hjemmenettverk for sikker tunnelering
  2. Sette opp sikker tunnelering på din hjemmemac
  3. Rute trafikk gjennom tunnelen


Jeg skal prøve å geleide deg gjennom alle disse punktene. Hold på hatten, her starter vi...

 

 

1. Åpning i brannmur og hjemmenettverk


For å kunne nå din hjemmemac er det vesentlig at du har en åpning inn i hjemmenettverket ditt, slik at det er mulig å komme til hjemmemac'en utenfra. Vi ønsker selvsagt ikke å gjøre dette på en slik måte at man kan gjøre hva som helst på hjemmenettverket ditt fra internett, bare logge på via en sikker tunnel. Siden det finnes massevis av leverandører av brannmurer er det vanskelig å gi noen god beskrivelse av hvordan dette gjøres.

 

Kortversjonen, for de som kan litt om brannmuroppsett, er å åpne for port 22 for inngående trafikk, helst bare også mot hjemmemac'en. Har du en nettverksleverandør som UPC eller NextGenTel har du et webgrensesnitt som benyttes for dette. Dersom dette er noe du ikke har kompetanse på, spør din nettverksleverandør om en oppskrift for åpning av inngående SSH traffikk, eller en generell beskrivelse for åpning av inngående trafikk mot en vilkårlig port. Når du følger instruksjonen bruker du da port 22 der du skal angi det. Spørres det om protokoll, angir du TCP som protokoll. Jeg går ikke nærmere inn på dette i denne instruksjonen, den blir lang nok som den er...

 

2. Hvordan setter jeg opp en sikker tunnel til mitt hjemmenett?


For å sette opp en sikker tunnel må du først slå på sikker tunnelering på hjemmemac'en. Dette gjør du gjennom "Sharing"/Delings-panelet i "System Preferences"/Systemvalg. Kryss av slik at "Remote login"/Ekstern pålogging er markert.

System Preferences001


Du kan teste at dette er satt opp og virker dersom du sitter på hjemmenettverket ditt med laptop'en ved å starte opp Terminal programmet og skrive inn følgende:

ssh brukernavn@hjemmemac.local

Brukernavnet her er et av brukernavnene du benytter for å logge deg på din hjemmemac. "hjemmemac.local" erstatter du med navnet på din hjemmemac, og legger på .local. Du kan også bruke ip-adressen som din hjemmemac benytter. Du finner ip-adressen til hjemmemac'en din ved å velge "Network"/Nettverk i fra "System Preferences"/Systemvalg og se på oversikten over nettverksforbindelser du har. Den øverste i listen som har en angitt ip-adresse og lyser grønt er den du skal benytte.

Ved første gangs bruk av SSH mot en maskin vil du få en melding som ser ut som dette:

The authenticity of host 'hjemmemac.local (10.0.0.10)' can't be established.
RSA key fingerprint is 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff.
Are you sure you want to continue connecting (yes/no)?

Dette er en melding som kommer fordi du aldri har vært pålogget mot maskinen før. Du kan trygt svare yes på denne meldingen. Du får da ytterligere en melding:

Warning: Permanently added 'hjemmemac.local,10.0.0.10' (RSA) to the list of known hosts.
Password:

Den første linjen er bare en informasjon til deg om at du nå har lagt til hjemmemac.local i listen over de maskinene du vil koble til. Den andre linjen kommer for at du skal kunne supplere med tilhørende passord for å få lov til å logge på. Dette er altså passordet til brukernavn på din hjemmemac.

Hvis alt går som det skal, bør du se noe ala dette i Terminal-programmet:

Last login: Thu Jun 28 11:06:19 2007 from 10.0.0.7
Welcome to Darwin!
[Hjemmemac:~] brukernavn%


Ser det omtrent slik ut? Gratulerer! Du har nå koblet deg til hjemmemac'en din gjennom en sikker tunnel. En liten ting som er greit å lære seg da er hvordan man avslutter denne sikre tunnelen. Det gjør du kort og enkelt enten ved å skrive exit i Terminal-vinduet, eller ved å trykke ctrl-d.

 

 

"So far so good" - men hva nå?


Nå har vi konstatert at du får forbindelse på lokalnettet ditt - men det er bare halve moroa selvsagt. Det viktigte er å få til dette også over internett. For at dette skal være enkelt å bruke i fremtiden skal vi sette opp en tjeneste som kalles for Dynamisk DNS, eller DynDNS som det ofte også blir forkortet til, på din hjemmemac. DNS er det som gjør at du kan skrive inn www.vg.no eller lignende i nettleseren din for å få opp en nettside istedet for å skrive inn en IP-adresse. Det finnes en gratis slik DynDNS tjeneste som man kan benytte hos dyndns.com (det finnes også andre leverandører som du kan benytte etter eget fritt ønske selvsagt). Alt du trenger er å lage deg et brukernavn og passord for tjenesten, deretter setter du opp en ny dynamisk DNS oppføring. Skjermbildet ser ut omtrent slik:

 

Safari002


Når du legger inn en oppføring her, vil den plukke med seg adressen som hjemmemac'en din har ut mot internett. Det du trenger å gjøre er å angi et navn, velge et domene (i fra nedtrekkslisten), og velge "Add". Eksempelvis kan du lage en DynDNS oppføring som blir hjemmemac.is-a-geek.com, som vist over. Hvis du ønsker å sørge for at den oppføringen du lager nå alltid holdes oppdatert, så last ned programmet DNSUpdate. Suppler programmet med din nylagde konto hos dyndns.com, og også hvilken DynDNS oppføring den skal holde vedlike. Du vil nå alltid kunne nå din hjemmemac med den oppføringen du laget i fra internett. Jeg bruker hjemmemac.is-a-geek.com videre i eksempelet her, men du endrer dette til hva det nå enn er du har laget. Hvis du kobler laptop'en din opp fra et annet nettverk slik at du har tilkobling til internett men ikke sitter hjemme, skal du nå kunne prøve å nå din hjemmemac i fra Terminal-vinduet med å skrive:

ping hjemmemac.is-a-geek.com

Du må trykke ctrl-c for å avbryte denne kommandoen. Den første linjen du får opp skal se omtrent slik ut:

PING hjemmemac.is-a-geek.com (www.xxx.yyy.zzz): 56 data bytes

Får du en slik melding er vi klare for tredje akt. Hvis du derimot får en slik melding:

ping: cannot resolve hjemmemac.is-a-geek.com: Unknown host

Så betyr dette at du ikke har klart å lage en DynDNS oppføring som fungerer. Følg instruksjonene til DynDNS eller din prefererte leverandør av dynamisk DNS for å løse opp i problemet.

Hvis du nå har både åpning i brannmur og fungerende DynDNS skal du nå kunne nå hjemmemac'en din i fra laptop'en med å skrive følgende i Terminal:

ssh brukernavn@hjemmemac.is-a-geek.com

Du skal få spørsmål om du vil legge til denne forbindelsen mm. som beskrevet over på nytt, siden du nå bruker en annen adresse for å koble til mot hjemmemac'en din (hjemmemac.is-a-geek.com istedt for hjemmemac.local eller ip-adressen).

Alt OK så langt? Bra - har du traversert de vanskelige hindrene! Da skal vi gå løs på moroa, nemlig å velge hvilken trafikk vi vil kjøre gjennom tunnelen vi har laget.

 

3. Rute trafikk gjennom tunnelen

For å kunne rute trafikk gjennom tunnelen må vi først lukke den igjen. Vi må nemlig angi ved oppstart av tunnelen hvilken trafikk vi vil kjøre gjennom (vel, det er mulig å gjøre det motsatt vei også, men for enkelhets skyld holder vi oss til å gjøre dette ved oppstart). Du lukker tunnelen og forbindelsen med å skrive exit eller å trykke ctrl-d i Terminal-vinduet.

 

All trafikk over internett går gjennom spesifikke porter som det kalles. Eksempelvis brukes port 80 for internett-trafikk, port 25 for å sende epost, port 110 for å motta epost osv. Jeg tenkte å vise to eksempler her nå, men du kan tilpasse disse etter eget forgodtbefinnende. Det er to ting jeg gjerne vil gjøre når jeg er utenfor hjemmenettverket mitt:

  1. Sende epost som om jeg satt hjemme (altså via min nettverksleverandør)
  2. Koble meg til og bruke disker som er koblet opp på min hjemmemac

Sende epost som om jeg satt hjemme

Det første eksempelet er det vanskeligste. For å få til dette skriver du følgende i Terminal-vinduet på laptop'en:

 

ssh -L 8025:mail.nextgentel.no:25 brukernavn@hjemmemac.is-a-geek.com

Ikke sett kaffen i halsen - jeg skal forklare hieroglyfene nå. Når man bruker -L som et parameter til ssh, så sier man at man vil omdirigere en lokal port. Det første nummeret som står på denne linjen, 8025, er den porten man vil omdirigere trafikken til på laptop'en. Siden det står 8025 her nå betyr det altså at trafikken som jeg vil omdirigere skal sendes via port 8025 på laptop'en.

Det som kommer etterpå, mail.nextgentel.no:25, er hvilken trafikk jeg ønsker å omdirigere. Her vil jeg altså flytte trafikk som går inn på port 8025 på laptop'en min, via hjemmemac'en, til port 25 hos mail.nextgentel.no. Forvirret? Kanskje en skisse av det hele er litt lettere å forholde seg til.

SSH prinsippskisse

Var det bedre? Håper det. For å kunne bruke tunnelen nå, må du angi i mailprogrammet ditt at du vil benytte den - det vil si angi hvor tunnelen begynner så og si. Som mailserver skal du derfor benytte localhost, eller hvis du vil bruke ip-adresse 127.0.0.1, mens portnummeret må settes til 8025. 8025 er forøvrig et vilkårlig nummer som du kan sette til hva du vil, bare vær obs på at portnummer under 4096 er reservert og derfor ikke lett tilgjengelig for omdirigering av trafikk.

 

Koble meg til og bruke disker som er koblet opp på min hjemmemac

Det andre eksempelet, som jeg har hatt nytte av mange ganger, er å kunne koble opp og bruke disker som er tilgjengelig på min hjemmemac i fra laptop'en. Jeg bruker Apple sin måte å dele ut disker på, som kalles for AFP, men du kan like gjerne bruke denne metoden for å koble opp Windows/SMB disker: For å gjøre dette skriver du følgende i Terminal-vinduet:

 

ssh -L 8548:127.0.0.1:548 brukernavn@hjemmemac.is-a-geek.com

Som du ser er det samme oppbygning av denne kommandoen, men vi bruker litt andre tall. 8548 er her vår vilkårlige port som vi skal bruke for å kunne benytte tunnelen. 127.0.0.1:548 betyr at vi ønsker å dirigere trafikken til selve hjemmemac'en (127.0.0.1 eller localhost er en spesiell ip-adresse som betyr "denne maskinen") og til port 548, som er den porten som benyttes for AFP trafikk. For SMB trafikk må du angi port 139 istedet.

Du skal nå kunne nå diskene på hjemmemac'en din med å gå til Finder, trykke eple-k og skrive inn afp://localhost:8548 og velge connect.

Til slutt...
Du kan koble opp flere porter samtidig bare med å angi flere -L parametre til SSH. Eksempelvis kan vi slå sammen de to eksemplene slik:

ssh -L 8548:127.0.0.1:548 -L 8025:mail.nextgentel.no:25 brukernavn@hjemmemac.is-a-geek.com

Håper dette var forståelig - spørsmål og kommentarer mottas gjerne som kommentarer til bloggposten :)