COMPUTING > Virtual Private Cloud > VMware vCloud Director > VPN kapcsolat létrehozása OpenVPN-nel Ubuntu 20.04 rendszeren

3.4.1.2 VPN kapcsolat létrehozása OpenVPN-nel Ubuntu 20.04 rendszeren

A VPN (Virtual Private Network) egy virtuális magánhálózat, amely lehetővé teszi a védett hálózati kapcsolatot két független adathálózat között az interneten. VPN használatával tehát egy az internetre csatlakoztatott szerver vagy PC (kliens) hozzáférhet egy másik szerver hálózati erőforrásaihoz, közvetlen virtuális hálózati kapcsolatot hozva létre a kettő között, gyakorlatilag lemásolva egy fizikai kapcsolatot két hálózati pont között.

Az OpenVPN egy nyílt forráskódú szoftver lehetővé teszi egy TLS/SSL-en (Transport Layer Security/Secure Sockets Layer) alapuló, titkosított virtuális csatorna létrehozását tanúsítványok segítségével a forgalom biztonságos továbbítására a szerver és egy vagy több kliens között.
 
Ez az útmutató ismerteti, hogyan kell konfigurálni/létrehozni VPN-t OpenVPN-nel egy Linux rendszert használó kiszolgálón és kliensen, Ubuntu 20.04 használatával. Ezen útmutató egyes (a kiszolgálóra vagy a kliensre vonatkozó) részei hibrid (pl. Windows Server és Linux kliens, vagy fordítva) konfigurációhoz/telepítéshez is használhatók.

Az útmutató utasításainak követéséhez a következőkre lesz szüksége:
  • Szerver – fő szerver (Ubuntu) a VPN csatlakozáshoz;
  • CA gép - szerver (Ubuntu), amely CA gépként vagy tanúsító hatóságként fog szolgálni, és felelős a tanúsítványok érvényességének ellenőrzéséért (ez lehet a VPN kapcsolathoz használt fő szerver is);
  • Kliens – másodlagos eszköz (Ubuntu) a VPN csatlakozáshoz.
SSH kapcsolaton keresztül tudnia kell csatlakozni a Szerveréhez, a CA-gépéhez és a Klienshez.
 
Először jelentkezzen be a szerverére, és telepítse az OpenVPN-t (ezek az útmutatások kliens oldalon is érvényesek).
 
A telepítő kiszolgáló és kliens Linux operációs rendszerén is használható.

Megjegyzés: Az OpenVPN szerepel a hivatalos Ubuntu repository-ban, így nincs szükség tovább repository használatára.

Gépelje be a következőket:
 

$ sudo apt update
$ sudo apt install openvpn

Ezzel sikeresen telepítette az OpenVPN-t a szerverére.
 
Ugyanezt az OpenVPN telepítési eljárást kell elvégezni a kliens oldalon.
Folytassa az EasyRSA letöltésével a szerverére és a CA gépére, mindkét gépen beírja a következőket:
 

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

A legfrissebb verzió letölthető a https://github.com/OpenVPN/easy-rsa/releases oldalról.
 

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



Megjegyzés: A név eltérhet a letöltött verziótól függően.
A szerver beállításához gépelje be a következőket:
 

$ 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

Keresse meg a HMAC-ra ("tls-auth") hivatkozó részt. Ha a sort kommentálják, akkor távolítsa el a ";" karaktert.
Keresse meg a titkosítás szakaszát ("cipher"). Ha kommentálják, akkor távolítsa el a ";" karaktert. Alul illesszen be egy új sort, amely tartalmazza az "auth SHA256" szöveget.
Keresse meg a "dh" szakaszt, amely meghatározza a Diffie-Hellman paramétereket, és távolítsa el a "2048" részt a névből ("dh dh.pem" szükséges).

Keresse meg a "user" és a "group" részt, és távolítsa el a ";" karaktert a sorok kikommentezéséhez.
Miután telepítette az EasyRSA-t a CA gépére, létrejött egy a CA változóinak meghatározására szolgáló konfigurációs fájl. Gépelje be a következőt:
 

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

Kommentezze ki az alábbi utasításokat:

Modifica le variabili

Futtassa az „easyrsa” szkriptet a PKI (Public Key Infrastructure) inicializálásához:
 

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

Ezzel a paranccsal két fájl jön létre:
  • ca.crt: nyilvános tanúsítvány a szerver és a kliens által használt CA géphez, hogy tudassák egymással, hogy ugyanannak a biztonságos hálózatnak a részei.
  • ca.key: a CA gép által használt privát kulcs a kiszolgáló és a kliens kulcsainak és tanúsítványainak aláírására. Ezt a fájlt csak a CA gépen kell tárolni (harmadik felek nem férhetnek hozzá), hogy ne kerüljön veszélybe a hálózat biztonsága.
Amikor meg kell adnia egy nevet, hagyja üresen és nyomja meg az Enter billentyűt.
Most, hogy beállította a CA-gépet, létre kell hoznia egy privát kulcsot és egy tanúsítványkérést a szerveren, és el kell küldenie azokat a CA-gépnek aláírásra:
 

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

A könnyebbség kedvéért hagyja meg a gép nevét "server"-nek, különben a későbbiekben több változtatást kell végrehajtania.

Létrehozott egy privát kulcsot a szerverhez és egy "server.req" nevű tanúsítványkérést:
 

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

Másolja a server.req fájlt a CA gépre:
 

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

A CA gép EasyRSA mappájában, importálja az átmásolt fájlt és írja alá a következőképp:
 

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

Majd gépelje be a "yes" szót és nyomja meg a Enter gombot.

Helyezze át az aláírt tanúsítványt és a ca.crt fájlt a VPN szerverre:
 

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

Ezután másolja a kapott fájlokat a kiszolgáló megfelelő mappájába:
 

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

és generáljon egy kulcscserét:
 

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

A generált fáljlokat másolja át a "/etc/openvpn/" mappába:
 

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

Lépjen be az Ubuntu gépre, amit kliensként fog használni.

Miután telepítette az OpenVPN-t erre a gépre, hozzon létre egy mappát az kliens tanúsítványok és -kulcsok archiválásához. Ez az útmutató csak egy klienst tartalmaz, "client1" néven, de a műveletet minden további kliensnél meg kell ismételni, ennek megfelelően módosítva a nevet.
 

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

A javasolt név elfogadásához nyomja meg az Enter billentyűt.
Másolja a kliens kulcsát a korábban létrehozott mappába:
 

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


Másolja a client1.req fájlt CA gépre:
 

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

Importálja a tanúsítványkérést a CA gépére:
 

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

Gépelje be a "yes" szót az aláírás hitelesítéséhez.
Helyezze át a tanúsítványt a szerverre:
 

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

Másolja a következő fájlokat a szerverre a megfelelő mappákba:
 

$ 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/

Ezzel a szerver és a kliens tanúsítványait, valamint kulcsait elkészítettük.
A szerver oldalon módosítani kell az IP továbbítási szabályokat.
 

$ sudo nano /etc/sysctl.conf

Keresse meg a "net.ipv4.ip_forward" részt és távolítsa el a "#" az utasításnál.

Néhány tűzfal szabályt módosítani kell a kliens kapcsolatok megfelelő irányításához.
 

$ ip route | grep default

Jegyezze meg a "dev" utáni nevet (a képen a név "eth0").

Configura la rete di OpenVPN

$ sudo nano /etc/ufw/before.rules

Adja hozzá a parancsokat az alábbi ábra szerint, az "eth0" -át helyettesítve a hálózati interfész nevével.

Configura la rete di OpenVPN

Mentse és lépjen ki.
 

$ sudo nano /etc/default/ufw

Cserélje ki a "DEFAULT_FORWARD_POLICY" paraméter értékét az "ACCEPT" értékre.

Engedélyezze az 1194 UDP és a 22 SSH portokat:
 

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

Indítsa újra a tűzfalat:
 

$ sudo ufw disable
$ sudo ufw enable

Indítsa el a VPN szolgáltatást:
 

$ sudo systemctl start openvpn

Ellenőrizze a VPN szolgáltatás állapotát. Ha minden jól ment, akkor az alábbi képernyőhöz hasonlót kell látnia.
 

$ sudo systemctl status openvpn

Stato del servizio di OpenVPN

Állítsa be a szolgáltatás indítását a szerver indításakor:
 

$ sudo systemctl enable openvpn

Hozza létre az alapkonfigurációt a kliensek számára:
 

$ 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

Keresse meg a "remote" részt és ellenőrizze, hogy a "remote IP_Server 1194" látható.
 
  • IP_Server: adja meg a szerver IP-t
  • 1194: korábban kiválasztott port.
Keresse meg a "proto" részt és ellenőrizze, hogy a szerver UDP-re van állítva (látni fogja, hogy a TCP sor ki van kommentezve ";" karakterrel).

Menjen a "user" és "group" részekre és távolítsa a ";" karaktert.

Menjen a "ca.crt" - "client.crt" - "client.key" - "ta.key" részekre és távolítsa a ";" karaktert minden sor elejéről.

Menjen a "cipher" részre és adja hozzá az "auth SHA256" utasítást a "cipher AES-256-CBC" utasítás alá.

Adja hozzá a "key-direction 1" utasítást tetszőleges helyen.

Adja hozzá az alábbi kikommentezett sorokat. Ha a kliens Linux gép, akkor maradjon kikommentezve.
 

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

Mentse és lépjen ki.
A szerverén hozzon létre egy szkriptet, amely automatikusan kitölti a kliens konfigurációját:
 

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

Másolja és illessze be a következő szöveget:
 

#!/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

Mentse el a fájlt és tegye végrehajthatóvá:
 

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

Végül próbálja meg létrehozni a "client1" kliens konfigurációját:
 

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

A client1.ovpn fájl jön létre.

Ezután át kell vinnie ezt a fájlt arra az eszközre, amelyet kliensként kíván használni és ahonnan a VPN kapcsolatot létesíteni fogja.
Egy kliens tanúsítvány visszavonásához a következő parancsokat adja ki a CA gépén:
 

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

client1 annak a kliensnek a neve, amelynek a tanúsítványát visszanonjuk.

A megerősítéshez gépelje be a "yes" szót.

Generálja le a crl.pem fájlt és küldje át a szerverére:
 

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

Frissítse a konfigurációt a kiszolgálón a visszavonás ellenőrzéséhez:
 

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

A fájl végére adja hozzá "crl-verify crl.pem" sort.

Mentse el és zárja be.
 

$ sudo systemctl restart openvpn@server

A változtatások érvénybe léptetéséhez indítsa újra a szervert.