Ú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:
|
1 2 |
sudo apt update sudo apt install openvpn |
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:
|
1 |
wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz <span class="s1">--no-check-certificate</span> |
Potom rozbaľte archív tarball:
|
1 2 |
cd ~ tar xvf EasyRSA-3.0.4.tgz |

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:
|
1 |
cd ~/EasyRSA-3.0.4/ |
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:
|
1 |
cp vars.example vars |
Na otvorenie tohto nového súboru použite svoj preferovaný textový editor:
|
1 |
nano vars |
Ďalej vyhľadajte nastavenia, ktoré definujú predvolené hodnoty polí pre nové certifikáty. Bude to vyzerať podobne ako toto:
|
1 2 3 4 5 6 |
#set_var EASYRSA_REQ_COUNTRY "US" #set_var EASYRSA_REQ_PROVINCE "California" #set_var EASYRSA_REQ_CITY "San Francisco" #set_var EASYRSA_REQ_ORG "Copyleft Certificate Co" #set_var EASYRSA_REQ_EMAIL "me@example.net" #set_var EASYRSA_REQ_OU "My Organizational Unit" |
Aktualizujte tieto premenné na ľubovoľné hodnoty, ako je znázornené nižšie:
|
1 2 3 4 5 6 |
set_var EASYRSA_REQ_COUNTRY "SL" set_var EASYRSA_REQ_PROVINCE "Zurich" set_var EASYRSA_REQ_CITY "Zurich City" set_var EASYRSA_REQ_ORG "CloudSigma" set_var EASYRSA_REQ_EMAIL "admin@example.com" set_var EASYRSA_REQ_OU "Community" |
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:
|
1 |
./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:
|
1 |
./easyrsa build-ca nopass |
Na výstupe budete požiadaní o potvrdenie bežného názvu pre vašu 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:
|
1 |
cd EasyRSA-3.0.4 |
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é:
|
1 |
./easyrsa init-pki |
Potom znova zavolajte skript easyrsa, tentoraz s voľbou gen-req, za ktorou nasleduje všeobecný názov počítača:
|
1 |
./easyrsa gen-req server nopass |
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/:
|
1 |
sudo cp ~/EasyRSA-3.0.4/pki/private/server.key /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):
|
1 |
scp ~/EasyRSA-3.0.4/pki/reqs/server.req cloudsigma@your_CA_ip:/tmp |
Ďalej prejdite do adresára EasyRSA na vašom počítači CA:
|
1 |
cd EasyRSA-3.0.4/ |
Znova použite skript easyrsa na importovanie súboru server.req a pridajte jeho bežný názov za cestu k súboru:
|
1 |
./easyrsa import-req /tmp/server.req server |
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:
|
1 |
./easyrsa sign-req server 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í:

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:
|
1 |
scp pki/issued/server.crt siigma@your_server_ip:/tmp |
Pred odhlásením z počítača CA preneste súbor ca.rt na server:
|
1 |
scp pki/ca.crt siigma@our_server_ip:/tmp |
Ďalej sa znova prihláste na svoj OpenVPN server a skopírujte súbory server.crt a ca.crt do adresára /etc/openvpn/:
|
1 |
sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/ |
Potom prejdite do svojho adresára EasyRSA:
|
1 |
cd ~/EasyRSA-3.0.4/ |
Zadaním nasledujúceho kódu vytvorte silný kľúč Diffie-Hellman, ktorý môžete použiť počas výmeny kľúčov:
|
1 |
./easyrsa gen-dh |
Po dokončení vygenerujte podpis HMAC na zlepšenie funkčnosti kontroly stavu TLS servera:
|
1 |
openvpn --genkey --secret ta.key |
Po dokončení príkazu skopírujte dva nové súbory do adresára / etc / openvpn /:
|
1 2 |
sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/ sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /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:
|
1 |
mkdir -p ~/client-configs/keys |
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:
|
1 |
chmod -R 700 ~/client-configs |
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:
|
1 2 |
cd ~/EasyRSA-3.0.4/ ./easyrsa gen-req client1 nopass |
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 /:
|
1 |
cp pki/private/client1.key ~/client-configs/keys/ |
Ďalej použite bezpečnú metódu na prenos súboru client1.req do vášho počítača CA:
|
1 |
scp pki/reqs/client1.req sigma@your_CA_ip:/tmp |
Prihláste sa do svojho počítača CA, prejdite do adresára EasyRSA a importujte požiadavku na certifikát:
|
1 2 3 |
ssh siigma@your_CA_ip cd EasyRSA-3.0.4/ ./easyrsa import-req /tmp/client1.req client1 |

Potom, rovnako ako v predchádzajúcom kroku, podpíšte požiadavku na serveri. Tentoraz však musíte špecifikovať typ požiadavky klienta:
|
1 |
./easyrsa sign-req client client1 |
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:
|
1 |
Potvrdiť podrobnosti požiadavky: Áno |

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:
|
1 |
scp pki/issued/client1.crt siigma@your_server_ip:/tmp |
Prihláste sa cez SSH späť na váš OpenVPN server a skopírujte klientsky certifikát do adresára / client-configs / keys /:
|
1 |
cp /tmp/client1.crt ~/client-configs/keys/ |
Ďalej skopírujte súbory ca.crt a ta.key do adresára / client-configs / keys /:
|
1 2 |
cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/ sudo cp /etc/openvpn/ca.crt ~/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:
|
1 2 |
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz |
Otvorte konfiguračný súbor servera vo vašom preferovanom textovom editore:
|
1 |
sudo nano /etc/openvpn/server.conf |
Potom nájdite časť HMAC vyhľadaním príkazu tls-auth:
|
1 |
tls-auth ta.key 0 # Tento súbor je tajný |
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 “;”:
|
1 |
cipher AES-256-CBC |
Pod to pridajte príkaz Auth na výber algoritmu HMAC message-digest. SHA256 je pre to dobrá voľba:
|
1 |
auth SHA256 |
Ď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:
|
1 |
dh dh.pem |
Nakoniec nájdite nastavenia user a group a vymažte “;” na začiatku každého riadku:
|
1 2 |
user nobody group nogroup |
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:
|
1 |
sudo nano /etc/sysctl.conf |
Vyhľadajte zakomentovaný riadok, ktorý nastavuje net.ipv4.ip_forward. Odstráňte znak „#“ zo začiatku riadku, aby ste toto nastavenie odkomentovali:
|
1 |
net.ipv4.ip_forward=1 |
Po dokončení súbor uložte a zatvorte. Ak chcete súbor načítať a upraviť hodnoty pre aktuálnu reláciu, zadajte:
|
1 |
sudo sysctl -p |

Ďalej pridajte verejné sieťové rozhranie vášho stroja:
|
1 |
ip route | grep default |
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.

Otvorte súbor /etc/ufw/before.rules a pridajte príslušnú konfiguráciu:
|
1 |
$ sudo nano /etc/ufw/before.rules |
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:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# rules.before # Pravidlá, ktoré by sa mali spustiť pred pravidlami pridanými cez príkazový riadok ufw. Vlastné # pravidlá by mali byť pridané do jedného z týchto reťazcov: # ufw-before-input # ufw-before-output # ufw-before-forward # ZAČIATOK OPENVPN PRAVIDIEL # Pravidlá tabuľky NAT *nat :POSTROUTING ACCEPT [0:0] # Povoliť prevádzku z OpenVPN klienta na wlp11s0 (zmeňte na rozhranie, ktoré ste zistili!) -A POSTROUTING -s 10.8.0.0/8 -o ens3 -j MASQUERADE COMMIT # KONIEC OPENVPN PRAVIDIEL # Nemažte tieto požadované riadky, inak dôjde k chybám . . . |
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:
|
1 |
sudo nano /etc/default/ufw |
Vo vnútri nájdite direktívu DEFAULT_FORWARD_POLICY a zmeňte hodnotu z DROP na ACCEPT:
|
1 |
DEFAULT_FORWARD_POLICY="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:
|
1 2 |
sudo ufw allow 1194/udp sudo ufw allow OpenSSH |
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:
|
1 2 |
sudo ufw disable sudo ufw enable |

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!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.