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:
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
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 user@your_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 user@your_server_ip:/tmp
$ sudo scp pki/ca.crt user@your_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 user@your_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 utente@IP_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)
$ 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.
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.
Á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.
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
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 user@IP_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 openvpn@server
Indítsa újra a szervert a változások végrehajtásához.