Virtuelle private netværk (VPN'er) giver dig mulighed for at skjule dine online dataoverførsler og forbedre din sikkerhed, mens du surfer på internettet fra offentlige steder. Mange online-udbydere tilbyder både gratis og betalte VPN-muligheder, som du kan bruge. Men selv de bedste betalte planer kan være upålidelige eller langsomme til tider.

Hvis du kun kunne oprette din egen VPN mellem din mobile computer og din hjemmecomputer.

Faktisk er denne proces nemmere end du måske tror. I dag diskuterer vi, hvordan du kan bruge OpenVPN til at oprette en sikker forbindelse mellem en klient og en server på en Linux-maskine.

Husk på, at vi opretter en routing-konfiguration og ikke en brodannende, hvilket skal være fint for de fleste brugssager. Windows-brugere kan følge med ved at læse OpenVPN-dokumentationen, begyndende med afsnittet om oprettelse af en certificeringsmyndighed. Kommandoer, der bruges i Windows, svarer til dem, der vises nedenfor.

Hvad du har brug for

Du skal bruge to computere - den ene er servermaskinen, mens den anden er klienten. Servermaskinen kan være dit hjemme-skrivebord eller en Linux-forekomst fra DigitalOcean eller Linode. Klientmaskinen er den computer, du bruger regelmæssigt. Da denne tutorial er færdig på Linux, skal begge computere også køre Linux.

Bemærk : I denne vejledning bruger vi Ubuntu som vores distro for både serveren og klientmaskinen.

Installation af OpenVPN

For at komme i gang skal du installere OpenVPN og Easy-RSA på din server. Installer derefter OpenVPN på din klientmaskin.

På Ubuntu skal du installere Easy-RSA fra denne Github-side. Ubuntu indeholder Easy-RSA version 2 i dets repositorier. Github-linket tilbyder Easy-RSA version 3, som følger de kommandoer, jeg vil bruge i denne artikel.

 sudo apt-get installer openvpn git klon https://github.com/OpenVPN/easy-rsa.git 

I den mappe du klonede Github-depotet i, kopieres den "easyrsa3" -katalog, den indeholder til "/ etc / easy-rsa /."

 sudo mkdir / etc / easy-rsa sudo cp -r ./easyrsa3/* / etc / easy-rsa / 

Public Key Infrastructure (PKI)

OpenVPN benytter en Public Key Infrastructure (PKI) til at etablere identiteten af ​​servere og klienter, så de separate enheder kan tale med hinanden. PKI bruger en mastercertifikatmyndighed (CA) sammen med individuelle certifikater og private nøgler til hver server og klient.

CA skal underskrive server- og klientcertifikater. OpenVPN kontrollerer derefter for at se, at serveren autentificerer hver klients identitet, og på samme tid kontrollerer hver kunde identiteten af ​​serveren.

Opsætningen her er mere kompliceret end du måske finder for PPTP-stilforbindelser, men det giver bedre sikkerhed for brugerne og giver serveren større frihed til at acceptere eller nægte anmodede indkommende klientforbindelser.

Oprettelse af CA-certifikatet

For strammere sikkerhed anbefales det, at din CA-maskine er forskellig fra din server. For kortfattet brug vil denne artikel bruge den samme maskine til begge opgaver. Du bør ændre dine filkopieringsprocedurer for at imødekomme din situation - om det bruger scp til netværksoverførsler eller ved hjælp af en USB-nøgle til manuelt at flytte filer.

Bemærk : Hvis du bruger en separat computer som din CA, skal du installere Easy-RSA på den pågældende maskine.

1. Skift mapper til "/ etc / easy-rsa /:"

 cd / etc / easy-rsa / 

2. Kopier eventuelt "/etc/easy-rsa/vars.example" til "/ etc / easy-rsa / vars." Åbn derefter vars for at redigere indholdet:

 sudo cp ./vars.example ./vars sudo nano ./vars 

3. Indtast detaljerne som dit land, provins, by, organisation og e-mail. Uanmeldte linjerne vist her ved at fjerne "#" i begyndelsen af ​​hver enkelt.

Når du er færdig med redigering, skal du gemme (Ctrl + o) og exit (Ctrl + x).

4. Initialiser din nye PKI og generer Certificate Authority-keypair, som du vil bruge til at underskrive individuelle server- og klientcertifikater:

 eksport EASYRSA = $ (pwd) sudo ./easyrsa init-pki sudo ./easyrsa build-ca 

Kopier den ca.crt fil, du netop har oprettet til din OpenVPN server bibliotek. Du bør også ændre sin ejer og gruppe med Chown:

 sudo cp /etc/easy-rsa/pki/ca.crt / etc / openvpn / server / sudo chown root: root /etc/openvpn/server/ca.crt 

Oprettelse af servercertifikatet og den private nøgle

Skift tilbage til din Easy-RSA-mappe og generer servercertifikatet og dets private nøgle:

 cd / etc / easy-rsa sudo ./easyrsa init-pki sudo ./easyrsa gen-req ServerName nopass 

Du kan ændre "Servernavn" i kommandoen ovenfor til hvilket navn du ønsker. Sørg for at afspejle denne ændring, når du kopierer din nye nøgle til OpenVPN-serverkatalogen:

 sudo cp /etc/easy-rsa/pki/private/ServerName.key / etc / openvpn / server / 

Diffie-Hellman Parameters File

OpenVPN gør brug af Diffie-Hellman (DH) nøgleudvekslingsmetoden til sikker udveksling af kryptografiske nøgler på tværs af et netværk. Du vil oprette en DH parametre fil med følgende kommando:

 sudo openssl dhparam -out /etc/openvpn/server/dh.pem 2048 

Det endelige nummer, 2048, i den kommando viser antallet af bits, der bruges til at oprette filen. For eksempel kan du bruge 4096, men det ville tage meget længere tid at generere filen og ville ikke forbedre sikkerheden meget. Standard er 2048, og den værdi er tilstrækkelig til de fleste brugssager.

Hash-baseret Message Authentication

OpenVPN bruger også en Hash-baseret Message Authentication (HMAC) signatur for at beskytte sårbarheder i SSL / TLS håndtryk. Opret filen med denne kommando:

 sudo openvpn --genkey --secret /etc/openvpn/server/ta.key 

Klientfiler

På dette tidspunkt vil du have oprettet en række filer til din server. Nu er det tid til at oprette filer til dine kunder. Du kan gentage denne proces flere gange for så mange kunder som du har brug for. Du kan oprette klient filer sikkert på enhver computer med Easy-RSA installeret.

Indtast Easy-RSA-biblioteket og initialiser PKI igen, hvis du ikke allerede har gjort det:

 cd / etc / easy-rsa sudo ./easyrsa init-pki 

Opret en klientnøgle og et certifikat. Skift mapper, hvis du hoppede over det foregående trin.

 cd / etc / easy-rsa sudo ./easyrsa gen-req ClientName nopass 

Hvis du gentager processen, behøver du ikke at initialisere PKI for hver ny klient. Bare sørg for at ændre "ClientName" for at være unik hver gang.

Signing Server og Client Certificates

CA skal nu underskrive dine server- og klientcertifikater.

Hvis du ser i din "/ etc / easy-rsa / pki / reqs /" -fil, skal du se alle de anmodede (.req) -filer Easy-RSA oprettet i de tidligere easyrsa gen-req kommandoer.

I dette screenshot er der kun to .req filer. Dit nummer vil variere, hvis du har lavet mere end en klient i det foregående trin.

Hvis du brugte en separat CA-maskine, skal du nu overføre disse .req-filer til CA'en til underskrift. Når det er færdigt, skift til Easy-RSA-biblioteket og underskriv dine filer med følgende kommandoer, og sørg for at afspejle den rigtige placering af hver .req og navnet på hver server og klient.

 cd / etc / easy-rsa sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ServerName.req Server1 sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ClientName.req Client1 sudo ./easyrsa sign-req server Server1 sudo ./easyrsa sign-req klient Client1 

Bemærk, at du skal give Easy-RSA et andet navn til dine server- og klientcertifikater. ServerName.req vil blive brugt her, for eksempel for at oprette Server1.crt.

Du skal nu finde to nye filer - "/etc/easy-rsa/pki/issued/Server1.crt" og "/etc/easy-rsa/pki/issued/Client1.crt" - som du overfører til deres respektive maskiner (ses i næste afsnit af denne artikel). Du kan slette eventuelle .req filer, der forbliver.

Passerer langs .CRT-filerne

Nu er de underskrevne certifikater (hver .crt) klar til at arbejde for deres ejere. Flyt serverfilen til sin OpenVPN-placering og lav en ny mappe til klientcertifikaterne:

 sudo mv /etc/easy-rsa/pki/issued/Server1.crt / etc / openvpn / server / sudo chown root: root /etc/openvpn/server/Server1.crt sudo mkdir / etc / easy-rsa / pki / underskrevet sudo mv /etc/easy-rsa/pki/issued/Client1.crt / etc / easy-rsa / pki / signeret / 

Oprettelse af "... pki / signed /" -mappen her giver dig en mærket placering for at placere flere klientcertifikater.

Shared Server og Client Files

Nu skal du have fem filer i din "/ etc / openvpn / server /" mappe: ca.crt, dh.pem, Server1.crt, ServerName.key og ta.key.

Du skal bruge to af de samme filer i din OpenVPN-klientmappe på klientens maskine. Kopier dem over ved hjælp af scp eller en flash disk, som det passer. Kopier både "/etc/openvpn/server/ca.crt" og "/etc/openvpn/server/ta.key" til din klients "/ etc / openvpn / client /."

Sørg for at kopiere dit klientcertifikat og nøglen til samme sted. Kopier "/etc/easy-rsa/pki/signed/Client1.crt" og "/etc/easy-rsa/pki/private/ClientName.key" til din klients "/ etc / openvpn / client /." Gentag denne proces for eventuelle ekstra klienter du måtte have oprettet.

For enhver klient skal du nu have fire filer i "/ etc / openvpn / client:" Client1.crt, ClientName.key, ca.crt og ta.key.

Server- og klientkonfigurationsfiler

Dit sidste skridt inden du starter VPN'en er at redigere konfigurationsfiler til serveren og klienten. Find først "default server.conf" og "client.conf" -filerne. De vil sandsynligvis være på en af ​​disse steder:

  • ”/ usr / share / openvpn / eksempler”
  • "/ Usr / share / doc / openvpn / examples / sample-config-filer /" (Ubuntu konfigs findes her)

Bemærk : På Ubuntu skal du udpakke filen "server.conf.gz". Brug gunzip -d ./server.conf.gz at hente server.conf filen fra den komprimerede pakke.

Kopier hver config fil til sin respektive "/ etc / openvpn / server /" og "/ etc / openvpn / client /" bibliotek.

I server.conf foretages følgende ændringer. Sørg for, at navnene og lokaliteterne på din ca.crt, Server1.crt, ServerName.key og dh.pem er angivet i din config-fil. Du skal muligvis bruge fulde stier - som en linje, der læser "cert /etc/openvpn/server/Server1.crt."

Skift tls-auth... linje for at læse tls-crypt ta.key . Igen kan en fuld sti være nødvendig.

Uncomment (fjern ";") fra "user nobody" og "group nobody" linjer.

For din klient vil du lave tilsvarende ændringer. Efter at have lavet konfigurationsfilen, skal du afspejle navnene og lokaliteterne på din ca.crt, Client1.crt, ClientName.key og ta.key (med samme træk fra tls-auth... til tls-crypt... ) Indsæt navnet eller IP-adressen og porten på din server.

Tid til at forbinde

Nu kan du starte din server og klient. Dette er et simpelt spørgsmål, hvis alt ovenfor gik som planlagt.

Start serveren med:

 openvpn /etc/openvpn/server/server.conf 

og klienten med:

 openvpn /etc/openvpn/client/client.conf 

Den vellykkede oprettelse af en VPN vil vise klientens udlæsning "Initialization Sequence Completed" i slutningen af ​​dens output. Du vil også finde en ny type forbindelse i dine tilgængelige netværksinterfaces.

Dette skærmbillede viser "tun0" -grænsefladen. Det er det, som OpenVPN-serveren lavede. Du kan se adressen som 10.8.0.1 og pinge den adresse fra klienten for at bekræfte en vellykket forbindelse.

Routing Internet Trafik via serveren

På dette tidspunkt vil du sikkert have adgang til internettet via din server fra din fjernklient. For at gøre dette skal du først ændre din serverkonfigurationsfil. Tilføj linie push 'redirect-gateway def1 til din server konfigurationsfil.

 echo "push" omdirigerings gateway def1 \ "" | sudo tee -a /etc/openvpn/server/server.conf 

Du skal også fortælle din server om at rette klientens internettrafikanmodninger korrekt. Denne kommando vil ændre dine Iptables pakkefiltreringsregler:

 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 

Hvis du ikke har ændret linjen "server 10.8.0.0 255.255.255.0" i din server.conf-fil, skal IP-adressen i den kommando fungere. Du bliver nødt til at ændre "eth0" for at matche din serverens ethernet-grænseflade. Du kan se fra tidligere skærmbilleder, at min maskine bruger "enp19s0."

Derefter kan du skubbe DNS-indstillinger til klienten. Enhver adresse en klient kan nå kan blive skubbet. Du kan bruge denne kommando som udgangspunkt:

 ekko "push \" dhcp-option DNS 10.8.0.1 \ "" | sudo tee -a /etc/openvpn/server/server.conf 

Endelig kan du aktivere pakken videresendelse på serveren som følger:

 ekko 1 | sudo tee / proc / sys / net / ipv4 / ip_forward 

Du skal nu kunne bruge din klient til at få adgang til internettet via VPN.

Konklusion

Jeg ved, at dette har været en lang vej. Forhåbentlig har du fundet succes med at oprette en VPN og tilslutte til internettet på en sikker måde.

Hvis ikke andet, har det været en god lærerfaring for, hvad der kræves for at skabe en sikker digital tunnel. Tak fordi du sluttede mig til enden.