Oktatóanyagok > Hogyan állítható be és konfigurálható a VPN az OpenVPN-nel Ubuntu 18.04-en?

Hogyan állítható be és konfigurálható a VPN az OpenVPN-nel Ubuntu 18.04-en?

Közzétéve: 20 január 2020

Security Ubuntu VPN

A VPN egy virtuális magánhálózat, amely lehetővé teszi az internethez vagy bizonyos szolgáltatásokhoz való hozzáférést akár megbízhatatlan hálózatról is. Alapvetően olyan, mintha fizikailag csatlakozott volna egy magánhálózathoz: például hozzáférhet a bankszámlájához vagy fizetéseket fizethet anélkül, hogy aggódnia kellene attól, hogy illetéktelen személy hozzáférhessen a készülék által generált adatforgalomhoz.

Az OpenVPN egy TLS / SSL protokollokon (Transport Layer Security / Secure Sockets Layer) alapuló VPN platform: tanúsítványokat használ a szerver és az ügyfél közötti forgalom titkosításához.

Ebben az oktatóanyagból megismerheti, hogyan lehet az OpenVPN-t konfigurálni egy szerveren az Ubuntu 18.04-en.

Ennek az oktatóanyagnak a végrehajtásához szervergépre és egy másik, CA-ként (Certificate Authority) használható gépre van szükség, amely felméri a tanúsítványok érvényességét.

SSH protokollon keresztül kell kapcsolódnia a  és a CA-hoz. Ha még nem tette meg, akkor ajánlott átböngésznie a Hogyan javítható az SSH biztonság az Ubuntu 18.04-en? útmutatónkat a folyamat megkezdése előtt.

Az OpenVPN telepítése

Nyissa meg a szervert.

Az OpenVPN már elérhető a hivatalos Ubuntu csomagtárolóban (repository), ezért nincs szükség további hozzáadásra.

Gépelje be a következőt:

$ sudo apt update
$ sudo apt install openvpn

Ezt követően az OpenVPN sikeresen telepítve lesz a kiszolgálón.

Az EasyRSA telepítése

Folytassa az EasyRSA letöltésével a szerverre és a CA-ra, mindkét gépen gépelve az alábbiakat:

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

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

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

A fájlnév a letöltött verziótól függően eltérő lehet.

A szerver konfigurálása

A szerver konfigurációjának befejezéséhez írja be:

$ 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" nevet (a "dh dh.pem" szükséges).

  • Keresse meg a "felhasználó" és a "csoport" részt, és távolítsa el a ";" karaktert a sorok kikommentálásához.

Az EasyRSA konfigurálása a CA-n

Az EasyRSA telepítése után létrejött egy hitelesítésszolgáltató 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

Távolítsa el a "#" jelet az alábbi ábrán látható utasításoknál:

EasyRSA Variables

Indítsa el az "easyrsa" szkriptet a Public Key Infrastructure (PKI) 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: publikus CA-tanúsítvány, amelyet a szerverek és a kliensek használnak, kölcsönösen értesítve egymást, hogy ugyanazon megbízható hálózat részei.

  • ca.key: privát kulcs, amelyet a CA gép használ a kulcsok és tanúsítványok aláírására a szerverek és a kliensek számára. Ezt a fájlt csak a CA számítógépen kell tárolni (amelyhez harmadik felek nem férhetnek hozzá), különben a hálózat biztonsága veszélybe kerülhet.

Meg kell adnia egy nevet. Hagyja üresen, és nyomja meg az Enter billentyűt.

Szerveroldali tanúsítvány kérése a CA-tól

Most, hogy a CA-gép konfigurálva van, kérje meg a szervert, hogy hozzon létre egy privát kulcsot és egy tanúsítványkérést, és küldje el őket a CA-gépre, hogy aláírja ezeket:

$ cd ~/EasyRSA-3.0.4
$ sudo ./easyrsa init-pki
$ sudo ./easyrsa gen-req server nopass
  • server: a gép neve. Az egyszerűség kedvéért hagyja el a "szervert", hogy később elkerülje a többi módosítást.

Ezzel létrehozott egy privát kulcsot a kiszolgálóhoz és a "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 számítógépre:

$ sudo scp ~/EasyRSA-3.0.4/pki/reqs/server.req [email protected]_CA_ip:/tmp

A tanúsítvány létrehozása és aláírása

Az EasyRSA mappában lévő CA-n importálja az éppen másolt fájlt, és írja alá:

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

Írja be az „yes” lehetőséget, és nyomja meg az Enter billentyűt.

Az aláírt tanúsítvány és a ca.crt átvitele a VPN szerverre az alábbi szerint történhet:

$ sudo scp pki/issued/server.crt [email protected]_server_ip:/tmp
$ sudo scp pki/ca.crt [email protected]_server_ip:/tmp

Ezután másolja a megfelelő könyvtárakban kapott fájlokat a kiszolgálóra:

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

​Hozzon létre egy erős cserekulcsot a Diffie-Hellman alapján.

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

Másolja a létrehozott fájlokat az "/ 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/

A kliens gép konfigurálása

Hozzon létre egy mappát a kliens tanúsítványainak és kulcsainak tárolására (mivel ez az útmutató csak egy klienst mutat be, itt hívják „kliens1” -nek, de a műveletet minden kliensnél meg kell ismételni, eltérő névvel).

$ 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 szabványnév elfogadásához nyomja meg az Enter billentyűt.
Másolja a klisen kulcsát az előzőleg létrehozott mappába
$ sudo cp pki/private/client1.key ~/client-configs/keys/

Küldje el a kliens1.req fájlt a CA számítógépre.

$ sudo scp pki/reqs/client1.req [email protected]_CA_IP:/tmp

​​Importálja a hitelesítési kérelmet a CA-n:

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

Írja be az "yes" értéket az aláírás engedélyezéséhez. A tanúsítványt az alábbi módon küldheti el a szerver gépnek:

$ sudo scp pki/issued/client1.crt [email protected]_SERVER:/tmp

Másolja a következő fájlokat a szerveren 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 lépéssel a szerver és a kliens tanúsítványait, valamint kulcsát is elkészítettük.

Az IP útválasztás és a tűzfal konfigurálása

 Az IP továbbítási szabályok módosítása::

$ sudo nano /etc/sysctl.conf

Keresse meg a "net.ipv4.ip_forward" szakaszt, és távolítsa el a "#" szót, hogy az utasítás "ne kommentálódjon"

 Az ügyfélkapcsolatok helyes irányításához változtasson néhány tűzfalszabályon.

$ sudo ip route | grep default

Tárolja a nevet a "dev" után (az eth0 név alatt az alábbi ábrán)

Network Interface

$ sudo nano /etc/ufw/before.rules

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

OpenVPN Rules

Mentés és kilépés.

$ sudo nano /etc/default/ufw

Cserélje ki a "DEFAULT_FORWARD_POLICY" paraméter értékét az "ACCEPT" értékre.
Adja hozzá az 1194-es portot az UDP forgalomhoz.

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

$ sudo systemctl status openvpn

Ha minden jól ment, akkor az alábbi képernyőhöz hasonlót kell látnia.

OpenVPN Service Status

Állítsa be a szolgáltatást 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" szekciót, és győződjön meg arról, hogy "remote IP_Server 1194"-t látja.

  • IP_Server: írja be a szerver IP-jét.

  • 1194: a korábban kiválasztott port.

Keresse meg a "proto" szakaszt, hogy megbizonyosodjon arról, hogy a szerver UDP-re van-e állítva (a TCP sor egy ";" -rel van kommentálva).

Keresse meg a "felhasználó" és a "csoport" részt, és távolítsa el a ";" hogy ne legyen "komment".

Keresse meg a "ca.crt" - "client.crt" - "client.key" - "ta.key" szakaszokat, és kommentálja őket "#" karakterrel minden sor elején.

Keresse meg a "cipher" részt, és adja hozzá az "auth SHA256" utasítást az "cipher AES-256-CBC" alatt.

Bármely ponton adhatja hozzá az "key-direction 1" utasítást.

Adja hozzá ezeket a kommentált sorokat bármikor. Ha a kliens Linux gép, akkor ne legyenek "kommenálva".

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

Mentés és kilépés.

Konfiguráció generálása a kliensek számára

Hozzon létre egy parancsfájlt a szerveren a kliens konfigurációjának automatikus összeállításához.

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

Másolja és illessze be a 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 a fájlt és tegye futtathatóvá.

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

Próbálja meg most létrehozni a "kliens1" konfigurációját.

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

Létrejön egy „client1.ovpn” nevű fájl.

Most továbbítsa ezt a fájlt a használni kívánt eszközre. Ezt a VPN szoftver fogja használni a kapcsolathoz.

Kliens-tanúsítványok visszavonása

$ cd EasyRSA-3.0.4/
$ sudo ./easyrsa revoke client1
  • client1: annak az ügyfélnek a neve, akinek az engedélyeket vissza kell vonni

A megerősítéshez írja be az "yes" szót.
Hozza létre a crl.pem fájlt és küldje el a szervernek.

$ sudo ./easyrsa gen-crl
$ sudo scp ~/EasyRSA-3.0.4/pki/crl.pem [email protected]_Server:/tmp

Frissítse a szervergép konfigurációját a visszavonás ellenőrzése céljából.

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

A fájl végére írja be a "crl-check crl.pem" lehetőséget.

Mentés és kilépés.

$ sudo systemctl restart [email protected]

Indítsa újra a szervert a változások végrehajtásához.