Top
Přejít na hlavní obsah
Služby
Návody > Seznam návodů > Jak spustit a nakonfigurovat VPN pomocí OpenVPN na Ubuntu 18.04

Jak spustit a nakonfigurovat VPN pomocí OpenVPN na Ubuntu 18.04

27 března 2020

Security Ubuntu VPN

Co tedy je VPN? VPN je zkratka pro Virtual Private Network, neboli virtuální privátní síť, která umožňuje bezpečný 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 soukromé síti: počítače připojené do VPN mohou mezi sebou přímo komunikovat. Můžete například přistupovat ke svému bankovnímu účtu nebo provádět platby, aniž byste se obávali, že někdo zachytí 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á digitální certifikáty k ověření totožnosti obou stran, následně je veškerá další komunikace mezi VPN klientem a VPN serverem šifrována, a proto je takové spojení bezpečné.

V tomto návodu vám ukážeme, jak nakonfigurovat VPN pomocí OpenVPN na Ubuntu 18.04.

K následování tohoto návodu budete potřebovat dva servery. Ten druhý slouží jako CA (certifikační autorita) a bude posuzovat platnost certifikátů.

K serveru a CA je nutné se připojit pomocí SSH. Pokud ještě nemáte SSH připojení k dispozici, doporučujeme návod na bezpečné připojení pomocí SSH protokolu.

Instalace OpenVPN

Připojte se na svůj server.

OpenVPN je k dispozici v oficiálním repozitáři Ubuntu, není tedy nutné přidávat nic jiného.

Zadejte příkaz:

sudo apt update
sudo apt install openvpn

Nyní je aplikace OpenVPN úspěšně nainstalována na váš server.

Instalace EasyRSA

Pokračujte stažením EasyRSA na svůj server a také na CA zadáním příkazu níže na obou serverech:

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

Poslední verze je ke stažení na https://github.com/OpenVPN/easy-rsa/releases

cd ~
tar xvf EasyRSA-3.0.4.tgz

Název se může lišit v závislosti na stahované verzi.

Konfigurace serveru

Dokončete konfiguraci serveru následujícím příkazem:

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, odeberte ";",
  • •   Najděte sekci o šifrování ("cipher"). Pokud je komentována, odeberte ";". Pod existující text přidejte řádek "auth SHA256";
  • •   Najděte sekci "dh" definující Diffie-Hellman parametry a odeberte "2048" z názvu (výsledkem by mělo být "dh dh.pem");
  • •   Najděte sekce "user" a "group" a odstraňte ";" pro odkomentování.

Konfigurace EasyRSA na CA

Po instalaci EasyRSA byl na vašem CA serveru vytvořen konfigurační soubor definující proměnné vaší CA. Zadejte příkaz:

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

Odstraňte znak "#" podle pokynů na obrázku níže:

EasyRSA Variables

Spusťte příkaz "easyrsa" skript pro inicializaci Public Key Infrastructure (PKI):

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

Pomocí tohoto příkazu budou vytvořeny dva soubory:

  • •   ca.crt: veřejný CA certifikát používaný servery a klienty k vzájemnému potvrzení, že jsou součástí stejné důvěryhodné sítě,
  • •   ca.key: soukromý klíč, který CA server používá k podepisování klíčů a certifikátů pro servery a klienty. Tento soubor musí být uložen pouze na CA serveru (který není přístupný třetím stranám). V opačném případě může být ohroženo zabezpečení sítě.

Budete vyzváni k zadání jména. Jméno nevyplňujte a stiskněte klávesu Enter.

Vyžádání certifikátu od CA

Nyní, když je CA server nakonfigurován, nechte váš server vygenerovat soukromý klíč a žádost o certifikát a odeslat je do CA serveru k podpisu:

cd ~/EasyRSA-3.0.4
./easyrsa init-pki
./easyrsa gen-req server nopass
  • •   server: název serveru. Pro zjednodušení ponechte „server“, v budoucnu se tím vyhnete několika změnám

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

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

Zkopírujte soubor server.req na CA server:

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

Vygenerování a podpis certifikátu

Do složky EasyRSA na vašem CA serveru vložte právě zkopírovaný soubor a podepište jej:

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

Zadejte “yes” a zmáčkněte Enter.

Přesuňte podepsaný certifikát a ca.crt na váš VPN Server:

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

Na vašem serveru zkopírujte zkopírované soubory do příslušných adresářů:

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

Vygenerujte silný klíč založený na Diffie-Hellman.

openvpn --genkey --secret ta.key

Zkopírujte vytvořené 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. (Tento návod popisuje postup pouze pro jednoho klienta, nazývá se „klient1“. Operace však musí být opakována pro každého klienta s použitím unikátního jména klienta).

mkdir -p ~/client-configs/keys
chmod -R 700 ~/client-configs
cd ~/EasyRSA-3.0.4/
./easyrsa gen-req client1 nopass
  • •   zmáčkněte Enter pro přijetí navrhovaného výchozího názvu.

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

  • •   Zkopírujte klientův klíč do již dříve vytvořené složky.

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

  • •   Odešlete soubor client1.req na CA server

Importujte žádost o certifikát na váš CA server:

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

Zadejte "yes" pro autorizaci podpisu.

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

Na vašem serveru zkopírujte následující soubory do příslušných složek.

mkdir -p ~/client-configs/keys

chmod -R 700 ~/client-configs

cp /tmp/client1.crt ~/client-configs/keys/

cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/

sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/

Nyní jsou certifikáty i klíče serveru a klienta vytvořeny.

Konfigurace IP routingu and firewallu

Povolte IP forwarding:

sudo nano /etc/sysctl.conf
  • •   Najděte sekci "net.ipv4.ip_forward" a odeberte "#" k odkomentování řádku.

Změňte pravidla brány firewall, aby správně směrovala připojení klientů.

ip route | grep default
  • •   Název uložte za "dev" (na obrázku níže je název "eth0")

Network Interface

sudo nano /etc/ufw/before.rules

Přidejte příkazy dle obrázku níže a nahraďte "eth0" názvem svého síťového rozhraní.

OpenVPN Rules

# 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.

sudo nano /etc/default/ufw
  • •   Změňte hodnotu parametru "DEFAULT_FORWARD_POLICY" na "ACCEPT".

sudo ufw allow 1194/udp

  • •   Povolte port 1194 pro UDP traffic.

sudo ufw allow OpenSSH

sudo ufw disable

sudo ufw enable

  • •   Restartujte firewall.

sudo systemctl start openvpn

  • •   Spusťte službu VPN.

sudo systemctl status openvpn

  • •   Zkontrolujte stav služby VPN.

OpenVPN Service Status

Spouštět službu při spuštění serveru.

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

Najděte sekci "remote" a ujistěte se, že hodnota odpovídá "remote IP_Server 1194"

  • •   IP_Server: Zapište IP adresu serveru.
  • •   1194: dříve zvolený port

Najděte sekci "proto" a ujistěte se, že je server nastaven na UPD (řádek TCP je okomentován pomocí ";").

Najděte sekce "user" a "group" a odstraňte ";" pro odebrání komentářů.

Najděte sekce "ca.crt" - "client.crt" - "client.key" - "ta.key" a na začátku každého řádku je označte "#".

Najděte sekci "cipher" a přidejte řádek "auth SHA256" pod řádek "cipher AES-256-CBC".

Přidejte řádek „key-direction 1“ v kterémkoli bodě.

Tyto řádky můžete přidat kdykoliv. Pokud je klientem počítač se systémem Linux, nevytvářejte žádné komentáře ("no comments").

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

Uložte a ukončete.

Generování konfigurace pro klienty

Na vašem serveru vytvořte skript, který automaticky zkompiluje konfiguraci klienta.

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 a ukončete.

chmod 700 ~/client-configs/make_config.sh

Nyní zkuste vygenerovat „konfiguraci“ klienta.

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

Bude vytvořen soubor s názvem “client1.ovpn”.

Nyní přeneste tento soubor do zařízení, které chcete používat. Bude využíván softwarem VPN pro připojení.

Zneplatnění certifikátů Klienta

cd EasyRSA-3.0.4/
./easyrsa revoke client1
  • •   client1: jméno klienta, kterému mají být odebrána povolení.

Zadejte "yes" pro potvrzení.

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

Generování a odeslání souboru crl.pem na server. Aktualizujte konfiguraci svého serveru pro potvrzení 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 ukončete.

sudo systemctl restart openvpn@server

Restartujte váš server, aby se změny projevily.

Začněte používat FORPSI Cloud

 ZAČÍT HNED POŽÁDAT O VOUCHER*

(*) FORPSI vám poskytne voucher s kreditem v hodnotě 160 Kč pro cloudové služby

TECHNOLOGIČTÍ PARTNEŘI: