Ü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.