Vlastní VPN pro studenty

24. 5. 2022 Azure, Programming

Lidé si stahují VPN aplikace za účelem ochrany před špehováním v online světě. Některým se ale nelíbí předat ochranu svých údajů poskytovateli, nad kterým nemají žádnou kontrolu. Proto si vytváří vlastní VPN službu, zde je návod, jak si takovou službu vytvořit pomocí cloudové služby Microsoft Azure.

Úvod o VPN

Lidé mají stále větší strach o své soukromí v online světě. Nepříjemné špehování zlomyslných stránek a nebezpečí otevřených WiFi sítí vede lidi, aby si stahovali VPN aplikace ze snahy se nějak ochránit. Někteří chtějí mít ale tuto službu pod svou kontrolou, a proto si vytvářejí vlastní virtuální privátní sítě na vlastní infrastruktuře. Většina studentů, ale nemá prostředky mít svůj vlastní server. Jde to ale i jinak pomocí technologií Cloudu. Zde je návod, jak si takovou službu může student sám vytvořit pomocí bezplatné služby Azure Virtual Machines.

Předpokladem pro tento článek je, že maté již vytvořený účet se studentskou subskripcí, pokud ne, tak zde je jiný článek z našeho blogu s návodem, jak na to.

Auto deployment

Nově není třeba procházet celým návodem, ale stačí automaticky nasadit pomocí ARM templatu. Je to snadnější a rychlejší. Odkaz na template naleznete na GitHubu.

Pro přidání uživatelů VPN je třeba se přes Azure Cloud Shell připojit do virtuálního přístroje příkazem:

ssh azurevpn@$pubip

Poté spusťte příkaz:

./wireguard-install.sh

Do částí client’s name zadejte vlastní jméno pro zařízení, ostatní neměňte.

Až se na obrazovce objeví QR kód (v případě potřeby lze okno terminálu rozšířit) můžete přejít na část Připojení k mobilu nebo Připojení k počítači, u připojení k počítači použijte pro jméno uživatele azure VPN a veřejná IP adresa serveru $pubip.

Tvorba virtuálního počítače

Začneme tvorbou samotného virtuálního počítače, na kterém služba poběží.

Do vyhledávacího pole, zadáme bezplatné služby a vybereme první možnost.

Portál Azure, do vyhledávacího pole píšeme bezplatné služby.
Vyhledávací pole | zdroj: Portál Azure

V následujícím okně vybereme Linuxový virtuální počítač.

Portál Azure, vybíráme bezplatnou službu linuxový virtuální počítač
Výběr VM | zdroj: Portál Azure

Bude třeba vytvořit novou skupinu prostředků, zadejte jméno nové skupiny a klikněte na OK.

Konfigurace nového virtuálního počítače na portálu azure - vytvoření nové skupiny prostředků
Konfigurace VM | zdroj: Portál Azure

Dále zadejte název virtuálního počítače.

Portál Azure. Konfigurace virtuálního počítače - zadání názvu virtuálního počítače.
Konfigurace VM | zdroj: Portál Azure

Jako obraz vyberte Ubuntu Server 16.04-LTS – Gen 1

Konfigurace virtuálního počítače - výběr linuxové distribuce
Konfigurace VM | zdroj: Portál Azure

Zadejte uživatelské jméno a heslo, které použijete pro přihlášení do virtuálního počítače.

Portál Azure. Konfigurace virtuálního počítače - nastavení administrátorského účtu
Konfigurace VM | zdroj: Portál Azure

Ostatní možnosti nechte, jaké jsou, jen zkontrolujte, zda v poli Vyberte příchozí porty je vybrán port SSH.

Klikněte na tlačítko Zkontrolovat a Vytvořit, pak na vytvořit.

Portál Azure. Stránka s přehledem konfigurace VM
Kontrola před vytvořením VM | zdroj: Portál Azure

Po kliknutí na tlačítko Vytvořit budete přeneseni na stránku kde bude probíhat nasazení.

Stránka informuje o nasazení VM
Nasazení VM | zdroj: Portál Azure

Nastavení IP adresy a připojení

Nastavení IP adresy

Po úspěšném nasazení se vám objeví tlačítko Přejít k prostředku. Klikněte na něj.

Stránka s nasazenou VM
Oznámení o nasazení | zdroj: Portál Azure

Přejdete na přehled vašeho virtuálního počítače. Vpravo klikněte na odkaz pod nadpisem Veřejná IP adresa.

Přehled VM
Přehled VM | zdroj: Portál Azure

Budete přeneseni na stránku nastavení Veřejné IP adresy vašeho virtuálního počítače. Veřejná IP adresa je adresa, která je přístupná z veřejného internetu. Pomocí ní se pak můžeme připojit k virtuálnímu počítači.

Portál Azure. Stránka konfigurace veřejné IP adresy
Konfigurace veřejné IP adresy | zdroj: Portál Azure

Ve volbě Přiřazení IP adresy, změníme možnost z Dynamická na Statická, to znamená, že i když nebude IP adresa nějakou dobu používaná, po novém přiřazení se nezmění.

Prostředí Portál Azure. Zvýraznění změny nastavení
Změna přiřazení IP adresy | zdroj: Portál Azure

Klikneme na Uložit a IP adresu zkopírujeme.

Připojení

Na počítači otevřeme Terminál. Pro starší verze Windows, otevřeme Příkazový řádek, postup bude ale pořád stejný.

Vyhledání Windows Terminal
Otevření terminálu pomocí Windows Search | zdroj: Windows 11

Zadáme příkaz:

 ssh <jméno uživatele>@<zkopírovaná veřejná IP adresa>
Terminálové okno s příkazem. Tvorba VPN
Terminálové okno se zadaným příkazem | zdroj: Windows Terminal

Při prvním připojením příkaz vypíše, že nelze ověřit autenticitu hosta, stačí zadat yes, při dalším připojení už dotazováni nebudeme.

Terminálové okno s potvrzením k připojení
Potvrzení připojení | zdroj: Windows Terminal

Následuje dotaz na heslo. Pozor, při psaní hesla se nezobrazují napsané znaky.

Instalace pomocí skriptu

Výborně, jsme už připojeni k počítači, teď je na čase nainstalovat samotnou službu.

Je to velmi jednoduché, protože většinu nastavení za nás udělá skript.

Zadejte tyto příkazy za sebou:

// Stáhne skript do počítače
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh

// Nastaví skript jako spustitelný soubor
chmod +x wireguard-install.sh

// Spustí skript
sudo ./wireguard-install.sh

Skript se nás na začátku zeptá na pár věcí. Jediná věc, kterou musíme změnit je ta první. A to veřejná IP adresa, tu přepíšeme na veřejnou adresu virtuálního počítače (ta pomocí které jsme se připojili do virtuálního počítače)

Nastavení pomocí skriptu, zadání veřejné IP adresy
Zadání veřejné IP adresy | zdroj: Windows Terminal
Nastavení pomocí skriptu, změněná veřejná IP adresa
Změněná veřejná IP adresa | zdroj: Windows Terminal

Ostatní možnosti není třeba měnit, stačí odentrovat. Jenom si někam zapište Port.

Dokončení zadávání informací, zvýrazněný ve výpisu  řádek s portem.
Zvýrazněný port | zdroj: Windows Terminal

Skript spustíme stiskem jakékoliv klávesy, ten začne stahovat vše potřebné a provede instalaci.

Čekání na spuštění skriptu uživatelem
Čekání na vstup | zdroj: Windows Terminal

Instalace bude dokončená, když se nás skript začne ptát na nastavení prvního uživatele.

Dokončení instalace. Nastavení prvního uživatele.
Dokončení instalace | zdroj: Windows Terminal

Zadáme tedy jméno prvního uživatele. Zbytek můžeme nechat být.

Vyplněné informace
Vyplněné informace | zdroj: Windows Terminal

Na obrazovce se nám vygeneruje QR kód. Ten můžeme naskenovat pomocí mobilní aplikace. Protože nastavení ještě není hotové a VPN by nefungovala, necháme si to na později. Terminál s QR kódem nezavíráme, jinak bychom o QR kód přišli a museli bychom vytvořit uživatele znova.

Vygenerovaný QR kód
Vygenerovaný QR kód | zdroj: Windows Terminal

Nastavení Firewallu

Vrátíme se do okna prohlížeče, a z nastavení IP adresy se vrátíme na nastavení virtuálního počítače.

V sekci sítě, klikneme na tlačítko: Přidat pravidlo portu pro příchozí spojení.

Portál Azure, nastavení VPN VM, sekce Sítě
Sekce sítě | zdroj: Azure Portál

Do možnosti Rozsahy cílových portů, napíšeme Port, který jsme si zapsali z instalace služby.

Protokol nastavíme na UDP, a změníme název.

Portál Azure, okno přidání nového pravidla
Okno nastavení nového pravidla | zdroj: Azure Portál

Klikneme Přidat a v Azure portálu máme hotovo.

Portál Azure, okno s přidaným pravidlem.
Přidané pravidlo | zdroj: Azure Portál

Vrátíme se do terminálu a zadáme příkaz: sudo reboot

Tím se počítač restartuje. Můžeme se do něj znova připojit, není to ale třeba, jen kdybychom chtěli přidat dalšího uživatele by bylo třeba se znovu připojit.

Připojení VPN k mobilu

Připojení k mobilu je velmi jednoduché, stačí nainstalovat mobilní aplikaci:

Google Play Store, aplikace pro Android.
Aplikace pro Android | zdroj: Google Play Store

V aplikaci klepnout na tlačítko přidat:

Úvodní obrazovka aplikace WireGuard
Úvodní obrazovka | zdroj: WireGuard

Poté pojmenovat připojení:

WireGuard, přidání nového připojení, zadávání jména
Vytvoření připojení | zdroj: WireGuard

Zvolit možnost naskenovat QR kód. Z QR kódu aplikace přečte konfiguraci.

WireGuard, výběr způsobu přidání
Výběr způsobu přidání | zdroj: WireGuard
Skenování QR kódu pomocí aplikace WireGuard
Skenování QR kódu | zdroj: WireGuard

To je vše. Pomocí přepínače lze VPN zapínat a vypínat.

WireGuard, okno po přidání připojení.
Aplikace po přidání připojení | zdroj: WireGuard

Připojení PC k VPN

Připojení počítače k VPN je trochu složitější. Ale taky to není nic hrozného. Přes terminál se připojíme k virtuálnímu počítači a znovu spustíme skript (příkaz: sudo ./wireguard-install.sh). Zadáme zase nové jméno, ostatní můžeme nechat. Vygeneruje se nám QR kód, který tentokrát nevyužijeme, ale potřebujeme řádek pod QR kódem, kde je napsaná cesta ke konfiguračnímu souboru.

Terminál, cesta k souboru pod vygenerovaným QR kódem.
Cesta k souboru pod QR kódem | zdroj: Windows Terminal

Teď pomocí příkazu:

scp <jméno uživatele>@<veřejná ip adresa serveru>:<cesta ke konfiguračnímu souboru> „<kam chceme soubor stáhnout do našeho počítače>“
Terminál s příkazem pro stáhnutí konfiguračního souboru do počítače
Příkaz pro stáhnutí do počítače | zdroj: Windows Terminal

Zkontrolujeme, že soubor máme. Těžká část je za námi, teď už to bude jednoduchý.

Stažený konfigurační soubor na ploše
Konfigurační soubor na ploše| zdroj: Windows 11

Stáhneme si z webu Wireguard, aplikaci pro náš operační systém. https://www.wireguard.com/install/

Stránka se stažením pro Windows
Stažení aplikace pro Windows | zdroj: https://www.wireguard.com/install/

Nainstalujeme a spustíme. V aplikaci klikneme na Importovat tunel(y) ze souboru.

Okno aplikace WireGuard pro Windows.
Okno aplikace WireGuard | zdroj: WireGuard

V okně vybereme konfigurační soubor, který jsme stáhli.

Výběr konfiguračního souboru
Výběr konfiguračního souboru | zdroj: Windows 11

Klikneme na Otevřít a máme hotovo, stačí kliknout na Aktivovat a jsme připojeni.

WireGuard, aktivace připojení
Aktivace připojení | zdroj: WireGuard

Jak to funguje

Wireguard je komunikační protokol. Stejně tak, jak používáme HTTP pro komunikaci s webovými stránkami, nebo FTP pro přenos souborů, tak Wireguard se používá pro vytvoření šifrovaného tunelu mezi poskytujícím serverem a klientským zařízením. Stručně to znamená, že se pomocí tohoto protokolu můžeme připojit z jakéhokoliv zařízení, které má přístup k internetu, do vlastní sítě.

VPN server, v našem případě běžící na Azure, funguje jako brána do této vnitřní sítě a zajišťuje zabezpečení, a hlavně šifrování komunikace. V praxi se to běžně používá ve firmách, např. když se chce zaměstnanec mimo kancelář připojit do vnitřní firemní sítě, připojí se pomocí VPN a získá tak přístup třeba k firemnímu uložišti, ke kterému má běžně přístup jen z kancelářského PC.

My používáme tuto funkci trochu jinak, stále využíváme prvků zabezpečení a šifrování, ale místo připojení k prostředkům na vnitřní síti, všechna data, která by putovala z našeho zařízení na internet, nejdříve projdou šifrovaným tunelem na náš server, odkud jsou dál poslána na internet. Takže kdyby například někdo zachytával nešifrovaná data na veřejné wi-fi, tak by od nás nic nedostal, protože by byla zašifrovaná. Dešifrují se až když dorazí na server, kde už ale hacker nemůže nic zachytit.

Shrnutí tvorby vlastní VPN

A máme hotovo. Nyní máme vlastní VPN službu, ke které můžeme připojit kolik zařízení chceme a naše údaje o používání jsou v našich rukou. Na veřejných sítích se můžeme cítit bezpečněji a nemusíme se bát, že naše údaje někdo zneužívá.