Kaip nustatyti „OpenVPN“ serverį „Ubuntu 20.04“.

Galutinis saugaus „OpenVPN“ serverio nustatymo „Ubuntu 20.04“ vadovas

Virtualus privatus tinklas (VPN) leidžia saugiai ir privačiai prisijungti prie nuotolinio privataus tinklo, pavyzdžiui, biuro tinklo arba interneto taip, tarsi būtumėte tiesiogiai prisijungę prie privataus tinklo.

VPN veikia serverio-kliento architektūroje. VPN serveris yra įdiegtas įrenginyje ir yra viešai pasiekiamas internetu. VPN serverį galima sukonfigūruoti taip, kad būtų galima prisijungti prie privataus LAN, pvz., biuro tinklo, arba leisti prisijungti prie interneto. Vartotojas prisijungia prie VPN serverio naudodamas VPN klientą savo vietiniame kompiuteryje. Ryšys tarp VPN serverio ir kliento vyksta naudojant saugų tuneliavimo protokolą. Internetui atrodo, kad srauto tikslas yra VPN serveris; tačiau srautas perduodamas klientui per serverį.

Kasdieniame gyvenime VPN naudojamas daug, pavyzdžiui, saugus prisijungimas prie viešojo „Wi-Fi“ tinklo, kuris dažnai yra pažeistas, arba tam tikrų svetainių geografinių apribojimų apeinimas prisijungiant prie VPN, esančio šalyje, kurią leidžia svetainė.

OpenVPN yra plačiai naudojamas VPN diegimas, suteikiantis daugybę konfigūracijų ir parinkčių. Jis naudoja Secure Sockets Layer (SSL) protokolą duomenims ir iš anksto bendrinamiems raktams, vartotojo vardui / slaptažodžiui arba sertifikatams šifruoti VPN kliento autentifikavimui. Šiame straipsnyje pamatysime, kaip Ubuntu 20.04 nustatyti VPN serverį ir VPN klientą.

Montavimas

„OpenVPN“ yra pakuotėje esančiose oficialiose „Ubuntu“ saugyklose openvpn. Šis paketas įdiegia ir OpenVPN serverį, ir klientą.

sudo apt install openvpn

Kaip minėta anksčiau, „OpenVPN“ naudoja SSL sertifikatus, kad užšifruotų duomenis tarp serverio ir kliento. Turime nustatyti savo sertifikatų instituciją (CA), kad išduotume VPN sertifikatus. Atminkite, kad tai turėtų būti nustatyta kitame įrenginyje nei tas, kuriame nustatytas „OpenVPN“; Priežastis ta, kad jei jis yra tame pačiame serveryje ir jei jis yra pažeistas, užpuolikas gali pasiekti privatų raktą ir taip užpulti VPN ryšį.

Sertifikavimo institucijai nustatyti naudosime įrankį „Easy-RSA“. Norėdami jį įdiegti, CA įrenginyje, OpenVPN serverio įrenginyje ir kliento įrenginyje paleiskite toliau nurodytus veiksmus, nes norint nustatyti CA, reikia konfigūruoti visus tris.

sudo apt install easy-rsa

Dabar pirmiausia sukonfigūruosime sertifikatų instituciją CA įrenginyje ir atliksime tam tikrus būtinus konfigūracijos veiksmus atvirojo VPN serverio įrenginyje.

Sertifikatų institucijos sąranka

Pradinė sąranka CA įrenginyje

Dabar šis paketas įdiegia komandą, vadinamą make-cadir kuris naudojamas sertifikatų institucijos konfigūravimo aplankui sukurti. Sukurkime aplanką naudodami tai ir įveskite aplanką.

make-cadir cert_authority && cd cert_authority

Atidarykite failą pavadinimu vars sukurtas šiame kataloge. Šiame faile yra keletas konfigūracijos kintamųjų, kuriuos turime pakeisti. Reikšmės, kurias reikia keisti, yra 91-96 eilutėse po komentaro apie Organizaciniai laukai kuri apibūdina šiuos laukus. Panaikinkite eilučių komentarus ir vietoje pavyzdinių verčių užpildykite atitinkamas reikšmes.

Išsaugokite ir išeikite iš failo. Jei naudojate vim redaktorių, paspauskite Esc, tipas :wq ir paspauskite Įeikite išsaugoti ir išeiti.

Toliau paleidžiame easyrsa programa kataloge, kad nustatytų viešojo rakto infrastruktūrą (PKI), kuri bus naudojama viešajam raktui ir sertifikatams generuoti.

./easyrsa init-pki

Kitas veiksmas sugeneruos CA raktą ir sertifikatą. Kai komanda ragina įvesti slaptažodį, įveskite CA rakto slaptažodį. Be to, kai būsite paraginti, įveskite bendrą pavadinimą. Jei paliksite šį lauką tuščią, bus naudojamas numatytasis pavadinimas Easy-RSA CA pavadinimas.

./easyrsa build-ca

Kaip matome iš išvesties, sertifikatas ir raktas buvo sugeneruoti. Šis raktas bus naudojamas pasirašyti kliento ir serverio sertifikatus, todėl jo niekada negalima liesti / keisti.

Dabar turime PKI sąranką. Kitas žingsnis – kompiuteryje sukurti serverio raktą ir sertifikatą, kurį naudosime kaip OpenVPN serverį. Šį sertifikatą vėliau pasirašys CA įrenginys.

Serverio rakto ir sertifikato generavimas serverio įrenginyje

Mes jau įdiegėme Easy RSA serverio įrenginyje. Dabar serverio įrenginyje atlikite tris veiksmus, kuriuos anksčiau atlikome CA įrenginyje, t. CA katalogo kūrimas naudojant make-cadir ir eikite į jį, pakeisdami kintamuosius vars failą ir generuoti PKI naudojant ./easyrsa init-pki komandą.

Tada turime paleisti komandą, kad sugeneruotume serverio sertifikato užklausą ir raktą.

./easyrsa gen-req serverio nopass

Atkreipkite dėmesį, kad išlaikėme parinktį nopass kad komanda mūsų neprašytų įvesti serverio rakto slaptažodžio. Jis vis tiek paragins įvesti bendrą serverio pavadinimą, kurį galite įvesti bet ką arba palikite tuščią numatytąjį pavadinimą (serveris) bus panaudotas.

Perkelkite sugeneruotą rakto failą viduje /etc/openvpn katalogas.

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

Išsiųskite sertifikato užklausą į CA įrenginį. Mes naudosime komandą scp šiam tikslui.

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

Aukščiau esančioje ekrano kopijoje pagrindinis 45.79.125.41 yra CA įrenginys. Mes nukopijavome sertifikatą į /root katalogą.

Dabar serverio sertifikatas buvo nukopijuotas į CA įrenginį. Kitas veiksmas yra grįžti į CA įrenginį ir pasirašyti šį sertifikatą.

Serverio sertifikato pasirašymas CA

Pirmiausia patikrinkime, ar sertifikato užklausos failas iš serverio buvo nukopijuotas CA įrenginyje. Eikite į katalogą, kuriame nukopijavome failą (mano pavyzdyje / root) ir paleiskite ls.

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

Kaip matome, failas serveris.req yra. Tada eikite į CA katalogą ir importuokite šią užklausą.

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

Norėdami pasirašyti šią užklausą, paleiskite šią komandą.

./easyrsa sign-req serverio serveris

Čia pirmasis argumentas yra užklausos tipas, t.y. serveris, ir antrasis argumentas yra bendras serverio mašinos pavadinimas, kuriam anksčiau naudojome numatytąją reikšmę, t.y. serveris.

Įveskite frazę taip, ir CA rakto slaptažodį, kai būsite paraginti.

Dabar galime pašalinti sertifikato užklausos failą ir nukopijuoti sugeneruotą serverio sertifikatą bei CA viešąjį sertifikatą atgal į serverio įrenginį.

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

Tada turime atlikti dar kelis veiksmus, kad užtikrintume saugų VPN ryšį.

DH parametrų generavimas

DH (Diffie-Hellman) raktų mainai yra algoritmas, užtikrinantis saugų keitimąsi kriptovaliutų raktais nesaugiu kanalu. Pirmiausia perkelkime gautą sertifikatą ir CA viešąjį sertifikatą į /etc/openvpn.

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

Eikite į CA aplanką serverio įrenginyje ir paleiskite šią komandą, kad sugeneruotumėte DH parametrus. Tai gali užtrukti ilgai.

./easyrsa gen-dh

Dabar perkelkite sugeneruotą failą į /etc/openvpn.

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

TA raktų generavimas

„OpenVPN“ naudoja kitą papildomą saugos priemonę, naudodamas TLS autentifikavimo raktą. Norėdami sugeneruoti TLS autentifikavimo raktą, paleiskite:

openvpn --genkey --slaptas tls_auth.key

Ir perkelkite raktą į /etc/openvpn.

mv tls_auth.key /etc/openvpn

Serverio rakto konfigūracija ir sertifikatų institucijos sąranka baigta. Dabar pereikime prie tikrosios VPN serverio konfigūracijos.

OpenVPN serverio konfigūracija

„OpenVPN“ serverio konfigūracijos failas automatiškai nesukuriamas, tačiau galime naudoti šablono konfigūracijos failą iš 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

Atidarykite failą naudodami vim arba bet kurį pasirinktą redaktorių.

cd /etc/openvpn vim server.conf

Turime įvesti bendrinius raktų ir sertifikatų pavadinimus, kuriuos sugeneravome anksčiau. Eikite į eilutę Nr. 78. Kadangi naudojome visus numatytuosius pavadinimus, juos paliekame nepakeistus. Tada patikrinkite DH parametrų failo pavadinimą 85 eilutėje. Naudojome pavadinimą dh.pem, todėl pakeiskime jį.

Tada pakeiskime OpenVPN serverio privilegijas. Eikite į 274 ir 275 eilutes ir pašalinkite pirmąją dalį ; norėdami jį komentuoti.

Panašiai eikite į 192 eilutę ir pašalinkite kabliataškį. Ši direktyva leidžia visų klientų srautui pereiti per VPN.

Išsaugokite ir išeikite iš failo.

Pakeiskite aplanko /etc/openvpn nuosavybės teisę į root.

sudo chown -R root:root /etc/openvpn

Tinklo ir ugniasienės nustatymas

Turime leisti IP persiuntimą serveryje, kad būtų galima persiųsti paketus iš VPN kliento ir į jį. Komentarų panaikinimo 28 eilutė /etc/sysctl.conf:

Išsaugokite ir išeikite iš failo.

Perkrauti systemctl kad šie pokyčiai įvyktų.

sudo sysctl -p

Turime nustatyti tinklo adresų vertimą (NAT) serveryje naudodami UFW užkardą, kad VPN klientas galėtų pasiekti internetą naudojant VPN serverio IP adresą. Pirma, ugniasienės konfigūracijoje įgalinkime paketų persiuntimą. Atviras /etc/default/ufw ir pakeiskite kintamąjį 19 eilutėje į ACCEPT.

Išsaugokite ir išeikite iš failo.

Dabar prie failo pridėkite šias taisykles /etc/ufw/before.rules prieš filtras eilutę faile.

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

Vietoj to įveskite tinklo sąsają . Tinklo sąsają galite pamatyti naudodami komandą ifconfig.

Leiskite srautą OpenVPN paslaugai užkardoje ir leiskite 1194 prievadą.

sudo ufw leidžia openvpn && sudo ufw leidžia 1194

Iš naujo įkelkite ugniasienės paslaugą.

sudo ufw perkrauti

Dabar galime iš naujo paleisti atvirojo VPN serverio demoną paleisdami:

sudo paslauga openvpn paleiskite iš naujo

Įgalinkite jį paleisti įkrovos metu paleisdami:

sudo systemctl įgalinti openvpn

OpenVPN serveris dabar sukonfigūruotas ir paleistas. Dabar pereikime prie kliento sertifikato užklausos ir rakto generavimo bei kitos konfigūracijos.

„OpenVPN“ kliento konfigūracija

Klientui turime sugeneruoti raktą ir sertifikato užklausą. Procedūra, kaip tai padaryti, yra tokia pati kaip ir serverio.

Nors kliento raktą ir sertifikato užklausą galima sukurti kliento įrenginyje ir perkelti į CA įrenginį, rekomenduojama jį sukurti serverio įrenginyje. Tai darant serveryje pranašumas yra tas, kad galite sukurti scenarijų, skirtą atlikti visus būtinus veiksmus serveryje, todėl naujam klientui bus lengviau prisijungti prie VPN.

Eikite į CA aplanką serveryje ir paleiskite šiuos veiksmus:

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

Panašiai kaip ir anksčiau, kai būsite paraginti, įveskite bendrą pavadinimą arba palikite jį tuščią, jei norite naudoti numatytąjį bendrąjį pavadinimą, t. y. klientas.

Dabar nukopijuokime sugeneruotą kliento sertifikato užklausą į CA įrenginį.

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

Importuokime šią užklausą į CA įrenginį:

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

O dabar pasirašykime:

./easyrsa sign-req kliento klientas

Įeikitetaip kai būsite paraginti tęsti. Kai bus paprašyta, įveskite CA rakto slaptažodį.

Dabar galime pašalinti kliento prašomą failą ir nukopijuoti užklausą atgal į VPN serverio įrenginį.

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

Sukurkime aplanką pavadinimu klientas kad visi su klientu susiję failai būtų saugomi VPN serveryje. Į šį aplanką perkelsime kliento raktą ir sertifikatą.

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

Dabar sukurkime konfigūracijos failą iš turimo šablono, panašiai kaip mes sukūrėme serverio konfigūracijos failą.

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

Atidarykite failą client.conf. 42 eilutėje įveskite savo serverio kompiuterio pagrindinio kompiuterio pavadinimą arba IP adresą vietoje mano serveris-1.

Panaikinkite 61 ir 62 eilutes pašalindami kabliataškį priekyje, kad sumažintumėte failo privilegijas.

Toliau pakomentuokite 88-90 ir 108 eilutes. Priežastis ta, kad norime įtraukti minėtų failų turinį rankiniu būdu, o ne naudoti failų vietas. Taip siekiama, kad kliento konfigūracijos failas vėliau būtų perkeltas į klientą, kur iš tikrųjų neturėsime kliento rakto ir sertifikato failų; todėl nukopijuojame turinį, esantį pačiame konfigūracijos faile.

Prie kliento konfigūracijos failo pridėkite toliau pateiktą informaciją. Įveskite atitinkamų failų turinį nurodytose žymose.

 # Įklijuokite ca.crt failo turinį čia # Įklijuokite client.crt failo turinį čia # Įklijuokite client.key failo turinį čia Key-direction 1 # Įklijuokite tls_auth.key failo turinį čia 

Išsaugokite ir išeikite iš failo. Pervardykite šį failą iš client.conf į klientas.ovpn, nes pastarasis yra plėtinys, reikalingas konfigūracijos failams, kuriuos galima importuoti kaip tinklo konfigūracijas.

Dabar perkelkite failą klientas.ovpn klientui, ty vietiniam įrenginiui.

Bėk scp savo kliento kompiuteryje, kad perkeltumėte failą iš serverio įrenginio į vietinį kompiuterį.

scp vartotojas@serverio_ip:/failo_kelias vietinis_paskirties_kelias

Galiausiai, norėdami prisijungti prie VPN serverio, turime naudoti šį konfigūracijos failą. Tai galima padaryti naudojant komandinę eilutę ir GUI.

Norėdami paleisti VPN klientą iš komandinės eilutės, paleiskite:

sudo openvpn --config client.ovpn

Ir tai yra vienintelė komanda, kurią turite paleisti, kad paleistumėte VPN klientą.

Norėdami paleisti VPN klientą per GUI, atlikite šiuos veiksmus.

Kliento įrenginyje eikite į Nustatymai » Tinklas.

Spustelėkite ant + mygtuką VPN skiltyje ir iš parinkčių pasirinkite „Importuoti iš failo…“.

Spustelėkite „Pridėti“, kad pradėtumėte naudoti VPN.

Atminkite, kad skiltyje „Gateway“ tai yra serverio IP adresas.

Galiausiai perjunkite mygtuką „kliento VPN“, kad įjungtumėte VPN įrenginyje.

VPN ryšiui užmegzti gali prireikti kelių sekundžių. Viršutiniame kairiajame ekrano kampe bus rodomas naujas VPN pažangos logotipas, kol bus nustatytas, o kai bus nustatytas, jis pasikeis į VPN logotipą.

Norėdami patikrinti, ar VPN veikia tinkamai, atlikite šiuos veiksmus:

curl //ipinfo.io/ip

Jis turėtų grąžinti jūsų serverio įrenginio IP adresą. Arba taip pat galite patikrinti savo IP adresą tiesiog „Google“ ieškodami „Mano IP“. Jame turėtų būti rodomas jūsų VPN serverio IP adresas, jei mūsų VPN sąranka veikia tinkamai.

Išvada

Šiame straipsnyje matėme, kaip sukonfigūruoti „OpenVPN“ serverį, sertifikatų įstaigą ir „OpenVPN“ klientą. Norėdami pridėti daugiau klientų prie VPN, dabar turime atlikti kliento sertifikato generavimo ir pasirašymo procedūrą ir naudoti tą patį čia sukurtą konfigūracijos failą, pakeisdami tik kliento raktą ir sertifikato reikšmes.

Esant lėtesniam interneto ryšiui, gali būti, kad ryšiui naudojant UDP, labai prarandami paketai. Vartotojas gali pereiti prie TCP panaikindamas eilutę proto tcp ir komentuodamas eilutę proto udp serverio konfigūracijos faile.

Be to, jei yra kitų klaidų, galite nustatyti registravimo lygį naudodami veiksmažodis direktyvą tiek serverio, tiek kliento konfigūracijos failuose. Galite įvesti reikšmes nuo 0 iki 9. Kuo didesnė šios direktyvos reikšmė, tuo žurnalas bus išsamesnis.