OpenVPN-serveri seadistamine Ubuntu 20.04-s

Ülim juhend turvalise OpenVPN-serveri seadistamiseks versioonis Ubuntu 20.04

Virtuaalne privaatvõrk (VPN) võimaldab teil turvaliselt ja privaatselt luua ühenduse kaug-privaatvõrguga, näiteks kontorivõrgu või Internetiga, nii, nagu oleksite otse ühendatud privaatvõrguga.

VPN töötab server-kliendi arhitektuuris. VPN-server on masinasse juurutatud ja see on Interneti kaudu avalikult juurdepääsetav. VPN-serverit saab konfigureerida nii, et see võimaldaks ühenduse loomist privaatvõrguga (nt kontorivõrk) või Interneti-ühendusi. Kasutaja loob ühenduse VPN-serveriga oma kohalikus masinas VPN-kliendi abil. VPN-serveri ja kliendi vaheline suhtlus toimub turvalise tunneliprotokolli abil. Internetile tundub, et liikluse sihtkoht on VPN-server; aga liiklus liigub kliendile serveri kaudu.

VPN-il on igapäevaelus palju kasutusvõimalusi, näiteks turvaline ühenduse loomine avaliku WiFi-võrguga, mis on sageli ohustatud, või teatud veebisaitide geograafilistest piirangutest möödahiilimine, luues ühenduse VPN-iga, mis asub veebisaidi poolt lubatud riigis.

OpenVPN on laialdaselt kasutatav VPN-i rakendus, mis võimaldab laias valikus konfiguratsioone ja valikuid. See kasutab VPN-kliendi andmete ja eeljagatud võtmete, kasutajanime/parooli või sertifikaatide krüptimiseks Secure Sockets Layer (SSL) protokolli. Selles artiklis näeme, kuidas seadistada Ubuntu 20.04 VPN-server ja VPN-klient.

Paigaldamine

OpenVPN on saadaval pakendis olevates ametlikes Ubuntu hoidlates openvpn. See pakett installib nii OpenVPN-i serveri kui ka kliendi.

sudo apt install openvpn

Nagu varem mainitud, kasutab OpenVPN serveri ja kliendi vaheliste andmete krüptimiseks SSL-sertifikaate. Peame VPN-i jaoks sertifikaatide väljastamiseks seadistama oma sertifikaadiasutuse (CA). Pange tähele, et see tuleks seadistada mõnes muus masinas kui see, kus OpenVPN on seadistatud; põhjus on selles, et kui see asub samas serveris ja kui see satub ohtu, pääseb ründaja privaatvõtmele juurde ja rünnata seeläbi VPN-ühendust.

Sertifikaadi asutuse seadistamiseks kasutame tööriista nimega „Easy-RSA”. Selle installimiseks käivitage CA-seadmes, OpenVPN-i serverimasinas ja klientmasinas järgmist, kuna CA seadistamiseks on vaja konfiguratsiooni kõigis kolmes seadmes.

sudo apt install easy-rsa

Nüüd konfigureerime esmalt CA-seadme sertifikaadiasutuse ja teostame selle jaoks mõned nõutavad konfiguratsioonitoimingud avatud VPN-serverseadmes.

Sertifikaadi asutuse häälestus

Algseadistus CA masinas

Nüüd installib see pakett käsu nimega make-cadir mida kasutatakse kausta loomiseks sertifitseerimisasutuse konfigureerimiseks. Loome selle abil kausta ja sisestame kausta.

make-cadir cert_authority && cd cert_authority

Avage fail nimega vars loodud selles kataloogis. See fail sisaldab mõningaid konfiguratsioonimuutujaid, mida peame muutma. Väärtused, mida tuleb muuta, on ridadel 91-96, pärast kommentaari umbes Organisatsiooni valdkonnad mis kirjeldab neid välju. Tühjendage read ja täitke näidisväärtuste asemel sobivad väärtused.

Salvestage ja väljuge failist. Kui kasutate vim-redaktorit, vajutage Esc, tüüp :wq ja vajutage Sisenema salvestamiseks ja väljumiseks.

Järgmisena käivitame easyrsa programmi kataloogis avaliku võtme infrastruktuuri (PKI) seadistamiseks, mida kasutatakse avaliku võtme ja sertifikaatide genereerimiseks.

./easyrsa init-pki

Järgmine samm genereerib CA-võtme ja sertifikaadi. Kui käsk küsib parooli, sisestage CA võtme parool. Samuti sisestage küsimisel tavaline nimi. Kui jätate selle tühjaks, kasutatakse vaikenime Easy-RSA CA nime.

./easyrsa build-ca

Nagu väljundist näeme, on sertifikaat ja võti loodud. Seda võtit kasutatakse kliendi ja serveri sertifikaatide allkirjastamiseks, seega ei tohi seda kunagi puudutada/muuta.

Nüüd on meil PKI seadistus. Järgmine samm on luua masinas serverivõti ja sertifikaat, mida kasutame OpenVPN-serverina. Selle sertifikaadi allkirjastab hiljem CA masin.

Serveri võtme ja sertifikaadi genereerimine serverimasinas

Oleme serverimasinasse juba installinud Easy RSA. Nüüd tehke kolm sammu serverimasinas, mida tegime varem CA masinas, st. CA kataloogi loomine kasutades make-cadir ja sisenedes sellesse, muutes muutujaid vars faili ja PKI genereerimiseks kasutades ./easyrsa init-pki käsk.

Järgmisena peame käivitama käsu serveri sertifikaadipäringu ja võtme genereerimiseks.

./easyrsa gen-req serveri nopass

Pange tähele, et me läbisime valiku nopass nii et käsk ei nõuaks meil sisestama serveri võtme parooli. See küsib endiselt serveri tavalist nime, mille saate sisestada ükskõik mida või jätta selle vaikenime jaoks tühjaks (server) kasutada.

Teisaldage loodud võtmefail /etc/openvpn kataloog.

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

Saatke sertifikaaditaotlus CA-seadmesse. Kasutame käsku scp sel eesmärgil.

scp pki/reqs/server.req user@CA_MACHINE_HOSTNAME:/kataloog

Ülaltoodud ekraanipildil on host 45.79.125.41 CA-masin. Kopeerisime sertifikaadi kataloogi /juur.

Nüüd on serveri sertifikaat CA masinasse kopeeritud. Järgmine samm on minna tagasi CA masinasse ja allkirjastada see sertifikaat.

Serveri sertifikaadi allkirjastamine CA-s

Kõigepealt kontrollime, kas serveri sertifikaaditaotluse fail on CA-seadmesse kopeeritud. Minge kataloogi, kuhu faili kopeerisime (minu näites / root) ja käivitage ls.

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

Nagu näeme, fail server.req on kohal. Järgmisena minge CA kataloogi ja importige see päring.

cd cert_authority ./easyrsa import-req /root/server.req server

Selle taotluse allkirjastamiseks käivitage järgmine käsk.

./easyrsa sign-req serveri server

Siin on esimene argument päringu tüüp, st server, ja teine ​​argument on serverimasina üldnimi, mille jaoks kasutasime varem vaikeväärtust, st server.

Sisestage fraas jah, ja CA võtme parool, kui seda küsitakse.

Nüüd saame eemaldada sertifikaadipäringu faili ja kopeerida serveri jaoks genereeritud sertifikaadi, samuti CA avaliku sertifikaadi serverimasinasse tagasi.

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

Järgmisena peame VPN-i turvalise ühenduse tagamiseks tegema veel mõned toimingud.

DH parameetrite genereerimine

DH (Diffie-Hellman) võtmevahetus on algoritm, mis tagab krüptovõtmete turvalise vahetamise ebaturvalise kanali kaudu. Esmalt teisaldame saadud sertifikaadi ja CA avaliku sertifikaadi asukohta /etc/openvpn.

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

Minge serverimasina CA kausta ja käivitage DH parameetrite genereerimiseks järgmine käsk. Selle loomine võib võtta kaua aega.

./easyrsa gen-dh

Nüüd teisaldage loodud fail asukohta /etc/openvpn.

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

TA võtmete genereerimine

OpenVPN kasutab teist täiendavat turvameedet, kasutades TLS-i autentimisvõtit. TLS-i autentimisvõtme genereerimiseks käivitage:

openvpn --genkey --salajane tls_auth.key

Ja liigutage võti /etc/openvpn.

mv tls_auth.key /etc/openvpn

Serveri võtme konfigureerimine ja sertifikaadivolituse seadistamine on nüüd tehtud. Liigume nüüd VPN-serveri tegeliku konfiguratsiooni juurde.

OpenVPN-i serveri konfiguratsioon

OpenVPN-serveri konfiguratsioonifaili ei looda automaatselt, kuid saame kasutada malli konfiguratsioonifaili openvpn pakett.

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

Avage fail vimi või mis tahes valitud redaktori abil.

cd /etc/openvpn vim server.conf

Peame sisestama varem loodud võtmete ja sertifikaatide üldnimetused. Mine reale nr. 78. Kuna kasutasime kõiki vaikenimesid, jätame need muutmata. Seejärel kontrollige real 85 DH parameetri faili nime. Oleme kasutanud nime dh.pem, nii et muudame seda.

Järgmiseks muutkem OpenVPN-serveri õigusi. Minge reale 274 ja 275 ning eemaldage eesmine ; et seda kommenteerida.

Samamoodi minge reale 192 ja eemaldage semikoolon. See direktiiv võimaldab kõigi klientide liiklust läbida VPN-i.

Salvestage ja väljuge failist.

Muutke kausta /etc/openvpn omandiõigus juurteks.

sudo chown -R root:root /etc/openvpn

Võrgustiku ja tulemüüri seadistamine

Peame lubama serveris IP-edastuse, et võimaldada pakettide edastamist VPN-kliendilt ja kliendile. Tühista 28. rida /etc/sysctl.conf:

Salvestage ja väljuge failist.

Taaskäivita systemctl et need muudatused toimuksid.

sudo sysctl -p

Peame UFW tulemüüri abil serveris seadistama võrguaadressi tõlkimise (NAT), et võimaldada VPN-i kliendil VPN-serveri IP-aadressi kasutades Interneti-juurdepääsu. Esiteks lubame tulemüüri konfiguratsioonis pakettide edastamise. Avatud /etc/default/ufw ja muutke real 19 muutuja väärtuseks ACCEPT.

Salvestage ja väljuge failist.

Nüüd lisage faili järgmised reeglid /etc/ufw/before.rules enne filter rida failis.

*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/8 -o -j MASQUERADE COMMIT

Sisestage asemele oma võrguliides . Näete oma võrguliidest käsuga ifconfig.

Lubage tulemüüris OpenVPN-teenuse liiklus ja lubage port 1194.

sudo ufw lubab openvpn && sudo ufw lubab 1194

Laadige tulemüüri teenus uuesti.

sudo ufw laadige uuesti

Nüüd saame Open VPN serveri deemoni taaskäivitada, käivitades:

sudo teenuse openvpn taaskäivitamine

Lubage see käivitamisel käivitamisel käivitada:

sudo systemctl lubab openvpn

OpenVPN-server on nüüd konfigureeritud ja käivitunud. Jätkame nüüd kliendi sertifikaadi päringu ja võtme genereerimise ning muu konfiguratsiooniga.

OpenVPN-i kliendi konfiguratsioon

Peame genereerima kliendi jaoks võtme ja sertifikaadipäringu. Protseduur selle tegemiseks on sama, mis serveri puhul.

Kuigi kliendivõtme ja sertifikaadipäringu saab luua klientmasinas ja seejärel CA-masinasse üle kanda, on soovitatav see luua serverimasinas. Selle serveris tegemise eeliseks on see, et saate luua skripti kõigi serveris nõutavate toimingute tegemiseks, mis muudab uue kliendi VPN-iga liitumise lihtsamaks.

Minge serveris CA kausta ja käivitage järgmine:

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

Sarnaselt varasemale viisile sisestage küsimisel üldnimi või jätke see tühjaks, et kasutada vaikimisi üldnimetust, st klient.

Kopeerime nüüd genereeritud kliendi sertifikaadi taotluse CA masinasse.

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

Impordime selle taotluse CA masinasse:

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

Ja nüüd kirjutame sellele alla:

./easyrsa sign-req kliendi klient

Sisenemajah kui teil palutakse jätkata. Kui küsitakse, sisestage CA-võtme parool.

Nüüd saame eemaldada kliendi jaoks nõutud faili ja kopeerida päringu tagasi VPN-servermasinasse.

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

Loome kausta nimega klient et hoida VPN-serveris kõiki kliendiga seotud faile. Teisaldame kliendivõtme ja sertifikaadi sellesse kausta.

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

Nüüd loome saadaolevast mallist konfiguratsioonifaili, sarnaselt serveri konfiguratsioonifaili loomisega.

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

Avage fail client.conf. Real 42 sisestage asemele oma serveri masina hostinimi või IP-aadress minu-server-1.

Faili õiguste alandamiseks tühistage ridade 61 ja 62 kommentaarid, eemaldades eessemikooloni.

Järgmiseks kommenteerige ridu 88-90 ja 108. Põhjus on selles, et tahame faili asukohtade kasutamise asemel lisada nimetatud failide sisu käsitsi. Selle eesmärk on, et kliendi konfiguratsioonifail edastataks hiljem kliendile, kus meil tegelikult pole kliendi võtme- ja sertifikaadifaile; seetõttu kopeerime nende sisu konfiguratsioonifailis endas.

Lisage kliendi konfiguratsioonifaili järgmine teave. Sisestage etteantud siltide sisse vastavate failide sisu.

 # Kleebi siia faili ca.crt sisu # Kleebi siia faili client.crt sisu # Kleebi faili client.key sisu siia võtme-suund 1 # Kleebi faili tls_auth.key sisu siia 

Salvestage ja väljuge failist. Nimeta see fail ümber client.conf juurde klient.ovpn, kuna viimane on laiendus, mis on vajalik konfiguratsioonifailide jaoks, mida saab võrgukonfiguratsioonidena importida.

Nüüd edastage fail klient.ovpn kliendile, st kohalikule masinale.

Jookse scp oma klientmasinas faili ülekandmiseks serverimasinast kohalikku masinasse.

scp kasutaja@serveri_ip:/faili_tee kohalik_sihtkoha_tee

Lõpuks peame VPN-serveriga ühenduse loomiseks kasutama seda konfiguratsioonifaili. Seda saab teha nii käsurea kui ka GUI kaudu.

VPN-kliendi käivitamiseks käsurealt käivitage:

sudo openvpn --config client.ovpn

Ja see on ainus käsk, mida peate VPN-kliendi käivitamiseks käivitama.

VPN-kliendi käivitamiseks GUI kaudu toimige järgmiselt.

Avage oma klientseadmes Seaded »Võrk.

Klõpsake nuppu + nuppu VPN-i jaotises ja valige suvandite hulgast „Impordi failist…”.

VPN-i kasutamise alustamiseks klõpsake nuppu "Lisa".

Pange tähele, et jaotises "Lüüs" on see serveri IP-aadress.

Lõpuks lülitage VPN-i masinas lubamiseks sisse nupp „kliendi VPN”.

VPN-ühenduse loomiseks võib kuluda mõni sekund. VPN-i uus edenemislogo kuvatakse selle seadistamise ajal ekraani vasakus ülanurgas ja pärast seadistamist muutub see VPN-i logoks.

VPN-i korrektse toimimise kontrollimiseks käivitage järgmine toiming.

curl //ipinfo.io/ip

See peaks tagastama teie serverimasina IP-aadressi. Või saate ka oma IP-aadressi kontrollida, tehes Google'is lihtsalt otsingu „Minu IP”. Kui meie VPN-i seadistus töötab korralikult, peaks see näitama teie VPN-serveri IP-aadressi.

Järeldus

Selles artiklis nägime, kuidas konfigureerida OpenVPN-serverit, sertifitseerimiskeskust ja OpenVPN-klienti. VPN-i rohkemate klientide lisamiseks peame nüüd järgima kliendi jaoks sertifikaadi genereerimise ja allkirjastamise protseduuri ning kasutama sama siin loodud konfiguratsioonifaili, muutes ainult kliendi võtit ja sertifikaadi väärtusi.

Aeglasema internetiühenduse korral on võimalik, et kui sidepidamiseks kasutatakse UDP-d, tekib märkimisväärne paketikadu. Kasutaja saab lülituda TCP-le rea kommentaaride tühistamisega proto tcp ja liini kommenteerimine proto udp serveri konfiguratsioonifailis.

Samuti saate muude tõrgete korral määrata logimistaseme nupuga tegusõna direktiiv nii serveri kui ka kliendi konfiguratsioonifailides. Saate sisestada väärtused vahemikus 0 kuni 9. Mida suurem on selle direktiivi väärtus, seda üksikasjalikum on logi.