Úvod
Chcete bezpečně přistupovat k internetu ze svého chytrého telefonu nebo notebooku, když se připojujete k nedůvěryhodné síti (např. Wi-Fi v hotelu nebo kavárně)? Naštěstí existuje způsob, jak vám vaše přání splnit. K nedůvěryhodné síti se můžete bezpečně připojit, jako byste byli v soukromé síti, a to pomocí virtuální privátní sítě (VPN).
Co je to VPN?
VPN je zkratka pro virtuální privátní síť (Virtual Private Network). Nabízí možnost otevřít zabezpečený tunel k důvěryhodnému serveru. Všechny požadavky jsou pak odesílány a přijímány prostřednictvím tohoto serveru. Výhodou je zabezpečení vašeho přístupu a transakcí při používání veřejných sítí, jako je bezplatná Wi-Fi v hotelu.
Prostřednictvím VPN jsou všechna data šifrována a zpracovávána přes server. Zařízení, která se nacházejí mezi nimi, jako jsou směrovače třetích stran a podobně, nemají možnost přesměrovat provoz do nežádoucích cílů. Jakmile je navíc spojení úspěšně navázáno, stáváte se součástí sítě serveru. Ostatní servery, počítače nebo zařízení, jako jsou tiskárny, které by za normálních okolností byly přístupné pouze v lokální síti serveru, jsou nyní dosažitelné i přes VPN tunel. Vzhledem k tomu, že ne všechna data musí být posílána šifrovaným tunelem, je však možné nakonfigurovat VPN klienta tak, aby přes VPN tunel procházela pouze definovaná část požadavků. Zbytek provozu je zpracováván běžným způsobem přes internet.
V tomto návodu vás provedeme kroky nastavení OpenVPN serveru na Ubuntu 18.04.
Požadavky
Pro dokončení tohoto návodu musíte mít přístup k serveru Ubuntu 18.04, na kterém bude hostována vaše OpenVPN služba. Před spuštěním tohoto průvodce musíte také nakonfigurovat uživatele bez oprávnění root s právy sudo. Server můžete snadno nainstalovat podle našeho návodu na nastavení serveru Ubuntu.
Kromě toho budete potřebovat samostatný počítač, který bude fungovat jako certifikační autorita (CA). Technicky můžete použít svůj OpenVPN server nebo místní počítač jako certifikační autoritu. To však nedoporučujeme, protože by to vystavilo vaši VPN bezpečnostním rizikům. Podle oficiální dokumentace OpenVPN byste měli certifikační autoritu umístit na samostatný počítač vyhrazený pro import a podepisování žádostí o certifikáty. Předpokládáme tedy, že vaše certifikační autorita je na samostatném serveru Ubuntu 18.04, který má také uživatele bez oprávnění root s právy sudo a základní firewall. V tomto průvodci budou všechny kroky instalace a konfigurace pro každou z instalací co nejjednodušší. Můžete se také podívat na náš návod, jak nastavit Open VPN server pod Dockerem.
Krok 1 – Instalace OpenVPN a EasyRSA
Nejprve aktualizujte index balíčků serveru VPN a nainstalujte OpenVPN. OpenVPN můžete nainstalovat pomocí apt, protože je k dispozici ve výchozích repozitářích Ubuntu:
|
1 2 |
sudo apt update sudo apt install openvpn |
Krok 2: Vytvoření certifikační autority
Vytvořte jednoduchou certifikační autoritu (CA) pro vydávání důvěryhodných certifikátů pro OpenVPN server. Chcete-li to provést, stáhněte si nejnovější verzi EasyRSA do počítače s CA i do OpenVPN serveru pomocí wget. Chcete-li získat nejnovější verzi, přejdete na stránku Releases oficiálního projektu EasyRSA na GitHubu, zkopírujte odkaz ke stažení souboru s příponou .tgz a vložte jej do následujícího pří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> |
Poté rozbalte tarball:
|
1 2 |
cd ~ tar xvf EasyRSA-3.0.4.tgz |

V tomto okamžiku byl veškerý požadovaný software úspěšně nainstalován na vašem počítači s CA i na serveru.
Krok 3 – Konfigurace proměnných EasyRSA a sestavení CA
EasyRSA se dodává s konfiguračním souborem, který můžete upravit a definovat v něm řadu proměnných pro vaši CA pomocí tohoto příkazu:
|
1 |
cd ~/EasyRSA-3.0.4/ |
V adresáři se nachází soubor s názvem vars.example. Vytvořte kopii tohoto souboru a pojmenujte ji vars bez přípony souboru:
|
1 |
cp vars.example vars |
K otevření tohoto nového souboru použijte svůj oblíbený textový editor:
|
1 |
nano vars |
Dále vyhledejte nastavení, která určují výchozí hodnoty polí pro nové certifikáty. Bude to vypadat podobně jako 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 tyto proměnné na libovolné hodnoty, jak je znázorněno níže:
|
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" |
Jakmile budete hotovi, soubor uložte a zavřete. Dalším krokem je volání skriptu easyrsa a jeho spuštění s volbou init-pki pro inicializaci infrastruktury veřejných klíčů na CA serveru:
|
1 |
./easyrsa init-pki |

Dále spusťte příkaz build-ca s volbou nopass, abyste nebyli vyzváni k zadání hesla při každé interakci s vaší CA:
|
1 |
./easyrsa build-ca nopass |
Ve výstupu budete požádáni o potvrzení běžného názvu pro vaši CA:

Tím je vaše CA připravena a může začít podepisovat žádosti o certifikáty.
Krok 4 – Generování certifikátu serveru, klíče a šifrovacích souborů
Jakmile je CA připravena, můžete ze serveru vygenerovat soukromý klíč a žádost o certifikát a poté je odeslat CA k podpisu vytvořením požadovaného certifikátu. Nejprve přejděte do adresáře EasyRSA na OpenVPN serveru:
|
1 |
cd EasyRSA-3.0.4 |
Odtud spusťte skript easyrsa s volbou init-pki. Přestože jste tento příkaz již spustili na počítači CA, musí být spuštěn i zde. Je to proto, že adresáře PKI serveru a CA se liší:
|
1 |
./easyrsa init-pki |
Poté znovu zavolejte skript easyrsa, tentokrát s volbou gen-req, následovanou obecným názvem počítače:
|
1 |
./easyrsa gen-req server nopass |
Tím se vytvoří soukromý klíč pro server a soubor s žádostí o certifikát s názvem server.req. Zkopírujte klíč serveru do adresáře /etc/openvpn/:
|
1 |
sudo cp ~/EasyRSA-3.0.4/pki/private/server.key /etc/openvpn/ |
Přeneste soubor server.req do počítače CA pomocí zabezpečené metody (například SCP v následujícím příkladu):
|
1 |
scp ~/EasyRSA-3.0.4/pki/reqs/server.req cloudsigma@your_CA_ip:/tmp |
Dále přejděte do adresáře EasyRSA na vašem počítači CA:
|
1 |
cd EasyRSA-3.0.4/ |
Znovu použijte skript easyrsa k importu souboru server.req a za cestu k souboru přidejte jeho běžný název:
|
1 |
./easyrsa import-req /tmp/server.req server |
Poté žádost podepište spuštěním skriptu easyrsa s volbou sign-req, následovanou typem žádosti a běžným názvem. Pro žádost o certifikát OpenVPN serveru se ujistěte, že používáte typ žádosti server:
|
1 |
./easyrsa sign-req server server |
Výstup vás vyzve k ověření, že požadavek pochází z důvěryhodného zdroje. Napište yes a stisknutím klávesy Enter potvrďte. Zkontrolujte prosím níže uvedené podrobnosti, abyste zajistili přesnost. Upozorňujeme, že tento požadavek dosud nebyl ověřen heslem.
Vyžádejte si předmět a podepište jej jako certifikát serveru na 3650 dní:

Pokud jste zašifrovali klíč CA, budete v tomto okamžiku požádáni o heslo. Dále použijte zabezpečenou metodu pro přenos podepsaného certifikátu zpět na váš VPN server:
|
1 |
scp pki/issued/server.crt siigma@your_server_ip:/tmp |
Před odhlášením z počítače CA přeneste soubor ca.rt na server:
|
1 |
scp pki/ca.crt siigma@our_server_ip:/tmp |
Dále se znovu přihlaste k serveru OpenVPN a zkopírujte soubory server.crt a ca.crt do adresáře /etc/openvpn/:
|
1 |
sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/ |
Poté přejděte do adresáře EasyRSA:
|
1 |
cd ~/EasyRSA-3.0.4/ |
Zadejte následující kód pro vytvoření silného klíče Diffie-Hellman, který můžete použít při výměně klíčů:
|
1 |
./easyrsa gen-dh |
Po dokončení vygenerujte podpis HMAC pro zlepšení funkce kontroly stavu TLS serveru:
|
1 |
openvpn --genkey --secret ta.key |
Po dokončení příkazu zkopírujte dva nové soubory do adresáře / 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 způsobem jsou vygenerovány všechny certifikáty a soubory klíčů vyžadované serverem. Nyní můžete vytvořit příslušný certifikát a klíč, který bude klientský počítač používat pro přístup k serveru OpenVPN.
Krok 4 – Generování klientského certifikátu a páru klíčů
Dále vytvoříme klientský klíč a několik certifikátů. Pokud máte více klientů, můžete tento proces opakovat pro každého klienta. Upozorňujeme však, že pro každého klienta musíte skriptu předat jedinečnou hodnotu názvu. V tomto návodu pojmenujeme první pár certifikátu/klíče client1. Nejprve vytvořte adresářovou strukturu ve svém domovském adresáři pro ukládání klientských certifikátů a souborů klíčů:
|
1 |
mkdir -p ~/client-configs/keys |
Protože z bezpečnostních důvodů ukládáte pár certifikátu/klíče a konfigurační soubor klienta do tohoto adresáře, měli byste nyní odebrat oprávnění:
|
1 |
chmod -R 700 ~/client-configs |
Poté se vraťte do adresáře EasyRSA a spusťte skript easyrsa s volbami gen-req a nopass a také s obecným názvem klienta:
|
1 2 |
cd ~/EasyRSA-3.0.4/ ./easyrsa gen-req client1 nopass |
Stisknutím klávesy Enter potvrďte obecný název. Poté zkopírujte soubor client1.key do dříve vytvořeného adresáře / client-configs / keys /:
|
1 |
cp pki/private/client1.key ~/client-configs/keys/ |
Dále použijte zabezpečenou metodu pro přenos souboru client1.req do vašeho počítače CA:
|
1 |
scp pki/reqs/client1.req sigma@your_CA_ip:/tmp |
Přihlaste se k počítači CA, přejděte do adresáře EasyRSA a importujte požadavek na certifikát:
|
1 2 3 |
ssh siigma@your_CA_ip cd EasyRSA-3.0.4/ ./easyrsa import-req /tmp/client1.req client1 |

Poté, stejně jako v předchozím kroku, podepište požadavek na serveru. Tentokrát však musíte specifikovat typ požadavku klienta:
|
1 |
./easyrsa sign-req client client1 |
Na výzvu napište yes pro potvrzení, že chcete podepsat požadavek na certifikát a že požadavek na certifikát pochází z důvěryhodného zdroje. Chcete-li pokračovat, zadejte slovo “yes”, jinak bude požadavek zahozen:
|
1 |
Confirm Request Details: Yes |

Pokud jste zašifrovali klíč CA, budete zde také požádáni o zadání hesla. Tím se vytvoří soubor klientského certifikátu s názvem client1.crt. Přeneste tento soubor zpět na server:
|
1 |
scp pki/issued/client1.crt siigma@your_server_ip:/tmp |
SSH back to your OpenVPN server and copy the client certificate to the / client-configs / keys / directory:
|
1 |
cp /tmp/client1.crt ~/client-configs/keys/ |
Next, copy the ca.crt and ta.key files into the / client-configs / keys / directory:
|
1 2 |
cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/ sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/ |
Tím byly vygenerovány všechny certifikáty a klíče serveru i klienta a uloženy do příslušných adresářů na serveru. Nyní můžete pokračovat v nastavení OpenVPN na serveru.
Krok 5 – Konfigurace služby OpenVPN
Po vygenerování certifikátů klienta a serveru můžete nakonfigurovat službu OpenVPN tak, aby tyto přihlašovací údaje používala. Nejprve zkopírujte ukázkový konfigurační soubor OpenVPN do svého konfiguračního adresáře a poté jej rozbalte, abyste jej mohli použít jako základ pro nastavení:
|
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 |
Otevřete konfigurační soubor serveru ve svém oblíbeném textovém editoru:
|
1 |
sudo nano /etc/openvpn/server.conf |
Poté vyhledejte část HMAC vyhledáním příkazu tls-auth:
|
1 |
tls-auth ta.key 0 # Tento soubor je tajný |
Najděte část s heslem vyhledáním zakomentovaného řádku pro heslo. Šifrování AES-256-CBC nabízí dobrou úroveň šifrování a je dobře podporováno. Řádek by neměl být zakomentovaný, ale pokud je, odstraňte před ním středník “;”:
|
1 |
cipher AES-256-CBC |
Pod to přidejte příkaz Auth pro výběr algoritmu HMAC message-digest. SHA256 je pro to dobrá volba:
|
1 |
auth SHA256 |
Dále najděte řádek s příkazem dh, který definuje parametry Diffie-Hellman. Vzhledem k některým nedávným změnám v EasyRSA se může název souboru klíče Diffie-Hellman lišit od názvu souboru uvedeného v ukázkovém konfiguračním souboru serveru. V případě potřeby změňte zde uvedený název souboru smazáním 2048, aby odpovídal klíči z předchozího kroku:
|
1 |
dh dh.pem |
Nakonec najděte nastavení uživatele (user) a skupiny (group) a odstraňte středník “;” na začátku každého řádku:
|
1 2 |
user nobody group nogroup |
Změny, které jste dosud provedli v ukázkovém souboru server.conf, by měly umožnit fungování OpenVPN.
Krok 6 – Síťová konfigurace serveru
Nakonfigurujte předávání IP (IP forwarding), aby se provoz správně směroval přes VPN. To je nezbytné pro funkčnost VPN, kterou váš server poskytuje:
|
1 |
sudo nano /etc/sysctl.conf |
Vyhledejte zakomentovaný řádek, který nastavuje net.ipv4.ip_forward. Odstraňte znak „#“ ze začátku řádku, abyste toto nastavení odkomentovali:
|
1 |
net.ipv4.ip_forward=1 |
Po dokončení soubor uložte a zavřete. Chcete-li soubor načíst a upravit hodnoty pro aktuální relaci, zadejte:
|
1 |
sudo sysctl -p |

Dále přidejte veřejné síťové rozhraní vašeho stroje:
|
1 |
ip route | grep default |
Vaše veřejné rozhraní je řetězec ve výstupu tohoto příkazu, který následuje za slovem „dev“. Tento výsledek například ukazuje rozhraní s názvem ens3.

Otevřete soubor /etc/ufw/before.rules a přidejte příslušnou konfiguraciju:
|
1 |
$ sudo nano /etc/ufw/before.rules |
K horní části souboru přidejte níže zvýrazněné řádky, abyste nastavili výchozí politiku pro řetězec POSTROUTING v tabulce nat a maskovali veškerý provoz přicházející z VPN. Nahraďte ens3 v řádku -A POSTROUTING níže rozhraním, které jste našli v předchozím příkazu:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# rules.before # Pravidla, která by měla být spuštěna před pravidly přidanými z příkazové řádky ufw. Vlastní # pravidla by měla být přidána do jednoho z těchto řetězců: # ufw-before-input # ufw-before-output # ufw-before-forward # ZAČÁTEK PRAVIDEL OPENVPN # Pravidla tabulky NAT *nat :POSTROUTING ACCEPT [0:0] # Povolit provoz z klienta OpenVPN do wlp11s0 (změňte na rozhraní, které jste zjistili!) -A POSTROUTING -s 10.8.0.0/8 -o ens3 -j MASQUERADE COMMIT # KONEC PRAVIDEL OPENVPN # Nemažte tyto vyžadované řádky, jinak dojde k chybám . . . |
Jakmile budete hotovi, soubor uložte a zavřete. Dále musíte nastavit UFW tak, aby ve výchozím nastavení povoloval i předávané pakety. Chcete-li to provést, otevřete soubor /etc/default/ufw:
|
1 |
sudo nano /etc/default/ufw |
Uvnitř najděte direktivu DEFAULT_FORWARD_POLICY a změňte hodnotu z DROP na ACCEPT:
|
1 |
DEFAULT_FORWARD_POLICY="ACCEPT" |
Jakmile budete hotovi, soubor uložte a zavřete. Dále upravte firewall tak, aby povolil provoz pro OpenVPN. Pokud jste nezměnili port a protokol v souboru /etc/openvpn/server.conf, budete muset otevřít UDP provoz na portu 1194. Pokud jste port a/nebo protokol upravili, nahraďte zde hodnoty těmi, které jste vybrali. V případě, že jste při plnění předchozího návodu zapomněli přidat port SSH, přidejte jej zde také:
|
1 2 |
sudo ufw allow 1194/udp sudo ufw allow OpenSSH |
Po přidání těchto pravidel zakažte a znovu povolte UFW, abyste jej restartovali a načetli změny ze všech upravených souborů:
|
1 2 |
sudo ufw disable sudo ufw enable |

Gratulujeme, váš server je nyní nakonfigurován pro správné zpracování provozu OpenVPN!
Závěr
Pokud jste tento návod sledovali až do konce, můžete nyní bezpečně procházet internet. Budete moci skrýt svou identitu, polohu a provoz před zvědavými pohledy.
Přejeme příjemnou práci s počítačem!
Komentáře
Zatím žádné komentáře. Buďte první.