GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit server OpenVPN na Ubuntu 18.04

Ať už chcete přistupovat k internetu bezpečně a bezpečně, když jste připojeni k nedůvěryhodné veřejné síti Wi-Fi, obejít obsah s geografickým omezením nebo umožnit svým spolupracovníkům, aby se při práci na dálku bezpečně připojili k vaší firemní síti, nejlepším řešením je použití VPN.

Síť VPN vám umožňuje připojit se ke vzdáleným serverům VPN, díky čemuž je vaše připojení šifrované a zabezpečené a můžete anonymně procházet web tím, že vaše data o provozu uchová v soukromí.

Existuje mnoho komerčních poskytovatelů VPN, ze kterých si můžete vybrat, ale nikdy si nemůžete být skutečně jisti, že poskytovatel vaši aktivitu nezaznamenává. Nejbezpečnější možností je nastavit si vlastní VPN server.

Tento tutoriál vás provede procesem nastavení vašeho vlastního serveru VPN instalací a konfigurací OpenVPN na Ubuntu 18.04. Ukážeme si také, jak generovat klientské certifikáty a vytvářet konfigurační soubory

OpenVPN je plně funkční řešení VPN s otevřeným zdrojovým kódem Secure Socket Layer (SSL). Implementuje zabezpečené síťové rozšíření OSI vrstvy 2 nebo 3 pomocí protokolu SSL/TLS.

Předpoklady #

K dokončení tohoto kurzu budete potřebovat:

  • Sudo přístup k serveru Ubuntu 18.04 pro hostování vaší instance OpenVPN.
  • Server by měl mít nakonfigurován základní firewall UFW.
  • Samostatný vyhrazený počítač, který bude sloužit jako vaše CA (certifikační autorita). Pokud nechcete pro svůj CA používat vyhrazený počítač, můžete si vytvořit CA na svém OpenVPN serveru nebo na místním počítači. Jakmile dokončíte vytváření CA, doporučujeme přesunout adresář CA někam do zabezpečeného prostředí nebo offline.

Tento tutoriál předpokládá, že CA je na samostatném počítači Ubuntu 18.04. Stejné kroky (s malými úpravami) budou platit, pokud svůj server používáte jako CA.

Důvodem, proč používáme samostatný počítač CA, je zabránit útočníkům proniknout na server. Pokud se útočníkovi podaří získat přístup k soukromému klíči CA, mohl by jej použít k podepsání nových certifikátů, které mu umožní přístup k serveru VPN.

Budování CA s EasyRSA #

Při nastavování nového serveru OpenVPN je prvním krokem vytvoření infrastruktury veřejného klíče (PKI). K tomu budeme muset vytvořit následující:

  • Certifikát certifikační autority (CA) a soukromý klíč.
  • Samostatný pár certifikátu a soukromého klíče pro server vydaný naším CA.
  • Samostatný pár certifikátu a soukromého klíče pro každého klienta vydaný naším CA.

Jak je uvedeno v předpokladech z bezpečnostních důvodů, vybudujeme CA na samostatném počítači.

K vytvoření CA, žádostí o certifikáty a podepisování certifikátů použijeme nástroj CLI s názvem EasyRSA.

Na svém počítači CA proveďte následující kroky .

  1. Nejprve si stáhněte nejnovější verzi EasyRSA z repozitáře projektu Github pomocí následujícího wgetcommand:

    cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz
  2. Po dokončení stahování rozbalte archiv pomocí:

    tar xzf EasyRSA-nix-3.0.5.tgz
  3. Přepněte se do adresáře EasyRSA a vytvořte konfigurační soubor s názvem vars zkopírováním vars.example soubor:

    cd ~/EasyRSA-3.0.5/cp vars.example vars
  4. Otevřete soubor a odkomentujte a aktualizujte následující položky, aby odpovídaly vašim informacím.

    nano ~/EasyRSA-3.0.5/vars
    ~/EasyRSA-3.0.5/vars
    set_var EASYRSA_REQ_COUNTRY    "US"
    set_var EASYRSA_REQ_PROVINCE   "Pennsylvania"
    set_var EASYRSA_REQ_CITY       "Pittsburgh"
    set_var EASYRSA_REQ_ORG        "Linuxize"
    set_var EASYRSA_REQ_EMAIL      "[email protected]"
    set_var EASYRSA_REQ_OU         "Community"
  5. Před vygenerováním páru klíčů CA musíme nejprve inicializovat nové PKI pomocí:

    ./easyrsa init-pki
    init-pki complete; you may now create a CA or requests.
    Your newly created PKI dir is: /home/causer/EasyRSA-3.0.5/pki
  6. Dalším krokem je sestavení CA:

    ./easyrsa build-ca

    Pokud nechcete být vyzváni k zadání hesla při každém podepisování certifikátů, spusťte build-ca pomocí příkazu nopass možnost:./easyrsa build-ca nopass .

    ...
    Enter PEM pass phrase:
    Verifying - Enter PEM pass phrase:
    -----
    ...
    -----
    Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
    
    CA creation complete and you may now import and sign cert requests.
    Your new CA certificate file for publishing is at:
    /home/causer/EasyRSA-3.0.5/pki/ca.crt

    Budete požádáni o nastavení hesla pro klíč CA a zadání běžného názvu vaší CA.

    Po dokončení skript vytvoří dva soubory — veřejný certifikát CA ca.crt a soukromý klíč CA ca.key .

    Nyní, když je vytvořena certifikační autorita (CA), můžete ji použít k podepisování žádostí o certifikát pro jeden nebo více serverů a klientů OpenVPN.

Instalace OpenVPN a EasyRSA #

Naším dalším krokem je instalace balíčku OpenVPN, který je k dispozici v repozitářích Ubuntu, a stažení nejnovější verze EasyRSA.

Následující kroky se provádějí na serveru OpenVPN .

  1. Instalace OpenVPN je docela přímočará, stačí spustit následující příkazy na serveru OpenVPN :

    sudo apt updatesudo apt install openvpn
  2. Stáhněte si nejnovější verzi EasyRSA:

    cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz

    Po dokončení stahování zadejte následující příkaz pro rozbalení archivu:

    tar xzf EasyRSA-nix-3.0.5.tgz

    Přestože jsme již inicializovali PKI na počítači CA, musíme také vytvořit nové PKI na serveru OpenVPN. Chcete-li to provést, použijte stejné příkazy jako dříve:

    cd ~/EasyRSA-3.0.5/./easyrsa init-pki

    Pokud vás stále zajímá, proč potřebujeme dvě instalace EasyRSA, je to proto, že tuto instanci EasyRSA použijeme ke generování požadavků na certifikát, které budou podepsány pomocí instance EasyRSA na počítači CA .

    Může to znít složitě a trochu matoucí, ale jakmile si přečtete celý tutoriál, uvidíte, že to opravdu není složité.

Vytváření klíčů Diffie-Hellman a HMAC #

V této části vygenerujeme silný klíč Diffie-Hellman, který bude použit během výměny klíčů, a soubor podpisu HMAC pro přidání další vrstvy zabezpečení do připojení.

  1. Nejprve přejděte do adresáře EasyRSA na vašem serveru OpenVPN .

    cd ~/EasyRSA-3.0.5/
  2. Vygenerujte klíč Diffie-Hellman:

    ./easyrsa gen-dh

    Skript vygeneruje 2048bitové parametry DH. To může nějakou dobu trvat, zvláště na serverech s malými prostředky. Po dokončení se na obrazovce vytiskne následující zpráva:

    DH parameters of size 2048 created at /home/serveruser/EasyRSA-3.0.5/pki/dh.pem

    Zkopírujte dh.pem soubor do /etc/openvpn adresář:

    sudo cp ~/EasyRSA-3.0.5/pki/dh.pem /etc/openvpn/
  3. Vygenerujte podpis HMAC:

    openvpn --genkey --secret ta.key

    Po dokončení zkopírujte ta.key soubor do /etc/openvpn adresář:

    sudo cp ~/EasyRSA-3.0.5/ta.key /etc/openvpn/

Vytváření certifikátu serveru a soukromého klíče #

Tato část popisuje, jak vygenerovat soukromý klíč a žádost o certifikát pro server OpenVPN.

  1. Přejděte do adresáře EasyRSA na vašem serveru OpenVPN a vygenerujte nový soukromý klíč pro server a soubor žádosti o certifikát:

    cd ~/EasyRSA-3.0.5/./easyrsa gen-req server1 nopass

    Používáme nopass argument, protože chceme spustit server OpenVPN bez zadání hesla. Také v tomto příkladu používáme server1 jako identifikátor názvu serveru (entity). Pokud pro svůj server zvolíte jiný název, nezapomeňte upravit níže uvedené pokyny, kde se název serveru používá.

    Příkaz vytvoří dva soubory, soukromý klíč (server1.key ) a soubor žádosti o certifikát (server1.req ).

    -----
    Common Name (eg: your user, host, or server name) [server1]:
    
    Keypair and certificate request completed. Your files are:
    req: /home/serveruser/EasyRSA-3.0.5/pki/reqs/server1.req
    key: /home/serveruser/EasyRSA-3.0.5/pki/private/server1.key
  2. Zkopírujte soukromý klíč do /etc/openvpn adresář:

    sudo cp ~/EasyRSA-3.0.5/pki/private/server1.key /etc/openvpn/
  3. Přeneste soubor žádosti o certifikát do počítače CA:

    scp ~/EasyRSA-3.0.5/pki/reqs/server1.req causer@your_ca_ip:/tmp

    V tomto příkladu používáme scp k přenosu souboru můžete také použít rsync přes ssh nebo jinou zabezpečenou metodu.

  4. Přihlaste se ke svému počítači CA , přepněte do adresáře EasyRSA a importujte soubor žádosti o certifikát:

    cd ~/EasyRSA-3.0.5./easyrsa import-req /tmp/server1.req server1

    První argument je cesta k souboru žádosti o certifikát a druhý je krátký název serveru (entity). V našem případě je název serveru server1 .

    The request has been successfully imported with a short name of: server1
    You may now use this name to perform signing operations on this request.

    Tento příkaz pouze zkopíruje soubor požadavku do pki/reqs adresář.

  5. Ještě v adresáři EasyRSA na počítači CA spusťte následující příkaz k podepsání požadavku:

    cd ~/EasyRSA-3.0.5./easyrsa sign-req server server1

    První argument může být buď server nebo client a druhý je krátký název serveru (entity).

    Budete vyzváni k ověření, že požadavek pochází z důvěryhodného zdroje. Zadejte yes a stiskněte enter pro potvrzení:

    You are about to sign the following certificate.
    Please check over the details shown below for accuracy. Note that this request
    has not been cryptographically verified. Please be sure it came from a trusted
    source or that you have verified the request checksum with the sender.
    
    Request subject, to be signed as a server certificate for 1080 days:
    
    subject=
        commonName                = server1
    
    Type the word 'yes' to continue, or any other input to abort.
    Confirm request details: yes
    ...

    Pokud je váš klíč CA chráněn heslem, budete vyzváni k zadání hesla. Po ověření skript vygeneruje certifikát SSL a vytiskne k němu úplnou cestu.

    ...
    Certificate is to be certified until Sep 17 10:54:48 2021 GMT (1080 days)
    
    Write out database with 1 new entries
    Data Base Updated
    
    Certificate created at: /home/causer/EasyRSA-3.0.5/pki/issued/server1.crt
  6. Dalším krokem je přenos podepsaného certifikátu server1.crt a ca.crt soubory zpět na váš server OpenVPN. Opět můžete použít scp , rsync nebo jakoukoli jinou zabezpečenou metodou:

    scp ~/EasyRSA-3.0.5/pki/issued/server1.crt serveruser@your_server_ip:/tmpscp ~/EasyRSA-3.0.5/pki/ca.crt serveruser@your_server_ip:/tmp
  7. Přihlaste se ke svému serveru OpenVPN a přesuňte soubor server1.crt a ca.crt soubory do /etc/openvpn/ adresář:

    sudo mv /tmp/{server1,ca}.crt /etc/openvpn/

Po dokončení kroků uvedených v této části byste měli mít na svém serveru OpenVPN následující nové soubory :

  • /etc/openvpn/ca.crt
  • /etc/openvpn/dh.pem
  • /etc/openvpn/ta.key
  • /etc/openvpn/server1.crt
  • /etc/openvpn/server1.key

Konfigurace služby OpenVPN #

Nyní, když máte certifikát serveru podepsaný vaší CA a přenesený na váš server OpenVPN , je čas nakonfigurovat službu OpenVPN.

Jako výchozí bod použijeme vzorový konfigurační soubor dodaný s instalačním balíčkem OpenVPN a poté do něj přidáme vlastní možnosti konfigurace.

Začněte rozbalením konfiguračního souboru do /etc/openvpn/ adresář:

sudo sh -c "gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server1.conf"

Otevřete soubor pomocí svého oblíbeného textového editoru:

sudo nano /etc/openvpn/server1.conf
  • Najděte direktivy Certificate, Key a DH parametrů a změňte názvy souborů:

    /etc/openvpn/server1.conf
    cert server1.crt
    key server1.key 
    
    dh dh.pem
  • Chcete-li přesměrovat klientský provoz přes VPN, vyhledejte redirect-gateway a odkomentujte jej a dhcp-option možnosti:

    /etc/openvpn/server1.conf
    push "redirect-gateway def1 bypass-dhcp"
    
    push "dhcp-option DNS 208.67.222.222"
    push "dhcp-option DNS 208.67.220.220"

    Ve výchozím nastavení se používají překladače OpenDNS. Můžete to změnit a použít CloudFlare, Google nebo jakýkoli jiný překladač DNS, který chcete.

  • Najděte user a group direktivy a odkomentujte tato nastavení odstraněním „; ” na začátku každého řádku:

    /etc/openvpn/server1.conf
    user nobody
    group nogroup
  • Připojte následující řádek na konec souboru. Tato direktiva změní algoritmus ověřování zpráv (HMAC) z SHA1 na SHA256

    /etc/openvpn/server1.conf
    auth SHA256

Jakmile budete hotovi, konfigurační soubor serveru (bez komentářů) by měl vypadat nějak takto:

/etc/openvpn/server1.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server1.crt
key server1.key  # This file should be kept secret
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1
auth SHA256

Spouštění služby OpenVPN #

V tomto tutoriálu jsme použili server1.conf jako konfigurační soubor. Chcete-li spustit službu OpenVPN s touto konfigurací, musíme zadat název konfiguračního souboru za názvem souboru jednotky systemd:

Na vašem serveru OpenVPN spusťte následující příkaz pro spuštění služby OpenVPN:

sudo systemctl start openvpn@server1

Ověřte, zda byla služba úspěšně spuštěna zadáním:

sudo systemctl status openvpn@server1

Pokud je služba aktivní a běží, výstup bude vypadat nějak takto:

[email protected] - OpenVPN connection to server1
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-10-08 20:11:57 UTC; 6min ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
 Main PID: 26739 (openvpn)
   Status: "Initialization Sequence Completed"

Povolte automatické spouštění služby při spouštění pomocí:

sudo systemctl enable openvpn@server1
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /lib/systemd/system/[email protected].
Pokud se nepodaří spustit službu OpenVPN, zkontrolujte protokoly pomocí sudo journalctl -u openvpn@server1

OpenVPN Server vytvoří nové zařízení tun tun0 . Chcete-li zkontrolovat, zda je zařízení dostupné, použijte následující příkaz ip:

ip a show tun0

Výstup by měl vypadat nějak takto:

4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::1627:9a20:bca8:e6a5/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

V tomto okamžiku je váš server OpenVPN nakonfigurován a běží správně.

Konfigurace brány firewall a sítě serveru #

Abychom mohli správně předávat síťové pakety, musíme povolit předávání IP.

Následující kroky se provádějí na serveru OpenVPN .

Otevřete /etc/sysctl.conf soubor a přidejte nebo odkomentujte řádek, který zní net.ipv4.ip_forward = 1 :

sudo nano /etc/sysctl.conf
/etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Až budete hotovi, uložte a zavřete soubor.

Použijte nová nastavení spuštěním následujícího příkazu:

sudo sysctl -p
net.ipv4.ip_forward = 1

Pokud jste dodrželi předpoklady, měli byste již mít na svém serveru UFW firewall spuštěný.

Nyní musíme přidat pravidla brány firewall, abychom umožnili maskování. To umožní provozu opustit VPN a vašim klientům VPN poskytne přístup k internetu.

Před přidáním pravidel musíte znát veřejné síťové rozhraní vašeho Ubuntu OpenVPN Server. Rozhraní můžete snadno najít spuštěním následujícího příkazu:

ip -o -4 route show to default | awk '{print $5}'

V našem případě se rozhraní jmenuje ens3 jak je znázorněno na výstupu níže. Vaše rozhraní bude mít pravděpodobně jiný název.

ens3

Ve výchozím nastavení jsou při použití UFW předané pakety zahazovány. Budeme to muset změnit a dát našemu firewallu pokyn, aby povolil přeposílání paketů.

Otevřete konfigurační soubor UFW, vyhledejte DEFAULT_FORWARD_POLICY a změňte hodnotu z DROP ACCEPT :

sudo nano /etc/default/ufw
/etc/default/ufw
...
# Set the default forward policy to ACCEPT, DROP or REJECT.  Please note that
# if you change this you will most likely want to adjust your rules
DEFAULT_FORWARD_POLICY="ACCEPT"
...

Dále musíme nastavit výchozí politiku pro POSTROUTING řetěz v nat stole a nastavte pravidlo maškarády.

Chcete-li tak učinit, otevřete /etc/ufw/before.rules soubor a připojte řádky zvýrazněné žlutě, jak je znázorněno níže.

sudo nano /etc/ufw/before.rules

Nezapomeňte nahradit ens3 v -A POSTROUTING řádek, který odpovídá názvu rozhraní veřejné sítě, které jste našli v předchozím příkazu. Vložte řádky za poslední řádek začínající COMMIT .

/etc/ufw/before.rules
...
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic through ens3 - Change to public network interface
-A POSTROUTING -s 10.8.0.0/16 -o ens3 -j MASQUERADE

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

Až budete hotovi, uložte a zavřete soubor.

Potřebujeme také otevřít UDP provoz na portu 1194 což je výchozí port OpenVPN. Chcete-li tak učinit, spusťte následující příkaz:

sudo ufw allow 1194/udp

V případě, že jste zapomněli otevřít port SSH, abyste se vyhnuli uzamčení, spusťte následující příkaz k otevření portu:

sudo ufw allow OpenSSH

Nakonec znovu načtěte pravidla UFW vypnutím a opětovným povolením UFW:

sudo ufw disablesudo ufw enable

Chcete-li ověřit změny, spusťte následující příkaz pro seznam pravidel POSTROUTING:

sudo iptables -nvL POSTROUTING -t nat
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      ens3    10.8.0.0/16          0.0.0.0/0  

Vytvoření klientské konfigurační infrastruktury #

V tomto tutoriálu vytvoříme samostatný certifikát SSL a vygenerujeme jiný konfigurační soubor pro každého klienta VPN.

Klientský soukromý klíč a žádost o certifikát lze vygenerovat na klientském počítači nebo na serveru. Pro jednoduchost vygenerujeme žádost o certifikát na serveru a poté ji odešleme CA k podpisu.

Celý proces generování klientského certifikátu a konfiguračního souboru je následující:

  1. Vygenerujte soukromý klíč a žádost o certifikát na serveru OpenVPN.
  2. Odešlete požadavek na počítač CA, který má být podepsán.
  3. Zkopírujte podepsaný certifikát SSL na server OpenVPN a vygenerujte konfigurační soubor.
  4. Odešlete konfigurační soubor do počítače klienta VPN.

Začněte vytvořením sady adresářů pro uložení souborů klientů:

mkdir -p ~/openvpn-clients/{configs,base,files}
  • base adresář bude ukládat základní soubory a konfiguraci, které budou sdíleny mezi všemi klientskými soubory.
  • configs adresář bude ukládat vygenerovanou konfiguraci klienta.
  • files adresář bude uchovávat pár certifikát/klíč specifický pro klienta.

Zkopírujte ca.crt a ta.key soubory do ~/openvpn-clients/base adresář:

cp ~/EasyRSA-3.0.5/ta.key ~/openvpn-clients/base/cp /etc/openvpn/ca.crt ~/openvpn-clients/base/

Poté zkopírujte ukázkový konfigurační soubor klienta VPN do souboru client-~/openvpn-clients/base adresář. Tento soubor použijeme jako základní konfiguraci:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/openvpn-clients/base/

Nyní musíme soubor upravit tak, aby odpovídal nastavení a konfiguraci našeho serveru. Otevřete konfigurační soubor pomocí textového editoru:

nano ~/openvpn-clients/base/client.conf
  • Najděte vzdálenou direktivu a změňte výchozí zástupný symbol s veřejnou IP adresou vašeho OpenVPN serveru:

    ~/openvpn-clients/base/client.conf
    # The hostname/IP and port of the server.
    # You can have multiple remote entries
    # to load balance between the servers.
    remote YOUR_SERVER_IP 1194
  • Najděte a okomentujte ca , cert a key směrnice. Certifikáty a klíče budou přidány do konfiguračního souboru:

    ~/openvpn-clients/base/client.conf
    # SSL/TLS parms.
    # See the server config file for more
    # description.  It's best to use
    # a separate .crt/.key file pair
    # for each client.  A single ca
    # file can be used for all clients.
    # ca ca.crt
    # cert client.crt
    # key client.key
  • Připojte na konec souboru následující řádek, aby odpovídal nastavení serveru:

    ~/openvpn-clients/base/client.conf
    auth SHA256

Jakmile budete hotovi, konfigurační soubor serveru by měl vypadat nějak takto:

~/openvpn-clients/base/client.conf
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
auth SHA256
key-direction 1

Dále vytvořte jednoduchý bash skript, který sloučí základní konfiguraci a soubory s klientským certifikátem a klíčem, a uloží vygenerovanou konfiguraci do ~/openvpn-clients/configs adresář.

Otevřete textový editor a vytvořte následující skript:

nano ~/openvpn-clients/gen_config.sh
~/openvpn-clients/gen_config.sh
#!/bin/bash

FILES_DIR=$HOME/openvpn-clients/files
BASE_DIR=$HOME/openvpn-clients/base
CONFIGS_DIR=$HOME/openvpn-clients/configs

BASE_CONF=${BASE_DIR}/client.conf
CA_FILE=${BASE_DIR}/ca.crt
TA_FILE=${BASE_DIR}/ta.key

CLIENT_CERT=${FILES_DIR}/${1}.crt
CLIENT_KEY=${FILES_DIR}/${1}.key

# Test for files
for i in "$BASE_CONF" "$CA_FILE" "$TA_FILE" "$CLIENT_CERT" "$CLIENT_KEY"; do
    if [[ ! -f $i ]]; then
        echo " The file $i does not exist"
        exit 1
    fi

    if [[ ! -r $i ]]; then
        echo " The file $i is not readable."
        exit 1
    fi
done

# Generate client config
cat > ${CONFIGS_DIR}/${1}.ovpn <<EOF
$(cat ${BASE_CONF})
<key>
$(cat ${CLIENT_KEY})
</key>
<cert>
$(cat ${CLIENT_CERT})
</cert>
<ca>
$(cat ${CA_FILE})
</ca>
<tls-auth>
$(cat ${TA_FILE})
</tls-auth>
EOF

Uložte soubor a udělejte jej spustitelný spuštěním následujícího chmod příkaz:

chmod u+x ~/openvpn-clients/gen_config.sh

Vytvoření soukromého klíče klientského certifikátu a konfigurace #

Proces generování klientského soukromého klíče a žádosti o certifikát je stejný jako při generování serverového klíče a žádosti o certifikát.

Jak jsme již zmínili v předchozí části, klientský soukromý klíč a žádost o certifikát vygenerujeme na serveru OpenVPN. V tomto příkladu bude název prvního klienta VPN client1 .

  1. Přejděte do adresáře EasyRSA na vašem serveru OpenVPN a vygenerujte nový soukromý klíč a soubor žádosti o certifikát pro klienta:

    cd ~/EasyRSA-3.0.5/./easyrsa gen-req client1 nopass

    Příkaz vytvoří dva soubory, soukromý klíč (client1.key ) a soubor žádosti o certifikát (client1.req ).

    Common Name (eg: your user, host, or server name) [client1]:
    
    Keypair and certificate request completed. Your files are:
    req: /home/serveruser/EasyRSA-3.0.5/pki/reqs/client1.req
    key: /home/serveruser/EasyRSA-3.0.5/pki/private/client1.key
  2. Zkopírujte soukromý klíč client1.key do ~/openvpn-clients/files adresář, který jste vytvořili v předchozí části:

    cp ~/EasyRSA-3.0.5/pki/private/client1.key ~/openvpn-clients/files/
  3. Přeneste soubor žádosti o certifikát do počítače CA:

    scp ~/EasyRSA-3.0.5/pki/reqs/client1.req causer@your_ca_ip:/tmp

    V tomto příkladu používáme scp k přenosu souboru můžete také použít rsync přes ssh nebo jinou zabezpečenou metodu.

  4. Přihlaste se ke svému počítači CA , přepněte do adresáře EasyRSA a importujte soubor žádosti o certifikát:

    cd ~/EasyRSA-3.0.5./easyrsa import-req /tmp/client1.req client1

    První argument je cesta k souboru žádosti o certifikát a druhý je jméno klienta.

    The request has been successfully imported with a short name of: client1
    You may now use this name to perform signing operations on this request.
  5. Z adresáře EasyRSA na počítači CA spusťte následující příkaz k podepsání požadavku:

    cd ~/EasyRSA-3.0.5./easyrsa sign-req client client1

    Budete vyzváni k ověření, že požadavek pochází z důvěryhodného zdroje. Zadejte yes a stiskněte enter pro potvrzení:

    Pokud je váš klíč CA chráněn heslem, budete vyzváni k zadání hesla. Po ověření skript vygeneruje certifikát SSL a vytiskne k němu úplnou cestu.

    ...
    Certificate created at: /home/causer/EasyRSA-3.0.5/pki/issued/client1.crt
  6. Dále přeneste podepsaný certifikát client1.crt soubor zpět na váš server OpenVPN. Můžete použít scp , rsync nebo jakoukoli jinou zabezpečenou metodou:

    scp ~/EasyRSA-3.0.5/pki/issued/client1.crt serveruser@your_server_ip:/tmp
  7. Přihlaste se ke svému serveru OpenVPN a přesuňte soubor client1.crt soubor do ~/openvpn-clients/files adresář:

    mv /tmp/client1.crt ~/openvpn-clients/files
  8. Posledním krokem je vygenerování konfigurace klienta pomocí gen_config.sh skript. Přepněte na ~/openvpn-clients adresář a spusťte skript s použitím názvu klienta jako argumentu:

    cd ~/openvpn-clients./gen_config.sh client1

    Skript vytvoří soubor s názvem client1.ovpn v ~/client-configs/configs adresář. Můžete to zkontrolovat výpisem adresáře:

    ls ~/openvpn-clients/configs
    client1.ovpn

V tomto okamžiku je vytvořena konfigurace klienta. Nyní můžete přenést konfigurační soubor do zařízení, které hodláte používat jako klienta.

Například pro přenos konfiguračního souboru na váš místní počítač pomocí scp měli byste spustit následující příkaz:

scp ~/openvpn-clients/configs/client1.ovpn your_local_ip:/

Chcete-li přidat další klienty, opakujte stejné kroky.

Připojování klientů #

Linux #

Vaše distribuční nebo desktopové prostředí může poskytovat nástroj nebo grafické uživatelské rozhraní pro připojení k serverům OpenVPN. V tomto tutoriálu vám ukážeme, jak se připojit k serveru pomocí openvpn nástroj.

  • Nainstalujte OpenVPN na Ubuntu a Debian

    sudo apt updatesudo apt install openvpn
  • Nainstalujte OpenVPN na CentOS a Fedoru

    sudo yum install epel-releasesudo yum install openvpn

Jakmile je balíček nainstalován, pro připojení k serveru VPN použijte openvpn a zadejte konfigurační soubor klienta:

sudo openvpn --config client1.ovpn

macOS #

Tunnelblick je bezplatné grafické uživatelské rozhraní s otevřeným zdrojovým kódem pro OpenVPN na OS X a macOS.

Windows #

Stáhněte si a nainstalujte nejnovější sestavení aplikace OpenVPN na stránce Stahování OpenVPN.

Zkopírujte .ovpn soubor do konfigurační složky OpenVPN (\Users\<Name>\OpenVPN\Config nebo \Program Files\OpenVPN\config ).

Spusťte aplikaci OpenVPN.

Klikněte pravým tlačítkem na ikonu OpenVPN na hlavním panelu a v nabídce se zobrazí název konfiguračního souboru OpenVPN, který jste zkopírovali. Klikněte na Připojit.

Android a iOS #

Aplikace VPN vyvinutá společností OpenVPN je k dispozici pro Android i iOS. Nainstalujte aplikaci a importujte klienta .ovp soubor.

  • Android OpenVPN Connect
  • iOS OpenVPN Connect

Zrušení klientských certifikátů #

Zrušení certifikátu znamená zneplatnění podepsaného certifikátu, takže jej již nelze používat pro přístup k serveru OpenVPN.

Chcete-li odvolat klientský certifikát, postupujte takto:

  1. Přihlaste se ke svému počítači CA a přepněte se do adresáře EasyRSA:

    cd EasyRSA-3.0.5
  2. Spusťte skript easyrsa pomocí příkazu revoke argument následovaný jménem klienta, kterého chcete odvolat:

    ./easyrsa revoke client1

    Budete vyzváni k potvrzení, že chcete certifikát zrušit. Zadejte yes a stiskněte enter pro potvrzení:

    Please confirm you wish to revoke the certificate with the following subject:
    
    subject=
        commonName                = client1
    
    Type the word 'yes' to continue, or any other input to abort.
    Continue with revocation: yes
    ...

    If your CA key is password protected, you’ll be prompted to enter the password. Once verified the script will revoke the certificate.

    ...
    Revocation was successful. You must run gen-crl and upload a CRL to your
    infrastructure in order to prevent the revoked cert from being accepted.
  3. Use the gen-crl option to generate a certificate revocation list (CRL):

    ./easyrsa gen-crl
    An updated CRL has been created.
    CRL file: /home/causer/EasyRSA-3.0.5/pki/crl.pem
  4. Upload the CRL file to the OpenVPN server:

    scp ~/EasyRSA-3.0.5/pki/crl.pem serveruser@your_server_ip:/tmp
  5. Login to your OpenVPN server server and move the file to the /etc/openvpn adresář:

    sudo mv /tmp/crl.pem /etc/openvpn
  6. Open the OpenVPN server configuration file:

    sudo nano /etc/openvpn/server1.conf

    Paste the following line at the end of the file

    /etc/openvpn/server1.conf
    crl-verify crl.pem

    Uložte a zavřete soubor.

  7. Restart the OpenVPN service for the revocation directive to take effect:

    sudo systemctl restart openvpn@server1

    At this point, the client should no longer be able to access the OpenVPN server using the revoked certificate.

If you need revoke additional client certificates just repeat the same steps.


Ubuntu
  1. Jak nastavit Ubuntu/Debian LAMP Server

  2. Jak nastavit Nginx jako reverzní proxy na Ubuntu 20.04

  3. Jak nastavit WireGuard na Ubuntu 22.04

  1. Jak nastavit TeamSpeak Server na Ubuntu 16.04

  2. Jak nainstalovat OpenVPN na Ubuntu 18.04

  3. Jak nastavit server OpenVPN na Debianu 10

  1. Jak nastavit a nainstalovat Squid Proxy Server na Ubuntu 18.04

  2. Jak nastavit server OpenVPN na Ubuntu 20.04

  3. Jak nastavit bloky serveru Nginx na Ubuntu 20.04