Späť na blog

Nastavenie OpenVPN na Ubuntu 18.04

Nastavenie OpenVPN na Ubuntu 18.04

Úvod

Chceli by ste bezpečne pristupovať na internet zo svojho smartfónu alebo notebooku, keď sa pripájate k nedôveryhodnej sieti (napr. WiFi v hoteli alebo kaviarni)? Našťastie existuje spôsob, ako vám splniť vaše želania. K nedôveryhodnej sieti sa môžete bezpečne pripojiť tak, akoby ste boli v súkromnej sieti, pomocou virtuálnej privátnej siete (VPN).

Čo je to VPN?

VPN je skratka pre Virtual Private Network (virtuálnu privátnu sieť). Ponúka možnosť otvoriť zabezpečený tunel k dôveryhodnému serveru. Všetky požiadavky sú potom odosielané a prijímané prostredníctvom tohto servera. Výhodou je zabezpečenie vášho prístupu a transakcií pri používaní verejných sietí, ako je napríklad bezplatná WiFi v hoteli.

Cez VPN sú všetky dáta šifrované a spracovávané prostredníctvom servera. Zariadenia medzi nimi, ako sú smerovače tretích strán a podobne, nemajú možnosť presmerovať prevádzku do nežiaducich cieľov. Taktiež po úspešnom nadviazaní spojenia ste súčasťou siete servera. Ostatné servery, počítače alebo zariadenia, ako sú tlačiarne, ktoré by boli bežne prístupné len v lokálnej sieti servera, sú teraz dostupné aj cez VPN tunel. Keďže však nie všetky dáta musia byť posielané cez šifrovaný tunel, je možné nakonfigurovať VPN klienta tak, aby sa cez VPN tunel posielala len definovaná časť požiadaviek. Zvyšok prevádzky sa spracováva bežným spôsobom cez internet.

V tomto návode vás prevedieme krokmi nastavenia OpenVPN servera na Ubuntu 18.04.

Požiadavky

Na dokončenie tohto návodu musíte mať prístup k serveru Ubuntu 18.04, na ktorom bude bežať vaša OpenVPN služba. Pred spustením tohto návodu musíte tiež nakonfigurovať používateľa bez oprávnení root s povoleniami sudo. Svoj server môžete jednoducho nainštalovať podľa nášho návodu na nastavenie servera Ubuntu.

Okrem toho budete potrebovať samostatný počítač, ktorý bude fungovať ako certifikačná autorita (CA). Technicky môžete použiť svoj OpenVPN server alebo lokálny počítač ako certifikačnú autoritu. To však neodporúčame, pretože by to vystavilo vašu VPN bezpečnostným rizikám. Podľa oficiálnej dokumentácie OpenVPN by ste mali certifikačnú autoritu umiestniť na samostatný počítač určený na importovanie a podpisovanie žiadostí o certifikáty. Predpokladáme teda, že vaša certifikačná autorita je na samostatnom serveri Ubuntu 18.04, ktorý má tiež používateľa bez oprávnení root s povoleniami sudo a základný firewall. V tejto príručke budú všetky kroky inštalácie a konfigurácie pre každú z inštalácií čo najjednoduchšie. Môžete sa tiež pozrieť na náš návod, ako nastaviť Open VPN server pod Dockerom.

Krok 1 – Inštalácia OpenVPN a EasyRSA

Najprv aktualizujte index balíkov vášho VPN servera a nainštalujte OpenVPN. OpenVPN môžete nainštalovať pomocou apt, pretože je k dispozícii v predvolených repozitároch Ubuntu:

Krok 2: Vytvorenie certifikačnej autority

Vytvorte jednoduchú certifikačnú autoritu (CA) na vydávanie dôveryhodných certifikátov pre OpenVPN server. Ak to chcete urobiť, stiahnite si najnovšiu verziu EasyRSA do počítača s CA aj do servera OpenVPN pomocou wget. Ak chcete získať najnovšiu verziu, prejdite na stránku vydaní (Releases) oficiálneho projektu EasyRSA na GitHube, skopírujte odkaz na stiahnutie súboru končiaceho na .tgz a vložte ho do nasledujúceho príkazu:

Potom rozbaľte archív tarball:

 OpenVPN EasyRSA software

V tomto momente je všetok požadovaný softvér úspešne nainštalovaný vo vašom počítači s CA aj na serveri.

Krok 3 – Konfigurácia premenných EasyRSA a zostavenie CA

EasyRSA sa dodáva s konfiguračným súborom, ktorý môžete upraviť a definovať tak množstvo premenných pre vašu CA pomocou tohto príkazu:

V adresári sa nachádza súbor s názvom vars.example. Vytvorte kópiu tohto súboru a pomenujte ju vars bez prípony súboru:

Na otvorenie tohto nového súboru použite svoj preferovaný textový editor:

Ďalej vyhľadajte nastavenia, ktoré definujú predvolené hodnoty polí pre nové certifikáty. Bude to vyzerať podobne ako toto:

Aktualizujte tieto premenné na ľubovoľné hodnoty, ako je znázornené nižšie:

Hneď ako budete pripravení, súbor uložte a zatvorte. Ďalším krokom je zavolať skript easyrsa a spustiť ho s voľbou init-pki na inicializáciu infraštruktúry verejných kľúčov na CA serveri:

easyrsa init-pki

Ďalej spustite príkaz build-ca s voľbou nopass, aby ste neboli vyzvaní na zadanie hesla pri každej interakcii s vašou CA:

Na výstupe budete požiadaní o potvrdenie bežného názvu pre vašu CA:

 OpenVPN build-ca

Týmto je vaša CA pripravená a môže začať podpisovať žiadosti o certifikáty.

Krok 4 – Generovanie certifikátu servera, kľúča a šifrovacích súborov

Po príprave CA môžete vygenerovať súkromný kľúč a žiadosť o certifikát zo servera a potom ich odoslať do CA na podpis vytvorením požadovaného certifikátu. Najprv prejdite do adresára EasyRSA na serveri OpenVPN:

Odtiaľ spustite skript easyrsa s voľbou init-pki. Hoci ste tento príkaz už spustili na počítači CA, tento príkaz sa musí spustiť aj tu. Je to preto, že adresáre PKI servera a CA sú odlišné:

Potom znova zavolajte skript easyrsa, tentoraz s voľbou gen-req, za ktorou nasleduje všeobecný názov počítača:

Týmto sa vytvorí súkromný kľúč pre server a súbor žiadosti o certifikát s názvom server.req. Skopírujte kľúč servera do adresára /etc/openvpn/:

Preneste súbor server.req do svojho počítača CA pomocou bezpečnej metódy (napríklad SCP v nasledujúcom príklade):

Ďalej prejdite do adresára EasyRSA na vašom počítači CA:

Znova použite skript easyrsa na importovanie súboru server.req a pridajte jeho bežný názov za cestu k súboru:

Potom žiadosť podpíšte spustením skriptu easyrsa s voľbou sign-req, za ktorou nasleduje typ žiadosti a bežný názov. Pre žiadosť o certifikát servera OpenVPN sa uistite, že používate typ žiadosti server:

Výstup vás vyzve na overenie, či požiadavka pochádza z dôveryhodného zdroja. Zadajte yes a stlačením klávesu Enter potvrďte. Skontrolujte podrobnosti zobrazené nižšie, aby ste sa uistili o ich správnosti. Upozorňujeme, že táto požiadavka ešte nebola overená heslom.

Vyžiadajte si subjekt a podpíšte ho ako certifikát servera na 3650 dní:

 OpenVPN sign certificate for server

Ak ste zašifrovali kľúč CA, v tomto bode budete požiadaní o heslo. Ďalej použite bezpečnú metódu na prenos podpísaného certifikátu späť na váš VPN server:

Pred odhlásením z počítača CA preneste súbor ca.rt na server:

Ďalej sa znova prihláste na svoj OpenVPN server a skopírujte súbory server.crt a ca.crt do adresára /etc/openvpn/:

Potom prejdite do svojho adresára EasyRSA:

Zadaním nasledujúceho kódu vytvorte silný kľúč Diffie-Hellman, ktorý môžete použiť počas výmeny kľúčov:

Po dokončení vygenerujte podpis HMAC na zlepšenie funkčnosti kontroly stavu TLS servera:

Po dokončení príkazu skopírujte dva nové súbory do adresára / etc / openvpn /:

Týmto spôsobom sa vygenerujú všetky certifikáty a súbory kľúčov vyžadované serverom. Teraz môžete vytvoriť príslušný certifikát a kľúč, ktorý bude klientsky počítač používať na prístup k serveru OpenVPN.

Krok 4 – Vygenerovanie klientskeho certifikátu a páru kľúčov

Ďalej vytvoríme klientsky kľúč a niekoľko certifikátov. Ak máte viacero klientov, môžete tento proces zopakovať pre každého klienta. Upozorňujeme však, že pre každého klienta musíte skriptu odovzdať jedinečnú hodnotu názvu. V tomto návode pomenujeme prvý pár certifikátu/kľúča client1. Najprv vytvorte adresárovú štruktúru vo svojom domovskom adresári na ukladanie klientskych certifikátov a súborov kľúčov:

Keďže z bezpečnostných dôvodov ukladáte pár certifikátu/kľúča a konfiguračný súbor klienta do tohto adresára, mali by ste teraz odobrať oprávnenia:

Potom prejdite späť do adresára EasyRSA a spustite skript easyrsa s voľbami gen-req a nopass, ako aj so všeobecným názvom klienta:

Stlačením klávesu Enter potvrďte spoločný názov. Potom skopírujte súbor client1.key do predtým vytvoreného adresára / client-configs / keys /:

Ďalej použite bezpečnú metódu na prenos súboru client1.req do vášho počítača CA:

Prihláste sa do svojho počítača CA, prejdite do adresára EasyRSA a importujte požiadavku na certifikát:

import client.req

Potom, rovnako ako v predchádzajúcom kroku, podpíšte požiadavku na serveri. Tentoraz však musíte špecifikovať typ požiadavky klienta:

Po výzve zadajte yes na potvrdenie, že chcete podpísať požiadavku na certifikát a že požiadavka na certifikát pochádza z dôveryhodného zdroja. Ak chcete pokračovať, zadajte slovo “yes”, v opačnom prípade zadajte čokoľvek iné na zahodenie:

sign certificate

Ak ste zašifrovali kľúč CA, budete požiadaní o zadanie hesla aj tu. Tým sa vytvorí súbor klientskeho certifikátu s názvom client1.crt. Preneste tento súbor späť na server:

Prihláste sa cez SSH späť na váš OpenVPN server a skopírujte klientsky certifikát do adresára / client-configs / keys /:

Ďalej skopírujte súbory ca.crt a ta.key do adresára / client-configs / keys /:

Týmto boli vygenerované všetky certifikáty a kľúče servera aj klienta a uložené do príslušných adresárov na serveri. Teraz môžete pokračovať v nastavení OpenVPN na serveri.

 Krok 5 – Konfigurácia služby OpenVPN

Po vygenerovaní certifikátov klienta a servera môžete nakonfigurovať službu OpenVPN tak, aby používala tieto prihlasovacie údaje. Najprv skopírujte vzorový konfiguračný súbor OpenVPN do svojho konfiguračného adresára a potom ho rozbaľte, aby ste ho použili ako základ pre nastavenie:

Otvorte konfiguračný súbor servera vo vašom preferovanom textovom editore:

Potom nájdite časť HMAC vyhľadaním príkazu tls-auth:

Nájdite časť s heslom vyhľadaním zakomentovaného riadku s heslom. Šifrovanie AES-256-CBC ponúka dobrú úroveň šifrovania a je dobre podporované. Riadok by nemal byť zakomentovaný, ale ak je, vymažte pred ním znak “;”:

Pod to pridajte príkaz Auth na výber algoritmu HMAC message-digest. SHA256 je pre to dobrá voľba:

Ďalej nájdite riadok s príkazom dh, ktorý definuje parametre Diffie-Hellman. V dôsledku niektorých nedávnych zmien v EasyRSA sa názov súboru kľúča Diffie-Hellman môže líšiť od názvu súboru uvedeného vo vzorovom konfiguračnom súbore servera. V prípade potreby zmeňte tu uvedený názov súboru vymazaním 2048, aby ste ho zosúladili s kľúčom z predchádzajúceho kroku:

Nakoniec nájdite nastavenia user a group a vymažte “;” na začiatku každého riadku:

Doterajšie zmeny, ktoré ste vykonali vo vzorovom súbore server.conf, by mali umožniť fungovanie OpenVPN.

Step 6 – Sieťová konfigurácia servera

Nakonfigurujte presmerovanie IP (IP forwarding), aby ste správne smerovali prevádzku cez VPN. To je nevyhnutné pre funkčnosť VPN, ktorú váš server poskytuje:

Vyhľadajte zakomentovaný riadok, ktorý nastavuje net.ipv4.ip_forward. Odstráňte znak „#“ zo začiatku riadku, aby ste toto nastavenie odkomentovali:

Po dokončení súbor uložte a zatvorte. Ak chcete súbor načítať a upraviť hodnoty pre aktuálnu reláciu, zadajte:

sysctl -p

Ďalej pridajte verejné sieťové rozhranie vášho stroja:

Vaše verejné rozhranie je reťazec vo výstupe tohto príkazu, ktorý nasleduje za slovom „dev“. Tento výsledok napríklad ukazuje rozhranie s názvom ens3.

default ip route

Otvorte súbor /etc/ufw/before.rules a pridajte príslušnú konfiguráciu:

Smerom k hornej časti súboru pridajte zvýraznené riadky nižšie, aby ste nastavili predvolenú politiku pre reťazec POSTROUTING v tabuľke nat a maskovali akúkoľvek prevádzku prichádzajúcu z VPN. Nahraďte ens3 v riadku -A POSTROUTING nižšie rozhraním, ktoré ste našli v príkaze vyššie:

Po dokončení súbor uložte a zatvorte. Ďalej musíte nastaviť UFW tak, aby predvolene povoľoval aj presmerované pakety. Ak to chcete urobiť, otvorte súbor /etc/default/ufw:

Vo vnútri nájdite direktívu DEFAULT_FORWARD_POLICY a zmeňte hodnotu z DROP na ACCEPT:

Po dokončení súbor uložte a zatvorte. Ďalej upravte firewall tak, aby povolil prevádzku pre OpenVPN. Ak ste nezmenili port a protokol v súbore /etc/openvpn/server.conf, budete musieť otvoriť UDP prevádzku na porte 1194. Ak ste port a/alebo protokol zmenili, nahraďte ich hodnotami, ktoré ste vybrali. V prípade, že ste pri postupovaní podľa predchádzajúceho návodu zabudli pridať SSH port, pridajte ho aj sem:

Po pridaní týchto pravidiel zakážte a znova povoľte UFW, aby sa reštartoval a načítal zmeny zo všetkých súborov, ktoré ste upravili:

ufw commands

Gratulujeme, váš server je teraz nakonfigurovaný na správne spracovanie prevádzky OpenVPN!

Záver

Ak ste postupovali podľa tohto návodu až do konca, teraz môžete bezpečne prehliadať internet. Budete môcť chrániť svoju identitu, polohu a prevádzku pred zvedavými očami.

Príjemnú prácu s počítačom!

 

 

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.