Zpět na blog

Nastavení OpenVPN na Ubuntu 18.04

Nastavení OpenVPN na Ubuntu 18.04

Ú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:

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:

Poté rozbalte tarball:

 OpenVPN EasyRSA software

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:

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:

K otevření tohoto nového souboru použijte svůj oblíbený textový editor:

Dále vyhledejte nastavení, která určují výchozí hodnoty polí pro nové certifikáty. Bude to vypadat podobně jako toto:

Aktualizujte tyto proměnné na libovolné hodnoty, jak je znázorněno níže:

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:

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:

Ve výstupu budete požádáni o potvrzení běžného názvu pro vaši CA:

 OpenVPN build-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:

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ší:

Poté znovu zavolejte skript easyrsa, tentokrát s volbou gen-req, následovanou obecným názvem počítače:

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/:

Přeneste soubor server.req do počítače CA pomocí zabezpečené metody (například SCP v následujícím příkladu):

Dále přejděte do adresáře EasyRSA na vašem počítači CA:

Znovu použijte skript easyrsa k importu souboru server.req a za cestu k souboru přidejte jeho běžný název:

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:

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í:

 OpenVPN sign certificate for server

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:

Před odhlášením z počítače CA přeneste soubor ca.rt na server:

Dále se znovu přihlaste k serveru OpenVPN a zkopírujte soubory server.crt a ca.crt do adresáře /etc/openvpn/:

Poté přejděte do adresáře EasyRSA:

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íčů:

Po dokončení vygenerujte podpis HMAC pro zlepšení funkce kontroly stavu TLS serveru:

Po dokončení příkazu zkopírujte dva nové soubory do adresáře / 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íčů:

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í:

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:

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 /:

Dále použijte zabezpečenou metodu pro přenos souboru client1.req do vašeho počítače CA:

Přihlaste se k počítači CA, přejděte do adresáře EasyRSA a importujte požadavek na certifikát:

import client.req

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:

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:

sign certificate

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:

SSH back to your OpenVPN server and copy the client certificate to the / client-configs / keys / directory:

Next, copy the ca.crt and ta.key files into the / client-configs / keys / directory:

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í:

Otevřete konfigurační soubor serveru ve svém oblíbeném textovém editoru:

Poté vyhledejte část HMAC vyhledáním příkazu tls-auth:

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 “;”:

Pod to přidejte příkaz Auth pro výběr algoritmu HMAC message-digest. SHA256 je pro to dobrá volba:

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:

Nakonec najděte nastavení uživatele (user) a skupiny (group) a odstraňte středník “;” na začátku každého řádku:

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:

Vyhledejte zakomentovaný řádek, který nastavuje net.ipv4.ip_forward. Odstraňte znak „#“ ze začátku řádku, abyste toto nastavení odkomentovali:

Po dokončení soubor uložte a zavřete. Chcete-li soubor načíst a upravit hodnoty pro aktuální relaci, zadejte:

sysctl -p

Dále přidejte veřejné síťové rozhraní vašeho stroje:

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.

default ip route

Otevřete soubor /etc/ufw/before.rules a přidejte příslušnou konfiguraciju:

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:

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:

Uvnitř najděte direktivu DEFAULT_FORWARD_POLICY a změňte hodnotu z DROP na 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é:

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ů:

ufw commands

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!

 

 

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.