Kako nastaviti strežnik OpenVPN na Ubuntu 20.04

Najboljši vodnik za nastavitev varnega strežnika OpenVPN v Ubuntu 20.04

Navidezno zasebno omrežje (VPN) vam omogoča, da se varno in zasebno povežete z oddaljenim zasebnim omrežjem, na primer s pisarniškim omrežjem ali internetom, na način, kot da ste neposredno povezani z zasebnim omrežjem.

VPN deluje v arhitekturi strežnik-odjemalec. Strežnik VPN je nameščen na napravi in ​​je javno dostopen prek interneta. Strežnik VPN je mogoče konfigurirati tako, da omogoča povezavo z zasebnim LAN-om, kot je pisarniško omrežje, ali omogoča povezave z internetom. Uporabnik se poveže s strežnikom VPN s pomočjo odjemalca VPN na svojem lokalnem računalniku. Komunikacija med strežnikom VPN in odjemalcem poteka z uporabo varnega protokola tuneliranja. Internetu se zdi, kot da je cilj prometa strežnik VPN; vendar promet prehaja do odjemalca preko strežnika.

VPN ima veliko uporab v vsakdanjem življenju, na primer varno povezovanje z javnim omrežjem Wifi, ki je pogosto ogroženo ali zaobide geo-omejitve na določenih spletnih mestih s povezovanjem na VPN s sedežem v državi, ki jo spletno mesto dovoljuje.

OpenVPN je široko uporabljena implementacija VPN, ki omogoča širok nabor konfiguracij in možnosti. Uporablja protokol Secure Sockets Layer (SSL) za šifriranje podatkov in predhodno skupnih ključev, uporabniškega imena/gesla ali potrdil za avtentikacijo odjemalca VPN. V tem članku bomo videli, kako nastaviti strežnik VPN in odjemalca VPN na Ubuntu 20.04.

Namestitev

OpenVPN je na voljo v uradnih repozitorijih Ubuntuja v paketu openvpn. Ta paket namesti tako strežnik OpenVPN kot tudi odjemalca.

sudo apt namestite openvpn

Kot smo že omenili, OpenVPN uporablja potrdila SSL za šifriranje podatkov med strežnikom in odjemalcem. Za izdajo potrdil za VPN moramo vzpostaviti lastno potrdilo (CA). Upoštevajte, da je treba to nastaviti na drugem računalniku kot na tistem, kjer je nastavljen OpenVPN; razlog je, da če je na istem strežniku in če je ogrožen, lahko napadalec dostopa do zasebnega ključa in tako napade povezavo VPN.

Za nastavitev overitelja potrdil bomo uporabili orodje, imenovano 'Easy-RSA'. Če ga želite namestiti, zaženite naslednje na napravi CA, strežniškem računalniku OpenVPN in odjemalskem računalniku, saj je za nastavitev CA potrebna konfiguracija na vseh treh.

sudo apt install easy-rsa

Zdaj bomo najprej konfigurirali overitelj potrdil na napravi CA in izvedli nekaj potrebnih konfiguracijskih korakov za isto na strežniku Open VPN.

Nastavitev overitelja potrdil

Začetna nastavitev na napravi CA

Zdaj ta paket namesti ukaz z imenom make-cadir ki se uporablja za ustvarjanje mape za konfiguracijo overitelja potrdil. S tem ustvarimo mapo in vnesite mapo.

make-cadir cert_authority && cd cert_authority

Odprite imenovano datoteko vars ustvarjeno v tem imeniku. Ta datoteka vsebuje nekaj konfiguracijskih spremenljivk, ki jih moramo spremeniti. Vrednosti, ki jih je treba spremeniti, so v vrsticah 91-96, za komentarjem o Organizacijska področja ki opisuje ta polja. Odkomentirajte vrstice in izpolnite ustrezne vrednosti namesto vzorčnih vrednosti.

Shranite in zaprite datoteko. Če uporabljate urejevalnik vim, pritisnite Esc, tip :wq in pritisnite Vnesite za shranjevanje in izhod.

Nato zaženemo easyrsa program v imeniku za nastavitev infrastrukture javnih ključev (PKI), ki bo uporabljena za generiranje javnega ključa in potrdil.

./easyrsa init-pki

Naslednji korak bo ustvaril ključ in potrdilo CA. Ko ukaz zahteva geslo, vnesite geslo za ključ CA. Ob pozivu vnesite tudi skupno ime. Če pustite to prazno, bo uporabljeno privzeto ime Easy-RSA CA ime.

./easyrsa build-ca

Kot lahko vidimo iz izhoda, sta bila certifikat in ključ ustvarjena. Ta ključ bo uporabljen za podpis potrdil odjemalca in strežnika, zato se ga nikoli ne smete dotikati/spreminjati.

Zdaj imamo nastavitev PKI. Naslednji korak je izdelava strežniškega ključa in potrdila na računalniku, ki ga bomo uporabljali kot strežnik OpenVPN. To potrdilo bo kasneje podpisala naprava CA.

Ustvarjanje strežniškega ključa in potrdila na strežniškem računalniku

Easy RSA smo že namestili na strežniško napravo. Zdaj izvedite tri korake na strežniškem stroju, ki smo jih prej izvedli na stroju CA, tj. ustvarjanje imenika CA z uporabo make-cadir in gredo vanj ter spreminjajo spremenljivke v vars datoteko in generiranje PKI z uporabo ./easyrsa init-pki ukaz.

Nato moramo zagnati ukaz za generiranje zahteve in ključa za potrdilo strežnika.

./easyrsa gen-req strežnik nopass

Upoštevajte, da smo možnost prepustili nopass tako da nas ukaz ne bo pozval, da vnesemo geslo za ključ strežnika. Še vedno bo zahteval skupno ime za strežnik, ki ga lahko vnesete kar koli ali ga pustite prazno za privzeto ime (strežnik) biti uporabljeno.

Premaknite ustvarjeno ključno datoteko v /etc/openvpn imenik.

sudo mv pki/private/server.key /etc/openvpn

Pošljite zahtevo za potrdilo napravi CA. Uporabili bomo ukaz scp Za ta namen.

scp pki/reqs/server.req uporabnik@CA_MACHINE_HOSTNAME:/imenik

Na zgornjem posnetku zaslona je gostitelj 45.79.125.41 stroj CA. Potrdilo smo kopirali v imenik /root.

Zdaj je bilo potrdilo strežnika kopirano v CA stroj. Naslednji korak je, da se vrnete na napravo CA in podpišete to potrdilo.

Podpis strežniškega potrdila v CA

Najprej preverimo, ali je bila datoteka zahteve za potrdilo s strežnika kopirana na napravo CA. Pojdite v imenik, kamor smo kopirali datoteko (/root v mojem primeru) in zaženite ls.

:~# cd /root && ls cert_authority server.req

Kot lahko vidimo, datoteka server.req je prisoten. Nato pojdite v imenik CA in uvozite to zahtevo.

cd cert_authority ./easyrsa import-req /root/server.req strežnik

Če želite podpisati to zahtevo, zaženite naslednji ukaz.

Strežnik strežnika ./easyrsa sign-req

Tukaj je prvi argument vrsta zahteve, tj. strežnik, drugi argument pa je skupno ime strežniškega stroja, za katerega smo prej uporabili privzeto vrednost, tj. strežnik.

Vnesite besedno zvezo da, in geslo za ključ CA, ko ste pozvani.

Zdaj lahko odstranimo datoteko zahteve za potrdilo in kopiramo ustvarjeno potrdilo za strežnik ter javno potrdilo CA nazaj na strežniško napravo.

rm /root/server.req scp pki/issued/server.crt [email protected]:/root scp pki/ca.crt [email protected]:/root

Nato moramo izvesti še nekaj korakov, da zagotovimo varno povezavo VPN.

Generiranje parametrov DH

Izmenjava ključev DH (Diffie-Hellman) je algoritem za zagotavljanje varne izmenjave kripto ključev prek nezaščitenega kanala. Najprej premaknimo prejeto potrdilo in javno potrdilo CA /etc/openvpn.

mv /root/ca.crt /root/server.crt /etc/openvpn

Pojdite v mapo CA na strežniškem računalniku in zaženite naslednji ukaz, da ustvarite parametre DH. Ustvarjanje lahko traja dolgo.

./easyrsa gen-dh

Zdaj premaknite ustvarjeno datoteko v /etc/openvpn.

mv /root/cert_authority/pki/dh.pem /etc/openvpn

Ustvarjanje TA ključev

OpenVPN uporablja še en dodaten varnostni ukrep z uporabo ključa za overjanje TLS. Če želite ustvariti ključ za overjanje TLS, zaženite:

openvpn --genkey --secret tls_auth.key

In premaknite ključ na /etc/openvpn.

mv tls_auth.key /etc/openvpn

Konfiguracija ključa strežnika in nastavitev overitelja potrdil je zdaj končana. Zdaj pa preidimo na dejansko konfiguracijo strežnika VPN.

Konfiguracija strežnika OpenVPN

Konfiguracijska datoteka za strežnik OpenVPN ni samodejno ustvarjena, lahko pa uporabimo konfiguracijsko datoteko predloge iz openvpn paket.

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz

Odprite datoteko z vim ali katerim koli urejevalnikom po vaši izbiri.

cd /etc/openvpn vim server.conf

Vnesti moramo običajna imena ključev in potrdil, ki smo jih ustvarili prej. Pojdite na vrstico št. 78. Ker smo uporabili vsa privzeta imena, jih ohranimo nespremenjena. Nato preverite ime datoteke parametrov DH v vrstici 85. Uporabili smo ime dh.pem, zato ga spremenimo.

Nato spremenimo privilegije za strežnik OpenVPN. Pojdite na vrstici 274 in 275 in odstranite vodilno ; da ga razkomentiram.

Podobno pojdite na vrstico 192 in odstranite podpičje. Ta direktiva omogoča, da promet vseh odjemalcev poteka skozi VPN.

Shranite in zaprite datoteko.

Spremenite lastništvo mape /etc/openvpn v root.

sudo chown -R koren: koren /etc/openvpn

Nastavitev omrežja in požarnega zidu

Na strežniku moramo omogočiti posredovanje IP-jev, da omogočimo posredovanje paketov od in do odjemalca VPN. Odkomentiraj vrstico 28 /etc/sysctl.conf:

Shranite in zaprite datoteko.

Ponovni zagon systemctl da se te spremembe zgodijo.

sudo sysctl -p

Na strežniku moramo nastaviti prevajanje omrežnih naslovov (NAT) z uporabo požarnega zidu UFW, da omogočimo odjemalcu VPN dostop do interneta z naslovom IP strežnika VPN. Najprej omogočimo posredovanje paketov v konfiguraciji požarnega zidu. Odprto /etc/default/ufw in spremenite spremenljivko v vrstici 19 v ACCEPT.

Shranite in zaprite datoteko.

Zdaj dodajte naslednja pravila v datoteko /etc/ufw/before.rules pred filter vrstico v datoteki.

*nat :SPREJEM NASTOPANJE [0:0] -A ODSTAVLJANJE -s 10.8.0.0/8 -o -j MASQUERADE COMMIT

Vnesite svoj omrežni vmesnik namesto . Z ukazom si lahko ogledate svoj omrežni vmesnik ifconfig.

Dovoli promet za storitev OpenVPN na požarnem zidu in dovoli vrata 1194.

sudo ufw dovoli openvpn && sudo ufw dovoli 1194

Ponovno naložite storitev požarnega zidu.

sudo ufw ponovno naloži

Zdaj lahko znova zaženemo demon strežnika Open VPN z zagonom:

ponovni zagon storitve sudo openvpn

Omogočite zagon ob zagonu tako, da zaženete:

sudo systemctl omogoči openvpn

Strežnik OpenVPN je zdaj konfiguriran in se je začel. Nadaljujmo z zahtevo za potrdilo odjemalca in generiranjem ključev ter drugo konfiguracijo.

Konfiguracija odjemalca OpenVPN

Za stranko moramo ustvariti ključ in zahtevo za potrdilo. Postopek za to je enak kot pri strežniku.

Čeprav je mogoče odjemalski ključ in zahtevo za potrdilo ustvariti na odjemalskem računalniku in nato prenesti na napravo CA, je priporočljivo, da jo ustvarite na strežniškem računalniku. Prednost tega početja na strežniku je, da lahko ustvarite skript za izvajanje vseh zahtevanih korakov na strežniku, kar novemu odjemalcu olajša pridružitev VPN-ju.

Pojdite v mapo CA na strežniku in zaženite naslednje:

cd ~/cert_authority ./easyrsa gen-req client nopass

Na podoben način kot prej vnesite skupno ime, ko ste pozvani, ali pustite prazno, da uporabite privzeto skupno ime, tj. stranko.

Zdaj kopirajmo ustvarjeno zahtevo za potrdilo odjemalca na stroj CA.

scp pki/reqs/client.req [email protected]:/root

Uvozimo to zahtevo v CA stroj:

./easyrsa import-req /root/client.req odjemalec

In zdaj se podpišemo:

./easyrsa sign-req odjemalec odjemalca

Vnesiteda ko ste pozvani, da nadaljujete. Na vprašanje vnesite geslo za ključ CA.

Zdaj lahko odstranimo zahtevano datoteko za odjemalca in zahtevo kopiramo nazaj na strežnik VPN.

rm /root/client.req scp pki/issued/client.crt [email protected]:/root

Ustvarimo mapo z imenom stranko za shranjevanje vseh datotek, povezanih z odjemalcem, na strežniku VPN. Odjemalski ključ in potrdilo bomo premaknili v to mapo.

mkdir ~/client sudo mv ~/client.crt ~/cert_authority/pki/private/client.key ~/client

Zdaj pa ustvarimo konfiguracijsko datoteko iz razpoložljive predloge, podobno kot smo ustvarili konfiguracijsko datoteko strežnika.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client

Odprite datoteko client.conf. V vrstico 42 vnesite ime gostitelja ali IP naslov vašega strežniškega računalnika namesto moj-strežnik-1.

Odkomentirajte vrstici 61 in 62, tako da odstranite vodilno podpičje, da znižate privilegije za datoteko.

Nato komentirajte vrstice 88-90 in vrstico 108. Razlog je v tem, da želimo vsebino omenjenih datotek dodati ročno, namesto da bi uporabili lokacije datotek. Namen tega je, da se konfiguracijska datoteka odjemalca kasneje prenese na odjemalca, kjer dejansko ne bomo imeli datotek ključa in potrdil; zato kopiramo vsebino teh v sami konfiguracijski datoteki.

V konfiguracijsko datoteko odjemalca dodajte naslednje. Vnesite vsebino datotek zadevnih datotek znotraj danih oznak.

 # Tukaj prilepi vsebino datoteke ca.crt # Sem prilepi vsebino datoteke client.crt # Sem prilepi vsebino datoteke client.key key-direction 1 # Tukaj prilepi vsebino datoteke tls_auth.key 

Shranite in zaprite datoteko. Preimenujte to datoteko iz client.conf do client.ovpn, saj je slednja razširitev, potrebna za konfiguracijske datoteke, ki jih je mogoče uvoziti kot omrežne konfiguracije.

Zdaj prenesite datoteko client.ovpn odjemalcu, torej lokalnemu stroju.

teci scp na vašem odjemalskem računalniku, da prenesete datoteko s strežniškega računalnika na vaš lokalni računalnik.

scp user@server_ip:/pot_do_file local_destination_path

Končno moramo uporabiti to konfiguracijsko datoteko za povezavo s strežnikom VPN. To lahko storite tako prek ukazne vrstice kot tudi GUI.

Če želite zagnati odjemalca VPN iz ukazne vrstice, zaženite:

sudo openvpn --config client.ovpn

In to je edini ukaz, ki ga morate zagnati za zagon odjemalca VPN.

Če želite zagnati odjemalca VPN prek GUI, izvedite naslednje korake.

Pojdite v Nastavitve » Omrežje na vašem odjemalskem računalniku.

Kliknite na + v razdelku VPN in med možnostmi izberite »Uvozi iz datoteke ...«.

Kliknite »Dodaj«, da začnete uporabljati VPN.

Upoštevajte, da je pod »Gateway« to naslov IP strežnika.

Na koncu preklopite gumb »odjemalski VPN«, da omogočite VPN na napravi.

Vzpostavitev povezave VPN lahko traja nekaj sekund. Nov logotip napredka za VPN se bo prikazal v zgornjem levem kotu vašega zaslona, ​​ko se nastavlja, in se bo po nastavitvi spremenil v logotip VPN.

Če želite preveriti, ali VPN deluje pravilno, zaženite naslednje:

curl //ipinfo.io/ip

Vrniti mora naslov IP vašega strežniškega računalnika. Lahko pa tudi preverite svoj IP naslov tako, da preprosto poiščete »Moj IP« v Googlu. Prikazati bi moral naslov IP vašega strežnika VPN, če naša nastavitev VPN deluje pravilno.

Zaključek

V tem članku smo videli, kako konfigurirati strežnik OpenVPN, overitelj potrdil in odjemalca OpenVPN. Če želite v VPN dodati več odjemalcev, moramo zdaj slediti postopku za generiranje in podpis potrdila za odjemalca ter uporabiti isto konfiguracijsko datoteko, ustvarjeno tukaj, pri čemer sta spremenjena le odjemalski ključ in vrednosti potrdila.

V primeru počasnejših internetnih povezav je možno, da če se za komunikacijo uporablja UDP, pride do znatne izgube paketov. Uporabnik lahko preklopi na TCP tako, da razkomentira vrstico proto tcp in komentiranje vrstice proto udp v konfiguracijski datoteki strežnika.

Tudi, če obstajajo druge napake, lahko nastavite raven beleženja z glagol direktivo v konfiguracijskih datotekah strežnika in odjemalca. Vnesete lahko vrednosti med 0 in 9. Višja kot je vrednost te direktive, bolj natančen bo dnevnik.