Konfigurace OpenVPN serveru na Linuxu ve 20 krocích
Proč potřebujete svou VPN?
Virtuální privátní síť (VPN) je technologie, která umožňuje vytvořit virtuální privátní síť mezi více zařízeními. Data přenášená v takové síti jsou šifrována. Pomocí VPN může uživatel:
- skrýt svou polohu, například při DDoS útoku;
- obejít blokování stránek podle geografické polohy;
- zabezpečit připojení při práci ve veřejných Wi-Fi sítích.
VPN je často součástí funkcí prohlížeče nebo routeru, může být nainstalována pomocí zásuvných modulů nebo je k dispozici formou předplatného u služeb třetích stran. Vlastní VPN je však stabilnější, rychlejší a nemá omezení provozu jako bezplatné varianty.
Pojďme se společně podívat na to, jak si v Linuxu nastavit vlastní VPN.
Nastavení serveru a klienta
Server pro VPN musí být umístěn na vzdáleném počítači nebo v cloudu. Jako server použijeme distribuci Ubuntu 21.10 a OpenVPN – open source implementaci VPN. Pro klientský počítač můžete zvolit libovolný operační systém.
1. Nainstalujte na server OpenVPN
sudo apt install openvpn
2. Nainstalujte aplikaci Easy-Rsa. Tento program pomáhá spravovat certifikáty (.crt soubory) a generovat klíče pro OpenVPN (.key soubory). Certifikáty slouží ke kryptografické ochraně a při připojení k serveru potvrzují, že klient je tím, za koho se vydává.
sudo apt install easy-rsa
3. Vytvořte složku a zkopírujte do ní nastavení a certifikáty.
sudo mkdir /etc/openvpn/easy-rsa
sudo cp -r /usr/share/easy-rsa /etc/openvpn/
4. Vytvořte certifikační centrum a jeho infrastrukturu.
cd /etc/openvpn/easy-rsa/
sudo ./easyrsa init-pki
5. Vytvořte kořenový certifikát – zadejte heslo a jméno.
sudo ./easyrsa build-ca
6. Vytvořte klíče pro Diffieho–Hellmanův protokol. Provedení tohoto příkazu může trvat poměrně dlouho.
sudo ./easyrsa gen-dh
7. Vytvořte také certifikát pro zneplatnění podepsaných certifikátů. Pokud je některý certifikát kompromitován, lze jej zrušit zablokováním přístupu konkrétnímu klientovi. Zadejte heslo.
sudo ./easyrsa gen-crl
8. Vytvořte certifikáty pro server a zkopírujte je do složky openvpn.
sudo ./easyrsa build-server-full server nopass
sudo cp ./pki/ca.crt /etc/openvpn/ca.crt
sudo cp ./pki/dh.pem /etc/openvpn/dh.pem
sudo cp ./pki/crl.pem /etc/openvpn/crl.pem
sudo cp ./pki/issued/server.crt /etc/openvpn/server.crt
sudo cp ./pki/private/server.key /etc/openvpn/server.key
9. Ve složce examples se nacházejí šablony pro konfiguraci serveru. Zkopírujte šablonu a otevřete ji pro úpravy.
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn
sudo nano server.conf
10. Následující řádky zakomentujte a nastavte VPN jako výchozí bránu. Chcete-li řádek zakomentovat, odstraňte znak ";" na začátku řádku.
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
11. Změňte název souboru dh2048.pem na dh.pem a zakomentujte řádek tls-auth ta.key 0. Tento řádek je zodpovědný za kontrolu klíče pro HMAC. V našem příkladu se nepoužívá.
12. Povolte přesměrování IP adresy. Díky tomu budete schopni předávat tranzitní pakety.
sysctl -w net.ipv4.ip_forward=1
13. Přidejte pravidla iptables pro přenos paketů.
sudo iptables -I FORWARD -i tun0 -o ens3 -j ACCEPT
sudo iptables -I FORWARD -i ens3 -o tun0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Na levé straně zadáme akci a na pravé straně pravidlo, které se na ni použije. ACCEPT dává paketům povolení k průchodu a MASQUERADE nahrazuje adresu tranzitních paketů.
14. Klíče pro klienty jsou generovány na serveru a poté přeneseny do klienta.
sudo chmod -r 700 pki/revoked
sudo cp -r pki/revoked/ renewed
sudo cp -a openssl-easyrsa.cnf /etc/openvpn/pki
sudo ./easyrsa build-client-full client nopass
15. Vytvořte složku clients pro všechny klíče a složku client pro konkrétního klienta.
sudo mkdir /etc/openvpn/clients
sudo mkdir /etc/openvpn/clients/client
16. Zkopírujte klíče a konfiguraci klienta do složky client.
cd /etc/openvpn/clients/client
sudo cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/clients/client/
sudo cp /etc/openvpn/easy-rsa/pki/issued/client.crt /etc/openvpn/clients/client/
sudo cp /etc/openvpn/easy-rsa/pki/private/client.key /etc/openvpn/clients/client/
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ./client.conf
17. Otevřete konfiguraci pro úpravy.
sudo nano ./client.conf
18. Změňte adresu my-server-1 na IP adresu serveru a skryjte ji pomocí komentáře tls-auth ta.key 1, poté přidejte řádek auth-nocache. Ten je zodpovědný za to, že přihlašovací jméno a heslo klienta nejsou uloženy ve virtuální paměti.
19. Spusťte server.
sudo openvpn /etc/openvpn/server.conf
Nyní je třeba předat klientovi připravené klíče a konfigurační soubor. Klient je musí vložit do konfiguračního adresáře OpenVPN ve svém operačním systému a jednoduše se připojit. Hotovo.
Je důležité si uvědomit, že VPN nedokáže zcela skrýt uživatelská data a poskytuje pouze částečnou anonymitu. Pokud se VPN používá na podnikové úrovni, může vlastník serveru sledovat činnost zaměstnanců a blokovat jednotlivé zdroje.
Autor: Dmytro Bidenko