COMPUTING > Virtual Private Cloud > VMware vCloud Director > Ako spustiť a nakonfigurovať VPN pomocou OpenVPN na Ubuntu 20.04

3.4.1.2 Ako spustiť a nakonfigurovať VPN pomocou OpenVPN na Ubuntu 20.04

VPN (Virtual Private Network) je virtuální privátní síť, která umožňuje zabezpečené síťové spojení mezi dvěma nezávislými datovými sítěmi na internetu. Pomocí VPN tedy může server nebo počítač (klient) připojený k internetu na jednom místě přistupovat k síťovým prostředkům jiného serveru, čímž se mezi nimi vytvoří přímé virtuální síťové spojení v podstatě stejné jako fyzické spojení mezi dvěma síťovými body

OpenVPN je open-source řešení, který umožňuje vytvořit síť VPN založenou na protokolu TLS/SSL (Transport Layer Security/Secure Sockets Layer) pomocí certifikátů k bezpečnému šifrování provozu mezi serverem a jedním nebo více klienty.
 
Tento návod vysvětluje, jak nakonfigurovat/zřídit VPN pomocí OpenVPN na serveru a klientovi Linuxu s použitím Ubuntu 20.04 . Některé části těchto pokynů (týkající se Serveru nebo Klienta) lze použít i pro hybridní konfiguraci/implementaci (např. Server se systémem Windows a Klient se systémem Linux nebo naopak).

Abyste mohli postupovat podle pokynů v článku, budete potřebovat:
  • Server – hlavní server (Ubuntu) pro připojení VPN;
  • CA server - server (Ubuntu), který bude sloužit jako CA server neboli certifikační autorita a bude zodpovědný za ověřování platnosti certifikátů (může to být také hlavní server používaný pro připojení VPN);
  • Klient – sekundární zařízení (Ubuntu) pro připojení VPN.
Budete se muset připojit ke svému serveru, ke svému CA serveru a ke klientovi prostřednictvím připojení SSH.
 
Nejprve se přihlaste k serveru a nainstalujte OpenVPN (tyto pokyny platí i na straně klienta).
 
Instalační program lze použít v operačním systému Linux por server i klienta.

N.B. OpenVPN již existuje v oficiálním repozitáři Ubuntu, takže žádné další nejsou potřeba.

Zadejte:
 

$ sudo apt update
$ sudo apt install openvpn

V tomto okamžiku jste úspěšně nainstalovali OpenVPN na server.
 
Stejný postup instalace OpenVPN je třeba zopakovat na straně klienta.
Pokračujte stažením EasyRSA na server a server s certifikační autoritou a zadáním následujících příkazů na obou serverech:
 

$ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz

Nejnovější verzi můžete stáhnout z adresy https://github.com/OpenVPN/easy-rsa/releases
 

$ cd ~
$ sudo tar xvf EasyRSA-3.0.4.tgz



N.B. Název se může lišit podle stažené verze.
Server nakonfigurujte zadáním následujícího příkazu:
 

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
$ sudo gzip -d /etc/openvpn/server.conf.gz
$ sudo nano /etc/openvpn/server.conf

Najděte část o HMAC ("tls-auth"). Pokud zjistíte, že řádek byl zakomentován, odstraňte znak ";".
Najděte oddíl o šifrování ("cipher"). Pokud zjistíte, že řádek byl zakomentován, odstraňte ";" a přímo pod něj přidejte nový řádek s textem "auth SHA256".
Najděte sekci "dh" definující parametry Diffie-Hellman a odstraňte z názvu "2048" (měli byste mít "dh dh.pem").

Najděte sekce "user" a "group" a odstraňte znak ";" čímž zrušíte komentář k řádkům.
Jakmile nainstalujete EasyRSA na váš CA server, vytvoří se konfigurační soubor, který lze použít k definování proměnných pro vaši CA. Zadejte:
 

$ cd ~/EasyRSA-3.0.4/
$ sudo cp vars.example vars
$ sudo nano vars

Odkomentujte níže zobrazené příkazy:

Modifica le variabili

Spusťte skript "easyrsa" pro spuštění infrastruktury veřejných klíčů (PKI):
 

$ sudo ./easyrsa init-pki
$ sudo ./easyrsa build-ca nopass

Tento příkaz vytvoří dva soubory:
  • ca.crt: veřejný certifikát pro CA server, který používají server a klient, aby si navzájem sdělili, že jsou součástí stejné zabezpečené sítě.
  • ca.key: soukromý klíč používaný CA serverem k podepisování klíčů a certifikátů pro server a klienta. Tento soubor musí být uložen pouze na počítači certifikační autority (nesmí být přístupný třetím stranám), aby nedošlo k ohrožení bezpečnosti sítě.
Budete vyzváni k zadání jména. Nechte jej prázdný a stiskněte tlačítko Send.
Nyní, když jste nakonfigurovali CA server, musíte na serveru vygenerovat soukromý klíč a žádost o certifikát a odeslat je na CA server k podepsání:
 

$ cd ~/EasyRSA-3.0.4
$ sudo ./easyrsa init-pki
$ sudo ./easyrsa gen-req server nopass

Pro usnadnění ponechte název stroje jako "server" jinak budete muset později provést několik změn.

Právě jste vytvořili soukromý klíč pro server a žádost o certifikát s názvem "server.req":
 

$ sudo cp ~/EasyRSA-v3.0.6/pki/private/server.key /etc/openvpn/

Zkopírujte soubor server.req na CA server:
 

$ sudo scp ~/EasyRSA-3.0.4/pki/reqs/server.req user@your_CA_ip:/tmp

Ve složce EasyRSA na CA serveru naimportujte právě zkopírovaný soubor a podepište jej:
 

$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa import-req /tmp/server.req server
$ sudo ./easyrsa sign-req server server

Zadejte "yes" a klikněte Send.

Přesuňte podepsaný certifikát a soubor ca.crt na VPN server:
 

$ sudo scp pki/issued/server.crt user@your_server_ip:/tmp
$ sudo scp pki/ca.crt user@your_server_ip:/tmp

Poté zkopírujte přijaté soubory do správných adresářů na serveru:
 

$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
$ cd ~/EasyRSA-3.0.4/

a vygenerujte výměnu klíčů:
 

$ sudo ./easyrsa gen-dh
$ sudo openvpn --genkey --secret ta.key

Zkopírujte vygenerované soubory do složky "/etc/openvpn/":
 

$ sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/
$ sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/

Nyní je třeba získat přístup k serveru Ubuntu, který bude v připojení VPN fungovat jako klient.

Po instalaci OpenVPN na tomto serveru vytvořte složku, do které budete archivovat certifikáty a klíče klienta. Tento návod obsahuje pouze jednoho klienta, nazvaného "client1", ale operaci je třeba opakovat pro každého dalšího klienta a odpovídajícím způsobem změnit jeho název.
 

$ sudo mkdir -p ~/client-configs/keys
$ sudo chmod -R 700 ~/client-configs
$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa gen-req client1 nopass

Stiskněte Send přijmete navržený standardní název.
Zkopírujte klientský klíč do dříve vytvořené složky:
 

$ sudo cp pki/private/client1.key ~/client-configs/keys/


Odešlete soubor client1.req na CA server:
 

$ sudo scp pki/reqs/client1.req user@your_CA_IP:/tmp

Importujte žádost o certifikát do CA serveru:
 

$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa import-req /tmp/client1.req client1
$ sudo ./easyrsa sign-req client client1

Zadejte "yes" pro autorizaci podpisu.
Přesuňte certifikát na váš server:
 

$ sudo scp pki/issued/client1.crt utente@IP_SERVER:/tmp

Zkopírujte následující soubory do správných složek na serveru:
 

$ sudo mkdir -p ~/client-configs/keys
$ sudo chmod -R 700 ~/client-configs
$ sudo cp /tmp/client1.crt ~/client-configs/keys/
$ sudo cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/
$ sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/

V tomto okamžiku byly vygenerovány certifikáty a klíče pro server i klienta.
Nyní je třeba změnit pravidla pro přesměrování Ips na straně serveru.
 

$ sudo nano /etc/sysctl.conf

Najděte část "net.ipv4.ip_forward" a odstraňte znak "#" čímž příkaz odkomentujete.

Některá pravidla brány firewall musí být změněna, aby bylo možné správně směrovat klientská připojení.
 

$ ip route | grep default

Zapamatujte si název za "dev" (na obrázku je název "eth0").

Configura la rete di OpenVPN

$ sudo nano /etc/ufw/before.rules

Přidejte příkazy podle obrázku níže, přičemž "eth0" nahraďte názvem svého síťového rozhraní.

Configura la rete di OpenVPN

Uložte a ukončete.
 

$ sudo nano /etc/default/ufw

Upravte parametr "DEFAULT_FORWARD_POLICY" na "ACCEPT".

Povolte port 1194 pro UDP a port 22 pro SSH:
 

$ sudo ufw allow 1194/udp $ sudo ufw allow OpenSSH

Restartujte firewall:
 

$ sudo ufw disable
$ sudo ufw enable

Spusťte službu OpenVPN:
 

$ sudo systemctl start openvpn

Zkontrolujte stav služby. Pokud vše proběhlo úspěšně, bude obrazovka vypadat jako na obrázku.
 

$ sudo systemctl status openvpn

Stato del servizio di OpenVPN

Spusťte službu, když je server zapnutý:
 

$ sudo systemctl enable openvpn

Vytvořte základní konfiguraci pro klienty:
 

$ sudo mkdir -p ~/client-configs/files
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
$ sudo nano ~/client-configs/base.conf

Najděte sekci "remote" a zkontrolujte, zda zní "remote IP_Server 1194"
 
  • IP_Server: Zadejte IP adresu serveru
  • 1194: dříve zvolený port.
Najděte sekci "proto" a zkontrolujte, zda je Server nastaven na UDP (řádek TCP najdete zakomentovaný znakem ";").

Přejděte do sekcí "user" a "group" a odstraňte ";" abyste je "odkomentovali".

Přejděte do sekcí "ca.crt" - "client.crt" - "client.key" - "ta.key" a zakomentujte je znakem "#" na začátku každého řádku.

Přejděte do sekce "cipher" a pod příkaz "cipher AES-256-CBC" přidejte příkaz "auth SHA256".

Přidejte příkaz "key-direction 1", kamkoli chcete.

Někam přidejte tyto zakomentované řádky. Pokud je klientem počítač se systémem Linux, je třeba je odkomentovat.
 

# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

Uložte a ukončete.
Na serveru vytvořte skript, který automaticky vyplní konfiguraci klienta:
 

$ sudo nano ~/client-configs/make_config.sh

Zkopírujte a vložte následující text:
 

#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn

Uložte soubor jako spustitelný:
 

$ sudo chmod 700 ~/client-configs/make_config.sh

Nakonec zkuste vygenerovat konfiguraci pro klienta "client1":
 

$ cd ~/client-configs
$ sudo ./make_config.sh client1

Vytvoří se soubor client1.ovpn.

Poté je třeba tento soubor přenést do zařízení, které hodláte používat jako klienta, tedy do zařízení, které bude pro připojení používat software VPN.
Chcete-li odvolat certifikáty Klienta, proveďte na CA serveru následující příkazy:
 

$ cd EasyRSA-3.0.4/
$ sudo ./easyrsa revoke client1

client1 je jméno klienta, jehož oprávnění má být zrušeno.

Pro potvrzení zadejte "yes".

Vygenerujte soubor crl.pem a odešlete jej na server:
 

$ sudo ./easyrsa gen-crl
$ sudo scp ~/EasyRSA-3.0.4/pki/crl.pem user@IP_Server:/tmp

Aktualizujte konfiguraci na svém serveru a ověřte příkaz k odvolání:
 

$ sudo cp /tmp/crl.pem /etc/openvpn
$ sudo nano /etc/openvpn/server.conf

Na konec souboru přidejte "crl-verify crl.pem".

Uložte a zavřete.
 

$ sudo systemctl restart openvpn@server

Restartujte server a proveďte změny.