Cum să configurați un server OpenVPN pe Ubuntu 20.04

Ghid suprem pentru configurarea unui server OpenVPN securizat pe Ubuntu 20.04

O rețea privată virtuală (VPN) vă permite să vă conectați în mod sigur și privat la o rețea privată de la distanță, de exemplu, rețeaua dvs. de birou sau Internet, astfel încât să fiți conectat direct la o rețea privată.

VPN funcționează într-o arhitectură server-client. Un server VPN este implementat pe o mașină și este accesibil public prin Internet. Serverul VPN poate fi configurat pentru a permite conectarea la o rețea LAN privată, cum ar fi o rețea de birou, sau pentru a permite conexiuni la Internet. Utilizatorul se conectează la serverul VPN folosind un client VPN pe mașina sa locală. Comunicarea între serverul VPN și client are loc folosind un protocol de tunel securizat. Pentru Internet, se pare că destinația traficului este serverul VPN; cu toate acestea, traficul trece către client prin intermediul serverului.

VPN are multe utilizări în viața de zi cu zi, cum ar fi conectarea în siguranță la o rețea Wi-Fi publică, care este adesea compromisă sau ocolirea restricțiilor geografice de pe anumite site-uri web prin conectarea la un VPN cu sediul într-o țară care este permisă de site.

OpenVPN este o implementare VPN utilizată pe scară largă care permite o gamă largă de configurații și opțiuni. Utilizează protocolul Secure Sockets Layer (SSL) pentru criptarea datelor și a cheilor pre-partajate, nume de utilizator/parolă sau certificate pentru autentificarea clientului VPN. În acest articol, vom vedea cum să configurați un server VPN și un client VPN pe Ubuntu 20.04.

Instalare

OpenVPN este disponibil în depozitele oficiale Ubuntu din pachet openvpn. Acest pachet instalează atât serverul OpenVPN, cât și clientul.

sudo apt install openvpn

După cum am menționat mai devreme, OpenVPN utilizează certificate SSL pentru a cripta datele dintre server și client. Trebuie să ne configuram propria autoritate de certificare (CA) pentru a emite certificate pentru VPN. Rețineți că aceasta ar trebui configurată pe o altă mașină decât cea în care este configurat OpenVPN; motivul este că, dacă este pe același server și dacă este compromis, un atacator poate accesa cheia privată și astfel ataca conexiunea VPN.

Vom folosi un instrument numit „Easy-RSA” pentru a configura autoritatea de certificare. Pentru a-l instala, rulați următoarele pe mașina CA, pe mașina server OpenVPN și pe mașina client, deoarece configurația este necesară pe toate trei pentru a configura CA.

sudo apt install easy-rsa

Acum vom configura mai întâi autoritatea de certificare pe mașina CA și vom efectua câțiva pași de configurare necesari pentru aceeași pe mașina serverului Open VPN.

Configurarea autorității de certificare

Configurare inițială pe mașina CA

Acum, acest pachet instalează o comandă numită face-cadir care este folosit pentru a crea un folder pentru configurarea autorității de certificare. Să creăm un folder folosind acesta și să intrăm în folder.

make-cadir cert_authority && cd cert_authority

Deschideți fișierul numit vars creat în acest director. Acest fișier conține câteva variabile de configurare pe care trebuie să le modificăm. Valorile care trebuie modificate sunt pe rândurile 91-96, după comentariul despre Domenii organizatorice care descrie aceste domenii. Decomentați liniile și completați valorile corespunzătoare în locul valorilor eșantionului.

Salvați și ieșiți din fișier. Dacă utilizați editor vim, apăsați Esc, tip :wq și apăsați introduce pentru a salva și a ieși.

Apoi, rulăm easyrsa program din director pentru a configura infrastructura cheii publice (PKI), care va fi folosită pentru a genera cheia publică și certificate.

./easyrsa init-pki

Următorul pas va genera cheia CA și certificatul. Când comanda solicită o parolă, introduceți o parolă pentru cheia CA. De asemenea, introduceți un nume comun când vi se solicită. Dacă lăsați necompletat, va fi folosit numele implicit Easy-RSA CA name.

./easyrsa build-ca

După cum putem vedea din rezultat, certificatul și cheia au fost generate. Această cheie va fi folosită pentru a semna certificatele client și server, prin urmare nu ar trebui să fie niciodată atinsă/modificată.

Acum, avem configurarea PKI. Următorul pas este să creați o cheie de server și un certificat pe mașină pe care le vom folosi ca server OpenVPN. Acest certificat va fi semnat ulterior de aparatul CA.

Generarea cheii serverului și a certificatului pe computerul server

Am instalat deja Easy RSA pe mașina server. Acum efectuați cei trei pași pe mașina server, pe care i-am efectuat anterior pe mașina CA, adică. crearea unui director CA folosind face-cadir și mergând în el, modificând variabilele din vars fișier și generarea PKI folosind ./easyrsa init-pki comanda.

Apoi, trebuie să rulăm comanda pentru a genera o cerere de certificat de server și o cheie.

./easyrsa gen-req server nopass

Rețineți că am trecut opțiunea nopass astfel încât comanda să nu ne solicite să introducem o parolă pentru cheia serverului. Acesta va solicita în continuare un nume comun pentru server, pe care îl puteți introduce orice sau îl puteți lăsa necompletat pentru numele implicit (Server) a fi folosit.

Mutați fișierul cheie generat în interiorul /etc/openvpn director.

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

Trimiteți cererea de certificat către mașina CA. Vom folosi comanda scp în acest scop.

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

În captura de ecran de mai sus, gazda 45.79.125.41 este mașina CA. Am copiat certificatul în directorul /root.

Acum, certificatul serverului a fost copiat pe mașina CA. Următorul pas este să te întorci la aparatul CA și să semnezi acest certificat.

Semnarea certificatului de server în CA

Mai întâi, să verificăm dacă fișierul de solicitare a certificatului de pe server a fost copiat pe computerul CA. Mergeți la directorul în care am copiat fișierul (/root în exemplul meu) și rulați ls.

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

După cum vedem, fișierul server.req este prezent. Apoi, accesați directorul CA și importați această solicitare.

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

Pentru a semna această solicitare, executați următoarea comandă.

./easyrsa server server sign-req

Aici primul argument este tipul de cerere, adică Server, iar al doilea argument este numele comun al mașinii server, pentru care am folosit anterior valoarea implicită, adică, Server.

Introdu fraza da, și parola pentru cheia CA atunci când vi se solicită.

Acum putem elimina fișierul de solicitare a certificatului și putem copia certificatul generat pentru server, precum și certificatul public CA înapoi pe computerul serverului.

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

În continuare, trebuie să mai efectuăm câțiva pași pentru a asigura conexiunea securizată a VPN-ului.

Generarea parametrilor DH

Schimbul de chei DH (Diffie-Hellman) este un algoritm care asigură un schimb securizat de chei criptografice pe un canal nesecurizat. Mai întâi, să mutăm certificatul primit și certificatul public CA în /etc/openvpn.

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

Accesați folderul CA de pe computerul server și rulați următoarea comandă pentru a genera parametrii DH. Generarea poate dura mult timp.

./easyrsa gen-dh

Acum, mutați fișierul generat în /etc/openvpn.

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

Generarea cheilor TA

OpenVPN folosește o altă măsură de securitate suplimentară folosind cheia de autentificare TLS. Pentru a genera cheia de autentificare TLS, rulați:

openvpn --genkey --secret tls_auth.key

Și mutați cheia la /etc/openvpn.

mv tls_auth.key /etc/openvpn

Configurarea cheii serverului și configurarea autorității de certificare sunt acum finalizate. Să trecem la configurația actuală a serverului VPN acum.

Configurarea serverului OpenVPN

Fișierul de configurare pentru serverul OpenVPN nu este creat automat, totuși putem folosi un fișier de configurare șablon din openvpn pachet.

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

Deschideți fișierul folosind vim sau orice editor la alegere.

cd /etc/openvpn vim server.conf

Trebuie să introducem numele comune ale cheilor și certificatelor pe care le-am generat anterior. Du-te la linia nr. 78. Deoarece am folosit toate numele implicite, le păstrăm neschimbate. Apoi verificați numele fișierului de parametri DH pe linia 85. Am folosit numele dh.pem, așa că să-l schimbăm.

În continuare, să modificăm privilegiile pentru serverul OpenVPN. Mergeți la linia 274 și 275 și eliminați primul ; pentru a-l decomenta.

În mod similar, mergeți la linia 192 și eliminați punctul și virgulă. Această directivă permite traficului tuturor clienților să treacă prin VPN.

Salvați și ieșiți din fișier.

Schimbați proprietarul folderului /etc/openvpn la root.

sudo chown -R root:root /etc/openvpn

Configurare rețea și firewall

Trebuie să permitem redirecționarea IP pe server pentru a permite redirecționarea pachetelor de la și către clientul VPN. Anulați comentariile pe linia 28 /etc/sysctl.conf:

Salvați și ieșiți din fișier.

Repornire systemctl pentru ca aceste schimbări să aibă loc.

sudo sysctl -p

Trebuie să setăm Network Address Translation (NAT) pe server folosind un firewall UFW, astfel încât să permitem clientului VPN să acceseze Internet folosind adresa IP a serverului VPN. Mai întâi, să activăm redirecționarea pachetelor în configurația firewall. Deschis /etc/default/ufw și schimbați variabila de pe linia 19 în ACCEPT.

Salvați și ieșiți din fișier.

Acum adăugați următoarele reguli în fișier /etc/ufw/before.rules inainte de filtru rând în fișier.

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

Introduceți interfața de rețea în loc de . Puteți vedea interfața de rețea cu comanda ifconfig.

Permiteți traficul pentru serviciul OpenVPN pe Firewall și permiteți portul 1194.

sudo ufw allow openvpn && sudo ufw allow 1194

Reîncărcați serviciul firewall.

sudo ufw reload

Acum putem reporni demonul serverului Open VPN rulând:

sudo service openvpn reporniți

Activați-l să pornească la momentul pornirii executând:

sudo systemctl activa openvpn

Serverul OpenVPN a fost acum configurat și a pornit. Să trecem acum la cererea de certificat al clientului și la generarea cheilor și alte configurații.

Configurare client OpenVPN

Trebuie să generăm o cheie și o cerere de certificat pentru client. Procedura pentru a face acest lucru este aceeași cu cea pentru server.

Deși o cheie de client și o cerere de certificat pot fi create pe computerul client și apoi transferate pe mașina CA, se recomandă să le creați pe computerul server. Avantajul de a face acest lucru pe server este că puteți crea un script pentru a efectua toți pașii necesari pe server, ceea ce face mai ușor pentru un nou client să se alăture VPN.

Accesați folderul CA de pe server și rulați următoarele:

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

Într-un mod similar cu cel anterior, introduceți un nume comun atunci când vi se solicită sau lăsați-l necompletat pentru a utiliza numele comun implicit, adică client.

Să copiem acum cererea de certificat client generată pe mașina CA.

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

Să importăm această solicitare în mașina CA:

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

Și hai să-l semnăm acum:

./easyrsa client client sign-req

introduceda când vi se cere să continue. Introduceți parola pentru cheia CA când vi se cere.

Acum putem elimina fișierul solicitat pentru client și copia cererea înapoi pe mașina serverului VPN.

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

Să creăm un folder numit client pentru a păstra toate fișierele legate de client pe serverul VPN. Vom muta cheia de client și certificatul în acest folder.

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

Acum, să creăm un fișier de configurare dintr-un șablon disponibil, similar cu modul în care am creat fișierul de configurare a serverului.

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

Deschideți fișierul client.conf. Pe linia 42, introduceți numele de gazdă sau adresa IP a serverului dvs. în locul lui serverul-meu-1.

Anulați comentariile liniilor 61 și 62 prin eliminarea punctului și virgulă de început, pentru a reduce privilegiile pentru fișier.

Apoi, comentați liniile 88-90 și linia 108. Motivul este că dorim să adăugăm manual conținutul fișierelor menționate în loc să folosim locațiile fișierelor. Scopul acestui lucru este ca fișierul de configurare a clientului să fie transferat ulterior către client, unde de fapt nu vom avea cheia clientului și fișierele de certificat; prin urmare, copiem conținutul acestora în fișierul de configurare în sine.

Adăugați următoarele la fișierul de configurare a clientului. Introduceți conținutul fișierelor respective în interiorul etichetelor date.

 # Lipiți conținutul fișierului ca.crt aici # Lipiți conținutul fișierului client.crt aici # Lipiți conținutul fișierului client.key aici direcția cheie 1 # Lipiți conținutul fișierului tls_auth.key aici 

Salvați și ieșiți din fișier. Redenumiți acest fișier din client.conf la client.ovpn, deoarece aceasta din urmă este extensia necesară pentru fișierele de configurare care pot fi importate ca configurații de rețea.

Acum, transferați fișierul client.ovpn către client, adică mașină locală.

Alerga scp pe computerul dvs. client pentru a transfera fișierul de pe computerul server pe computerul local.

scp user@server_ip:/path_to_file local_destination_path

În cele din urmă, trebuie să folosim acest fișier de configurare pentru a ne conecta la serverul VPN. Acest lucru se poate face atât prin linia de comandă, cât și prin GUI.

Pentru a porni clientul VPN din linia de comandă, rulați:

sudo openvpn --config client.ovpn

Și aceasta este singura comandă pe care trebuie să o rulați pentru a porni clientul VPN.

Pentru a porni clientul VPN prin GUI, efectuați următorii pași.

Accesați Setări » Rețea pe computerul dvs. client.

Faceți clic pe + butonul din secțiunea VPN și alegeți „Importați din fișier...” din opțiuni.

Faceți clic pe „Adăugați” pentru a începe să utilizați VPN-ul.

Rețineți că sub „Gateway”, este adresa IP a serverului.

În cele din urmă, comutați butonul „VPN client” pentru a activa VPN pe computer.

Ar putea dura câteva secunde pentru a stabili o conexiune VPN. O nouă siglă de progres pentru VPN va apărea în colțul din stânga sus al ecranului în timp ce este configurată și se va schimba într-o siglă VPN odată ce este configurată.

Pentru a verifica dacă VPN-ul funcționează corect, rulați următoarele:

curl //ipinfo.io/ip

Ar trebui să returneze adresa IP a serverului dvs. Sau, de asemenea, puteți verifica adresa dvs. IP căutând pur și simplu „IP-ul meu” pe Google. Ar trebui să arate adresa IP a serverului dvs. VPN dacă configurația noastră VPN funcționează corect.

Concluzie

În acest articol, am văzut cum să configurați un server OpenVPN, o autoritate de certificare și un client OpenVPN. Pentru a adăuga mai mulți clienți la VPN, acum trebuie să urmăm procedura de a genera și semna un certificat pentru client și de a folosi același fișier de configurare creat aici, cu doar cheia clientului și valorile certificatului schimbate.

În cazul conexiunilor la internet mai lente, este posibil ca, dacă este utilizat UDP pentru comunicare, să existe o pierdere considerabilă de pachete. Utilizatorul poate comuta la TCP prin decomentarea liniei proto tcp și comentând pe linie proto udp în fișierul de configurare a serverului.

De asemenea, în cazul în care există alte erori, puteți seta nivelul de înregistrare cu ajutorul verb directivă atât în ​​fișierele de configurare a serverului, cât și a clientului. Puteți introduce valori între 0 și 9. Cu cât valoarea acestei directive este mai mare, cu atât mai prolix va fi jurnalul.