Hvordan sette opp Secure Remote Networking med OpenVPN på Linux, del 1

Det har alltid vært klokt å vikle en varm komfortabel lag med kryptering via Internett reiser til folie Snoops av alle slag, og med vår egen regjering slurping opp hver bit engros det er mer viktig enn noensinne. OpenVPN er det beste valget for å beskytte Networking over usikre nettverk. I dag skal vi lære en rask måte å sette opp OpenVPN så du kan sikkert få tilgang til hjemmeserveren når du er på veien

En rask kommentar på VPN. Det er mange kommersielle VPN som ikke er verdt biter de er skrevet på. De er litt bedre enn SSL-beskyttede nettsteder, fordi de stoler på alle klienter. En ekte VPN (virtual private network) kobler sammen to betrodde endepunkter enn usikre nettverk. Du kan ikke bare logge inn fra hva tilfeldig PC du finner, og dette er bra fordi (formodentlig) du forstår at du logger deg inn på din private nettverk fra en infisert vert er en dårlig ting å gjøre, uansett hvor sikker den forbindelse er. Så må du konfigurere både server og klient.

OpenVPN Hurtigstart

Du trenger to datamaskiner på forskjellige subnett, som et kablet og trådløst PC på samme nettverk (eller et par Linux gjester i Virtualbox), og du trenger å vite IP-adressene til både PC. La oss kalle vårt eksempel datamaskiner Studio og Shop. Installere OpenVPN på dem begge. OpenVPN er inkludert i de fleste Linux-distribusjoner, slik at du kan installere den med din favoritt pakkebehandler. Dette eksemplet er for Debian, Ubuntu, og sine utallige etterkommere:

 $ sudo apt-get install openvpn OpenVPN-svarteliste 

Det installerer serveren og et lite program for å sjekke svarteliste over kompromitterte nøkler. Du må installere svarteliste kontrolløren! Fordi det var en gang Debian distribuert en ødelagt versjon av OpenSSL som hadde brukket tilfeldig nummer generator, så taster opprettet med dette antas å være for sårbare til å stole på. Tilfeldighetsgeneratoren var egentlig ikke tilfeldig, men forutsigbart. Dette skjedde helt tilbake i 2008, og alle som brukte den defekte OpenSSL skulle jakte ned og erstatte sine svake nøkler. Selv om det har vært over fem år, det er billig forsikring å bruke svartelisten kontrolløren.

La oss nå prøve det ved å lage en ukryptert tunnel mellom våre to PCer. Først ping hver maskin for å sørge for at de snakker med hverandre. Så sørg for at OpenVPN ikke kjører, fordi vi kommer til å starte den manuelt:

 $ ps ax | grep openvpn 

Hvis det er det, drepe den. La oss si at Studio IP-adresse er 192.168.1.125, og Shops er 192.168.2.125. Åpne en ukryptert tunnel fra Studio å Shop:

$ sudo openvpn --remote 192.168.2.125 --dev tun0 --ifconfig 10.0.0.1 10.0.0.2

Deretter fra butikk til Studio:

 $ sudo openvpn --remote 192.168.1.125 --dev tun0 --ifconfig 10.0.0.2 10.0.0.1 

Når du gjør en vellykket tilkobling vil du se noe som dette:

 Ons 16 oktober 2013 ******* ADVARSEL *******: alle krypterings- og autentiseringsfunksjoner deaktivert - alle data vil bli tunnel som cleartextWed 16 oktober 2013 TUN /TAP enhet tun0 openedWed 16 oktober 2013 do_ifconfig, tt - > ipv6 = 0, TT > did_ifconfig_ipv6_setup = 0Wed 16 oktober 2013 /sbin /ifconfig tun0 10.0.0.1 pointopoint 10.0.0.2 MTU 1500Wed 16 oktober 2013 UDPv4 knytte lokale (bundet): [udef] Wed 16 oktober 2013 UDPv4 lenke fjern: [AF_INET] 192.168.2.125:1194Wed 16 oktober 2013 Peer Connection Initiert med [AF_INET] 192.168.2.125:1194Wed 16 oktober 2013 initialisering Sequence Fullført 

"initialisering Sequence Fullført" er de magiske ordene som bekrefter at du gjorde det riktig. Du bør være i stand til å pinge frem og tilbake med tunnel adresser, ping 10.0.0.1 og ping 10.0.0.2. Når du bygger din tunnel kan du bruke hva IP-adresser du ønsker som ikke overlapper med ditt eksisterende nettverk. Å lukke tunnel trykker Ctrl + c.

Just for fun åpne en SSH-økt over tunnelen. Figur 1 viser en vellykket SSH innlogging over en VPN tunnel, og det demonstrerer også fancy Message of the Day fra Sett en Snakker Cow i Linux Message of the Day:

 $ ssh [email protected] 


Hurra, det fungerer!

Kryptert VPN Tunnel

Dette er alt morsomt og spennende, men meningsløs uten kryptering, så vi får satt opp en enkel statisk nøkkel konfigurasjon . Det er ikke så sterk som en skikkelig public key infrastructure (PKI) med rotsertifikater og tilbakekall og alt det gode ting, men det er en god nok løsning for ensom nerd som ønsker å ringe hjem fra veien. OpenVPN inkluderer fully en kommando for å opprette statiske nøkkelen, så oppretter en katalog for å lagre nøkkelen i, lage nøkkelen, og gjøre det skrivebeskyttet for filen eier:

 $ sudo mkdir /etc /openvpn /tastene /$ sudo openvpn --genkey --secret /etc/openvpn/keys/static.key$ sudo chmod 0400 /etc/openvpn/keys/static.key

This er en ren tekst nøkkel som du kan åpne i en tekst editor og se på hvis du er nysgjerrig, og du kan kalle det hva du vil; du trenger ikke å kalle det "static.key". Kopier denne nøkkelen til både computers-- ja, samme nøkkel. Det er ikke en privat-offentlig nøkkelpar, men bare én felles nøkkel.

Nå skal vi lage noen enkle bones konfigurasjonsfiler for hver datamaskin. (På Debuntu etc. er det ingen standard konfigurasjonsfiler, men snarere et vell av eksempler på filer i /usr /share /doc /OpenVPN /.) I min lille fliken test Studio er serveren, og Shop er vandrende laptop som vil logge i serveren. Min server konfigurasjonsfilen er /etc /openvpn /studio.conf, og dette er alt det har:

 # config for Studiodev tunifconfig 10.0.0.1 10.0.0.2secret /etc/openvpn/keys/static.key < p> Gjør denne filen lesbar og skrivbar kun til filen eier: 
 $ sudo chmod 0600 /etc/openvpn/studio.conf

The konfigurasjonsfil på klienten er lik, med tillegg av IP adressen til serveren:

 # config for Shopdev tunifconfig 10.0.0.2 10.0.0.1secret /etc/openvpn/keys/static.keyremote 192.168.1.125 

Mind rekkefølgen på IP-adresser på ifconfig linje , fordi de trenger å være i størrelsesorden lokale > fjernkontroll. Nå fyre opp OpenVPN på serveren, angi serveren konfigurasjonsfilen, og gjør det samme på din klient:

 $ sudo openvpn /etc/openvpn/studio.conf$ sudo OpenVPN /etc/openvpn/shop.conf 

Du vil se den samme "initialisering Sequence Completed" -melding for en vellykket tilkobling, og du må også se etter fravær av denne meldingen, som skal ha dukket opp da du opprettet un-kryptert tunnel:

 ******* ADVARSEL *******: all kryptering og autentisering funksjoner deaktivert 
Brannmurer og dynamiske IP-adresser

OpenVPN selv er enkel å konfigurere. De største problemene har å gjøre med brannmurer og dynamiske IP-adresser. Det finnes Skillion forskjellige brannmurer i verden, så jeg skal la det som lekser for å finne ut hvordan å komme gjennom det trygt. OpenVPN ønsker port 1194, og da vil du ønsker å ha en videresending regel som peker til den datamaskinen du vil ha tilgang til.

Dynamic IP-adresser er en annen hassle. Dyn.com er en billig måte å håndtere dynamisk IP oppdrag fra din ISP. Eller du kan være i stand til å betale din ISP noen dollar for å få en statisk adresse.

På dette punktet kan du stoppe og kaller det bra, fordi du manuelt kan starte OpenVPN på serveren din og la den venter på deg , ta den bærbare datamaskinen ut i verden, og koble til serveren når du vil. Det er imidlertid noen avgrensninger vi kan legge eksempel daemonizing OpenVPN på serveren, ved hjelp av Network Manager for å gjøre tilkoblingen automatisk, og den største manglende brikken i OpenVPN howtos: hvordan du kan få tilgang til eksterne ressurser. Så kom tilbake neste uke for resten av historien.