VPN je virtuální privátní síť, která vám umožňuje přístup k internetu nebo určitým službám i z nedůvěryhodné sítě. V zásadě je to, jako byste byli fyzicky připojeni k privátní síti:můžete například přistupovat ke svému bankovnímu účtu nebo provádět platby, aniž byste se museli obávat, že někdo zachycuje provoz generovaný vaším zařízením.
OpenVPN je VPN založená na protokolech TLS (Transport Layer Security) a SSL (Secure Sockets Layer). OpenVPN používá některé certifikáty k šifrování provozu mezi serverem a klientem.
V tomto tutoriálu uvidíte, jak nakonfigurovat OpenVPN na serveru s Ubuntu 18.04.
K implementaci tohoto kurzu je potřeba server a další počítač fungující jako CA (Certifikační autorita), který bude hodnotit platnost certifikátů.
Budete se muset připojit k serveru a vaší certifikační autoritě prostřednictvím připojení SSH. Pokud jste tak ještě neučinili, doporučujeme postupovat podle našeho průvodce pro bezpečné připojení pomocí protokolu SSH.
Instalace OpenVPN
Přístup k serveru.
OpenVPN je již k dispozici v oficiálním úložišti Ubuntu Ubuntu, proto není třeba přidávat nic dalšího.
Typ:
sudo apt update
sudo apt install openvpn
V tomto okamžiku bude OpenVPN úspěšně nainstalována na váš server.
Instalace EasyRSA
Pokračujte stažením EasyRSA na váš server a do vaší CA zadáním na obou počítačích:
wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz
Nejnovější verzi lze stáhnout z https://github.com/OpenVPN/easy-rsa/releases
$ cd ~
$ sudo tar xvf EasyRSA-3.0.4.tgz
Název se může lišit v závislosti na stažené verzi
Konfigurace serveru
Konfiguraci serveru dokončete zadáním:
$ 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 sekci, která odkazuje na HMAC ("tls-auth"). Pokud je řádek zakomentován, odstraňte znak „;“.
Vyhledejte sekci o šifrování ("šifra"). V případě komentáře odstraňte znak „;“. Přidejte nový řádek obsahující text „auth SHA256“ přímo pod .
Najděte sekci "dh" definující parametry Diffie-Hellman a odstraňte z názvu "2048" ( "dh dh.pem" by mělo být získané).
Najděte sekci „uživatel“ a „skupina“ a odstraňte „;“ odkomentování řádků.
Konfigurace EasyRSA na CA
Po instalaci EasyRSA byl na vašem CA vytvořen konfigurační soubor k definování proměnných pro vaši CA. Typ:
$ cd ~/EasyRSA-3.0.4/
$ cp vars.example vars
$ nano vars
Odstraňte znak „#“ podle pokynů na obrázku níže:
Spusťte skript "easyrsa" pro inicializaci infrastruktury veřejného klíče (PKI):
$ sudo ./easyrsa init-pki
$ sudo ./easyrsa build-ca nopass
pomocí tohoto příkazu se vytvoří dva soubory:
ca.crt:veřejný certifikát CA používaný servery a klienty k vzájemnému upozornění, že jsou součástí stejné důvěryhodné sítě.
ca.key:soukromý klíč, který počítač CA používá k podepisování klíčů a certifikátů pro servery a klienty. Tento soubor musí být uchováván pouze na počítači CA (který není přístupný třetím stranám), jinak může být ohroženo zabezpečení sítě.
Budete muset zadat jméno. Nechte jej prázdné a stiskněte Enter.
Žádost o certifikát serveru od CA
Nyní, když je počítač CA nakonfigurován, nechte server vygenerovat soukromý klíč a žádost o certifikát a odešle je do počítače CA k podpisu:
$ cd ~/EasyRSA-3.0.4
$ ./easyrsa init-pki
$ ./easyrsa gen-req server nopass
Pro zjednodušení ponechte jako název počítače "server", abyste se později vyhnuli provádění několika 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 do počítače CA:
$ sudo scp ~/EasyRSA-3.0.4/pki/reqs/server.req [email protected]_CA_ip:/tmp
Generování a podepisování certifikátu
Ve své certifikační autoritě ve složce EasyRSA importujte soubor, který jste právě zkopírovali, a podepište jej:
$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa import-req /tmp/server.req server
$ sudo ./easyrsa sign-req server server
Napište „ano“ a stiskněte Enter.
Přeneste podepsaný certifikát a ca.crt na server VPN:
$ sudo scp pki/issued/server.crt [email protected]_server_ip:/tmp
$ sudo scp pki/ca.crt [email protected]_server_ip:/tmp
Potom na vašem serveru
zkopírujte přijaté soubory do příslušných adresářů:
$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
$ cd ~/EasyRSA-3.0.4/
Vygenerujte silný výměnný klíč založený na Diffie-Hellman.
$ 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/
Konfigurace klienta
Vytvořte složku pro ukládání certifikátů a klíčů klienta (protože tato příručka představuje pouze jednoho klienta, nazývá se zde 'klient1', ale operaci je třeba opakovat pro každého klienta s použitím jiného denominace)
$ sudo mkdir -p ~/client-configs/keys
$ sudo chmod -R 700 ~/client-configs
$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa gen-req client1 nopass
Stisknutím klávesy Enter přijměte navrhovaný standardní název.
$ sudo cp pki/private/client1.key ~/client-configs/keys/
Zkopírujte klíč klienta do dříve vytvořené složky.
$ sudo scp pki/reqs/client1.req [email protected]_CA_IP:/tmp
Odešlete soubor client1.req do počítače CA.
Importujte žádost o certifikát do vaší CA:
$ cd ~/EasyRSA-3.0.4/
$ sudo ./easyrsa import-req /tmp/client1.req client1
$ sudo ./easyrsa sign-req client client1
Zadáním "ano" podpis autorizujte.
Nahrajte soubor client1.crt na svůj server:
scp pki/issued/client1.crt [email protected]_SERVER:/tmp
Na svém serveru zkopírujte následující soubory do příslušných složek.
$ 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/
Nyní byly vygenerovány certifikáty i klíče serveru a klienta.
Konfigurace směrování IP a brány firewall
Změňte pravidla pro předávání IP:
$ sudo nano /etc/sysctl.conf
Vyhledejte sekci "net.ipv4.ip_forward" a odeberte "#", aby se instrukce "nekomentovala".
Změňte některá pravidla brány firewall, abyste správně směrovali připojení klientů.
$ ip route | grep default
Uložte název za "dev" (na obrázku níže pojmenován "eth0"):
$ sudo nano /etc/ufw/before.rules
Přidejte příkazy jako na obrázku níže a nahraďte "eth0" názvem vašeho síťového rozhraní.
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
Uložte a ukončete. Nyní upravte konfigurační soubor UFW:
$ sudo nano /etc/default/ufw
Změňte hodnotu parametru "DEFAULT_FORWARD_POLICY" pomocí "ACCEPT".
$ sudo ufw allow 1194/udp
Přidejte port 1194 pro provoz UDP.
$ sudo ufw allow OpenSSH
Restartujte UFW:
$ sudo ufw disable
$ sudo ufw enable
Spusťte službu OpenVPN:
$ sudo systemctl start openvpn
Zkontrolujte stav služby:
$ sudo systemctl status openvpn
Nastavit službu při spuštění serveru.
$ sudo systemctl enable openvpn
Vytvořte konfigurační soubor pro klienta:
$ 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 "vzdálené" a ujistěte se, že je v ní uvedeno "vzdálený IP_Server 1194"
IP_Server:napište IP adresu serveru
1194:dříve vybraný port.
Najděte sekci "proto" a ujistěte se, že je server nastaven na UDP (naleznete řádek TCP s komentářem ";").
Najděte sekci "uživatel" a "skupina" a odstraňte znak ";" aby byly "bez komentáře".
Najděte sekce "ca.crt" - "client.crt" - "client.key" - "ta.key" a okomentujte je znakem "#" na začátku každého řádku.
Vyhledejte sekci "cipher" a přidejte příkaz "auth SHA256" pod příkaz "cipher AES-256-CBC".
Kdykoli přidejte instrukci "key-direction 1".
Tyto komentované řádky můžete kdykoli přidat. Pokud je klientem počítač se systémem Linux, uveďte „bez komentáře“.
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
Uložit a ukončit.
Generování konfigurace pro klienty
Na svém serveru vytvořte skript pro automatickou kompilaci konfigurace klienta.
nano ~/client-configs/make_config.sh
Zkopírujte a vložte 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žit a ukončit.
chmod 700 ~/client-configs/make_config.sh
Zkuste nyní vygenerovat "konfiguraci" klienta klienta
$ cd ~/client-configs
$ sudo ./make_config.sh client1
Vytvoří se soubor s názvem „client1.ovpn“.
Nyní přeneste tento soubor do zařízení, které chcete použít. K připojení jej použije software VPN.
Zrušení klientských certifikátů
$ cd EasyRSA-3.0.4/
$ sudo ./easyrsa revoke client1
klient1 je jméno klienta, kterému mají být odvolána oprávnění
Potvrďte zadáním „yes“.
Vygenerujte a nahrajte soubor crl.pem na svůj server:
$ sudo ./easyrsa gen-crl
$ sudo scp ~/EasyRSA-3.0.4/pki/crl.pem [email protected]_Server:/tmp
Aktualizujte konfiguraci svého serveru a ověřte 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žit a ukončit.
$ sudo systemctl restart [email protected]
Restartujte server, abyste provedli změny.