OpenVPN-palvelimen määrittäminen Ubuntu 20.04:ssä

Lopullinen opas suojatun OpenVPN-palvelimen määrittämiseen Ubuntu 20.04:ssä

VPN:n (Virtual Private Network) avulla voit muodostaa turvallisesti ja yksityisesti yhteyden yksityiseen etäverkkoon, esimerkiksi toimistosi verkkoon tai Internetiin, aivan kuin olisit suoraan yhteydessä yksityiseen verkkoon.

VPN toimii palvelin-asiakasarkkitehtuurissa. VPN-palvelin on otettu käyttöön koneessa, ja se on julkisesti käytettävissä Internetin kautta. VPN-palvelin voidaan määrittää sallimaan yhteyden muodostaminen yksityiseen lähiverkkoon, kuten toimistoverkkoon, tai Internet-yhteydet. Käyttäjä muodostaa yhteyden VPN-palvelimeen käyttämällä VPN-asiakasta paikallisessa koneessaan. Viestintä VPN-palvelimen ja asiakkaan välillä tapahtuu suojatun tunnelointiprotokollan avulla. Internet näyttää siltä, ​​että liikenteen kohde on VPN-palvelin; liikenne kuitenkin siirtyy asiakkaalle palvelimen kautta.

VPN:llä on monia käyttötarkoituksia jokapäiväisessä elämässä, kuten turvallinen yhteys julkiseen Wi-Fi-verkkoon, joka usein vaarantuu, tai tiettyjen verkkosivustojen maantieteellisten rajoitusten ohittaminen muodostamalla yhteys VPN-verkkoon, joka sijaitsee verkkosivuston sallimassa maassa.

OpenVPN on laajalti käytetty VPN-toteutus, joka mahdollistaa laajan valikoiman määrityksiä ja vaihtoehtoja. Se käyttää Secure Sockets Layer (SSL) -protokollaa tietojen salaukseen ja ennalta jaettujen avainten, käyttäjätunnuksen/salasanan tai sertifikaattien salaukseen VPN-asiakkaan todentamiseen. Tässä artikkelissa näemme, kuinka VPN-palvelin ja VPN-asiakas määritetään Ubuntu 20.04:ssä.

Asennus

OpenVPN on saatavilla pakkauksen virallisissa Ubuntu-arkistoissa openvpn. Tämä paketti asentaa sekä OpenVPN-palvelimen että asiakkaan.

sudo apt install openvpn

Kuten aiemmin mainittiin, OpenVPN käyttää SSL-varmenteita tietojen salaamiseen palvelimen ja asiakkaan välillä. Meidän on perustettava oma sertifikaattiviranomaisemme (CA) myöntämään VPN-varmenteita. Huomaa, että tämä tulee määrittää eri koneelle kuin siihen, jossa OpenVPN on määritetty; syynä on se, että jos se on samalla palvelimella ja jos se vaarantuu, hyökkääjä voi käyttää yksityistä avainta ja siten hyökätä VPN-yhteyttä vastaan.

Käytämme Easy-RSA-nimistä työkalua varmenneviranomaisen määrittämiseen. Asenna se suorittamalla seuraavat toiminnot CA-koneessa, OpenVPN-palvelinkoneessa ja asiakaskoneessa, koska kaikkien kolmen asetukset vaaditaan CA:n määrittämiseksi.

sudo apt install easy-rsa

Määritämme nyt ensin varmenteen myöntäjän CA-koneessa ja suoritamme joitain vaadittuja määritysvaiheita sille Open VPN -palvelinkoneessa.

Varmenteen myöntäjän asetukset

Alkuasetukset CA-koneelle

Nyt tämä paketti asentaa komennon nimeltä make-cadir jota käytetään luomaan kansio varmenteen myöntäjän määritystä varten. Luodaan tämän avulla kansio ja kirjoitetaan kansio.

make-cadir cert_authority && cd cert_authority

Avaa tiedosto nimeltä vars luotu tähän hakemistoon. Tämä tiedosto sisältää joitain konfiguraatiomuuttujia, joita meidän on muokattava. Arvot, joita täytyy muuttaa, ovat riveillä 91-96, kommentin jälkeen Organisaatiokentät joka kuvaa näitä kenttiä. Poista rivien kommentit ja täytä asianmukaiset arvot näytearvojen tilalle.

Tallenna ja poistu tiedostosta. Jos käytät vim-editoria, paina poistu, tyyppi :wq ja paina Tulla sisään tallentaa ja poistua.

Seuraavaksi suoritamme easyrsa Ohjelma hakemistossa perustaa julkisen avaimen infrastruktuurin (PKI), jota käytetään julkisen avaimen ja varmenteiden luomiseen.

./easyrsa init-pki

Seuraava vaihe luo CA-avaimen ja varmenteen. Kun komento pyytää salasanaa, kirjoita salasana CA-avaimelle. Kirjoita myös yleinen nimi pyydettäessä. Jos jätät tämän tyhjäksi, käytetään oletusnimeä Easy-RSA CA -nimi.

./easyrsa build-ca

Kuten tuloksesta näemme, varmenne ja avain on luotu. Tätä avainta käytetään asiakas- ja palvelinsertifikaattien allekirjoittamiseen, joten sitä ei saa koskaan koskea/muokata.

Nyt meillä on PKI-asetukset. Seuraava askel on luoda koneelle palvelinavain ja varmenne, joita käytämme OpenVPN-palvelimena. CA-kone allekirjoittaa tämän varmenteen myöhemmin.

Palvelinavaimen ja varmenteen luominen palvelinkoneella

Olemme jo asentaneet Easy RSA:n palvelinkoneelle. Suorita nyt palvelinkoneella kolme vaihetta, jotka teimme aiemmin CA-koneella, nimittäin. CA-hakemiston luominen käyttämällä make-cadir ja menemällä sen sisään muokkaamalla muuttujia vars tiedosto ja PKI:n luominen käyttämällä ./easyrsa init-pki komento.

Seuraavaksi meidän on suoritettava komento palvelimen varmennepyynnön ja avaimen luomiseksi.

./easyrsa gen-req server nopass

Huomaa, että ohitimme vaihtoehdon nopass jotta komento ei kehota meitä syöttämään salasanaa palvelinavaimelle. Se kysyy silti palvelimelle yleistä nimeä, johon voit kirjoittaa mitä tahansa tai jättää sen tyhjäksi oletusnimelle (palvelin) käytettäväksi.

Siirrä luotu avaintiedosto sisään /etc/openvpn hakemistosta.

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

Lähetä varmennepyyntö CA-laitteeseen. Käytämme komentoa scp tähän tarkoitukseen.

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

Yllä olevassa kuvakaappauksessa isäntä 45.79.125.41 on CA-kone. Olemme kopioineet varmenteen /juurihakemistoon.

Nyt palvelimen varmenne on kopioitu CA-koneeseen. Seuraava vaihe on palata CA-koneeseen ja allekirjoittaa tämä varmenne.

Palvelinvarmenteen allekirjoittaminen CA:ssa

Tarkista ensin, onko palvelimelta saatu varmennepyyntötiedosto kopioitu CA-koneelle. Mene hakemistoon, johon kopioimme tiedoston (/root esimerkissäni) ja suorita ls.

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

Kuten näemme, tiedosto server.req on läsnä. Siirry seuraavaksi CA-hakemistoon ja tuo tämä pyyntö.

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

Allekirjoita tämä pyyntö suorittamalla seuraava komento.

./easyrsa sign-req-palvelinpalvelin

Tässä ensimmäinen argumentti on pyynnön tyyppi, eli palvelin, ja toinen argumentti on palvelinkoneen yleinen nimi, jolle käytimme aiemmin oletusarvoa, eli palvelin.

Kirjoita lause Joo, ja CA-avaimen salasana pyydettäessä.

Nyt voimme poistaa varmennepyyntötiedoston ja kopioida palvelimelle luodun varmenteen sekä CA-julkisen varmenteen takaisin palvelinkoneelle.

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

Seuraavaksi meidän on suoritettava vielä muutama vaihe varmistaaksemme suojatun VPN-yhteyden.

DH-parametrien luominen

DH (Diffie-Hellman) -avainten vaihto on algoritmi, joka varmistaa salausavainten turvallisen vaihdon epävarman kanavan kautta. Siirretään ensin vastaanotettu varmenne ja CA julkinen varmenne kohteeseen /etc/openvpn.

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

Siirry palvelinkoneen CA-kansioon ja suorita seuraava komento luodaksesi DH-parametrit. Sen luominen voi kestää kauan.

./easyrsa gen-dh

Siirrä nyt luotu tiedosto kohteeseen /etc/openvpn.

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

Luodaan TA-avaimia

OpenVPN käyttää toista ylimääräistä suojausmenetelmää TLS-todennusavaimen avulla. Luo TLS-todennusavain suorittamalla:

openvpn --genkey --salainen tls_auth.key

Ja siirrä avain kohtaan /etc/openvpn.

mv tls_auth.key /etc/openvpn

Palvelinavaimen konfigurointi ja varmenteen myöntäjän asetukset on nyt tehty. Siirrytään nyt VPN-palvelimen todelliseen kokoonpanoon.

OpenVPN-palvelimen määritykset

OpenVPN-palvelimen määritystiedostoa ei luoda automaattisesti, mutta voimme kuitenkin käyttää mallin määritystiedostoa openvpn paketti.

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

Avaa tiedosto vimillä tai millä tahansa valitsemallasi editorilla.

cd /etc/openvpn vim server.conf

Meidän on syötettävä aiemmin luomiemme avaimien ja varmenteiden yleiset nimet. Siirry riville nro. 78. Koska käytimme kaikkia oletusnimiä, pidämme ne ennallaan. Tarkista sitten DH-parametritiedoston nimi riviltä 85. Olemme käyttäneet nimeä dh.pem, joten muutetaan se.

Seuraavaksi muutetaan OpenVPN-palvelimen oikeuksia. Mene riveille 274 ja 275 ja poista johto ; kommentoida sitä.

Siirry samalla tavalla riville 192 ja poista puolipiste. Tämä direktiivi mahdollistaa kaikkien asiakkaiden liikenteen kulkemisen VPN:n kautta.

Tallenna ja poistu tiedostosta.

Muuta kansion /etc/openvpn omistajuus pääkäyttäjäksi.

sudo chown -R root:root /etc/openvpn

Verkko- ja palomuuriasetukset

Meidän on sallittava IP-välitys palvelimella, jotta paketit voidaan välittää VPN-asiakkaalta ja siihen. Kommentoinnin poisto rivi 28 päällä /etc/sysctl.conf:

Tallenna ja poistu tiedostosta.

Uudelleenkäynnistää systemctl jotta nämä muutokset tapahtuvat.

sudo sysctl -p

Meidän on määritettävä verkko-osoitteiden käännös (NAT) palvelimelle UFW-palomuurilla, jotta VPN-asiakas voi käyttää Internetiä VPN-palvelimen IP-osoitteen avulla. Ensin otetaan käyttöön pakettien edelleenlähetys palomuurin kokoonpanossa. Avata /etc/default/ufw ja muuta muuttuja rivillä 19 arvoon ACCEPT.

Tallenna ja poistu tiedostosta.

Lisää nyt tiedostoon seuraavat säännöt /etc/ufw/before.rules ennen suodattaa riviä tiedostossa.

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

Kirjoita verkkoliittymäsi tilalle . Näet verkkoliittymäsi komennolla ifconfig.

Salli liikenne OpenVPN-palvelulle palomuurissa ja salli portti 1194.

sudo ufw salli openvpn && sudo ufw salli 1194

Lataa palomuuripalvelu uudelleen.

sudo ufw lataa uudelleen

Voimme nyt käynnistää Open VPN -palvelimen demonin uudelleen suorittamalla:

sudo-palvelu openvpn käynnistyy uudelleen

Ota se käyttöön käynnistyksen yhteydessä suorittamalla:

sudo systemctl ota openvpn käyttöön

OpenVPN-palvelin on nyt määritetty ja käynnistynyt. Jatketaan nyt asiakasvarmennepyyntöön ja avainten luomiseen ja muihin määrityksiin.

OpenVPN-asiakasmääritykset

Meidän on luotava asiakkaalle avain ja varmennepyyntö. Tämä tehdään samalla tavalla kuin palvelimelle.

Vaikka asiakasavain ja varmennepyyntö voidaan luoda asiakaskoneelle ja siirtää sitten CA-koneeseen, on suositeltavaa luoda se palvelinkoneelle. Tämän palvelimella tekemän etuna on, että voit luoda komentosarjan kaikkien vaadittujen vaiheiden suorittamiseksi palvelimella, mikä helpottaa uuden asiakkaan liittymistä VPN:ään.

Siirry palvelimen CA-kansioon ja suorita seuraava:

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

Samalla tavalla kuin aiemmin, kirjoita yleinen nimi pyydettäessä tai jätä se tyhjäksi, jos haluat käyttää oletusyleistä nimeä, eli asiakas.

Kopioidaan nyt luotu asiakasvarmennepyyntö CA-koneelle.

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

Tuodaan tämä pyyntö CA-koneeseen:

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

Ja allekirjoitetaan nyt:

./easyrsa sign-req asiakasohjelma

Tulla sisäänJoo kun sinua kehotetaan jatkamaan. Anna CA-avaimen salasana pyydettäessä.

Voimme nyt poistaa pyydetyn tiedoston asiakkaalta ja kopioida pyynnön takaisin VPN-palvelinkoneelle.

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

Luodaan kansio nimeltä asiakas pitääksesi kaikki asiakkaaseen liittyvät tiedostot VPN-palvelimella. Siirrämme asiakasavaimen ja varmenteen tähän kansioon.

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

Luodaan nyt määritystiedosto käytettävissä olevasta mallista, samalla tavalla kuin loimme palvelimen määritystiedoston.

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

Avaa tiedosto client.conf. Kirjoita riville 42 palvelinkoneesi isäntänimi tai IP-osoite tilalle minun-palvelin-1.

Poista rivien 61 ja 62 kommentit poistamalla etupuolipiste tiedoston oikeuksien alentamiseksi.

Kommentoi seuraavaksi rivit 88-90 ja 108. Syynä on se, että haluamme lisätä mainittujen tiedostojen sisällön manuaalisesti tiedostojen sijaintien sijaan. Tämän tekemisen tarkoituksena on, että asiakkaan asetustiedosto siirretään myöhemmin asiakkaalle, jossa meillä ei itse asiassa ole asiakasavain- ja varmennetiedostoja; siksi kopioimme itse asetustiedoston sisällön.

Liitä seuraavat tiedot asiakkaan määritystiedostoon. Syötä vastaavien tiedostojen sisältö annettujen tunnisteiden sisään.

 # Liitä ca.crt-tiedoston sisältö tähän # Liitä client.crt-tiedoston sisältö tähän # Liitä client.key-tiedoston sisältö tähän avainsuunta 1 # Liitä tls_auth.key-tiedoston sisältö tähän 

Tallenna ja poistu tiedostosta. Nimeä tämä tiedosto uudelleen kohteesta client.conf kohtaan client.ovpn, koska jälkimmäinen on laajennus, jota tarvitaan määritystiedostoille, jotka voidaan tuoda verkkokokoonpanoina.

Siirrä nyt tiedosto client.ovpn asiakkaalle eli paikalliselle koneelle.

Juosta scp asiakaskoneellasi siirtääksesi tiedoston palvelinkoneelta paikalliselle koneelle.

scp käyttäjä@palvelimen_ip:/tiedoston_polku paikallinen_kohdepolku

Lopuksi meidän on käytettävä tätä asetustiedostoa yhteyden muodostamiseen VPN-palvelimeen. Tämä voidaan tehdä sekä komentorivin että graafisen käyttöliittymän kautta.

Käynnistä VPN-asiakas komentoriviltä suorittamalla:

sudo openvpn --config client.ovpn

Ja se on ainoa komento, joka sinun on suoritettava käynnistääksesi VPN-asiakkaan.

Käynnistä VPN-asiakas GUI:n kautta suorittamalla seuraavat vaiheet.

Siirry asiakaskoneen kohtaan Asetukset » Verkko.

Klikkaa + -painiketta VPN-osiossa ja valitse vaihtoehdoista 'Tuo tiedostosta...'.

Aloita VPN:n käyttö napsauttamalla Lisää.

Huomaa, että kohdassa "Yhdyskäytävä" se on palvelimen IP-osoite.

Ota lopuksi VPN käyttöön koneella vaihtamalla "asiakas VPN" -painike.

VPN-yhteyden muodostaminen voi kestää muutaman sekunnin. Uusi edistymislogo VPN:lle ilmestyy näytön vasempaan yläkulmaan sen asennuksen aikana, ja se muuttuu VPN-logoksi, kun se on määritetty.

Tarkista, toimiiko VPN oikein, suorittamalla seuraava:

curl //ipinfo.io/ip

Sen pitäisi palauttaa palvelinkoneesi IP-osoite. Tai muuten voit myös tarkistaa IP-osoitteesi tekemällä Google-haun "Oma IP". Sen pitäisi näyttää VPN-palvelimesi IP-osoite, jos VPN-asetuksemme toimivat oikein.

Johtopäätös

Tässä artikkelissa näimme kuinka määrittää OpenVPN-palvelin, varmenteen myöntäjä ja OpenVPN-asiakas. Jotta voimme lisätä VPN:ään lisää asiakkaita, meidän on nyt suoritettava asiakkaalle varmenteen luonti ja allekirjoittaminen ja käytettävä samaa tässä luotua määritystiedostoa, mutta vain asiakasavain ja varmenteen arvot on muutettu.

Hitaampien Internet-yhteyksien tapauksessa on mahdollista, että jos viestintään käytetään UDP:tä, pakettihäviö on huomattava. Käyttäjä voi vaihtaa TCP:hen poistamalla rivin kommentin proto tcp ja kommentoi linjaa proto udp palvelimen asetustiedostossa.

Lisäksi, jos muita virheitä ilmenee, voit asettaa lokitason verbi direktiiviä sekä palvelimen että asiakkaan asetustiedostoissa. Voit syöttää arvoja välillä 0 - 9. Mitä suurempi tämän direktiivin arvo, sitä monisanaisempi loki on.