OpenVPN-kiszolgáló beállítása Ubuntu 20.04-en

Végső útmutató a biztonságos OpenVPN-kiszolgáló beállításához az Ubuntu 20.04 rendszeren

A virtuális magánhálózat (VPN) lehetővé teszi, hogy biztonságosan és privát módon csatlakozzon egy távoli magánhálózathoz, például az irodai hálózathoz vagy az internethez oly módon, mintha közvetlenül egy magánhálózathoz csatlakozna.

A VPN szerver-kliens architektúrában működik. A VPN-kiszolgáló egy gépen van telepítve, és nyilvánosan elérhető az interneten keresztül. A VPN-kiszolgáló konfigurálható úgy, hogy lehetővé tegye a csatlakozást egy privát LAN-hoz, például egy irodai hálózathoz, vagy engedélyezze az internethez való csatlakozást. A felhasználó a helyi gépén lévő VPN-kliens segítségével csatlakozik a VPN-kiszolgálóhoz. A VPN-kiszolgáló és az ügyfél közötti kommunikáció biztonságos alagútkezelési protokoll használatával történik. Az internet számára úgy tűnik, hogy a forgalom célpontja a VPN-kiszolgáló; azonban a forgalom a szerveren keresztül jut el a klienshez.

A VPN-nek számos felhasználási módja van a mindennapi életben, például biztonságos csatlakozás egy nyilvános Wi-Fi hálózathoz, amely gyakran veszélybe kerül, vagy megkerüli bizonyos webhelyeken a földrajzi korlátozásokat azáltal, hogy a webhely által engedélyezett országban található VPN-hez csatlakozik.

Az OpenVPN egy széles körben használt VPN-megvalósítás, amely konfigurációk és lehetőségek széles skáláját teszi lehetővé. Secure Sockets Layer (SSL) protokollt használ az adatok és az előre megosztott kulcsok, felhasználónév/jelszó vagy tanúsítványok titkosításához a VPN-kliens hitelesítéséhez. Ebben a cikkben látni fogjuk, hogyan állíthat be VPN-kiszolgálót és VPN-klienst az Ubuntu 20.04-en.

Telepítés

Az OpenVPN a csomagban található hivatalos Ubuntu-tárolókban érhető el openvpn. Ez a csomag telepíti az OpenVPN szervert és a klienst is.

sudo apt install openvpn

Mint korábban említettük, az OpenVPN SSL-tanúsítványokat használ a szerver és a kliens közötti adatok titkosításához. Be kell állítanunk saját tanúsító hatóságunkat (CA) a VPN tanúsítványok kiadásához. Vegye figyelembe, hogy ezt egy másik gépen kell beállítani, mint amelyen az OpenVPN be van állítva; ennek az az oka, hogy ha ugyanazon a szerveren van, és ha feltörik, a támadó hozzáférhet a privát kulcshoz, és így megtámadhatja a VPN-kapcsolatot.

A tanúsító hatóság beállításához az „Easy-RSA” nevű eszközt fogjuk használni. A telepítéshez futtassa a következőket a CA gépen, az OpenVPN kiszolgáló gépen és a kliens gépen, mivel a hitelesítésszolgáltató beállításához mindhárom konfigurációra szükség van.

sudo apt install easy-rsa

Most először konfiguráljuk a hitelesítésszolgáltatót a hitelesítésszolgáltató gépen, és végrehajtunk néhány szükséges konfigurációs lépést az Open VPN szerver gépen.

A tanúsító hatóság beállítása

Kezdeti beállítás a CA gépen

Most ez a csomag telepít egy parancsot make-cadir amely mappa létrehozására szolgál a tanúsító hatóság konfigurációjához. Ezzel hozzunk létre egy mappát, és írjuk be a mappát.

make-cadir cert_authority && cd cert_authority

Nyissa meg a nevű fájlt vars létrehozva ebben a könyvtárban. Ez a fájl tartalmaz néhány konfigurációs változót, amelyeket módosítanunk kell. A módosítandó értékek a 91-96. sorokban találhatók, a kb. megjegyzés után Szervezeti területek amely ezeket a mezőket írja le. Törölje a sorok megjegyzését, és töltse ki a megfelelő értékeket a mintaértékek helyére.

Mentse el és lépjen ki a fájlból. Ha vim szerkesztőt használ, nyomja meg a gombot Kilépés, típus :wq és nyomja meg Belép menteni és kilépni.

Ezután futtatjuk a easyrsa program a könyvtárban a nyilvános kulcsú infrastruktúra (PKI) beállításához, amelyet a nyilvános kulcs és a tanúsítványok generálására használnak majd.

./easyrsa init-pki

A következő lépésben létrejön a CA-kulcs és a tanúsítvány. Amikor a parancs jelszót kér, adjon meg egy jelszót a CA-kulcshoz. Adjon meg egy általános nevet is, amikor a rendszer kéri. Ha ezt üresen hagyja, a rendszer az alapértelmezett Easy-RSA CA nevet fogja használni.

./easyrsa build-ca

Amint a kimenetből láthatjuk, a tanúsítvány és a kulcs létrejött. Ez a kulcs a kliens és a szerver tanúsítványainak aláírására szolgál, ezért soha nem szabad megérinteni/módosítani.

Most megvan a PKI beállítása. A következő lépés egy szerverkulcs és tanúsítvány létrehozása a gépen, amelyet OpenVPN szerverként fogunk használni. Ezt a tanúsítványt később a CA gép írja alá.

Szerverkulcs és tanúsítvány generálása a kiszolgáló gépen

Az Easy RSA-t már telepítettük a szervergépre. Most hajtsa végre a három lépést a szervergépen, amit korábban a CA gépen hajtottunk végre, ti. segítségével létrehoz egy CA-könyvtárat make-cadir és belemenni, módosítani a változókat a vars fájl és PKI generálása segítségével ./easyrsa init-pki parancs.

Ezután le kell futtatnunk a parancsot a szervertanúsítvány-kérelem és -kulcs generálásához.

./easyrsa gen-req szerver nopass

Vegye figyelembe, hogy átmentünk a lehetőség mellett nopass hogy a parancs ne kérjen jelszót a kiszolgálókulcshoz. Továbbra is kérni fog egy általános nevet a kiszolgálónak, amit beírhat, vagy üresen hagyhatja az alapértelmezett nevet (szerver) használt.

Helyezze át a generált kulcsfájlt a /etc/openvpn Könyvtár.

sudo mv pki/private/server.key /etc/openvpn

Küldje el a tanúsítványkérelmet a CA-gépnek. A parancsot fogjuk használni scp erre a célra.

scp pki/reqs/server.req user@CA_MACHINE_HOSTNAME:/könyvtár

A fenti képernyőképen a 45.79.125.41 gazdagép a CA gép. A tanúsítványt a /root könyvtárba másoltuk.

Most a szerver tanúsítványát átmásoltuk a CA-gépre. A következő lépés az, hogy vissza kell menni a CA-géphez, és alá kell írni ezt a tanúsítványt.

A szervertanúsítvány aláírása a CA-ban

Először is ellenőrizzük, hogy a kiszolgálóról származó tanúsítványkérő fájlt átmásolták-e a CA-gépre. Menjen abba a könyvtárba, ahová a fájlt másoltuk (a példámban /root), és futtassa ls.

:~# cd /root && ls cert_authority server.req

Mint látjuk, a fájl szerver.req jelen van. Ezután lépjen a CA-könyvtárba, és importálja ezt a kérést.

cd cert_authority ./easyrsa import-req /root/server.req szerver

A kérelem aláírásához futtassa a következő parancsot.

./easyrsa sign-req szerver szerver

Itt az első argumentum a kérés típusa, azaz szerver, a második argumentum pedig a szervergép általános neve, amelyhez korábban az alapértelmezett értéket használtuk, azaz szerver.

Írja be a kifejezést Igen, és a CA-kulcs jelszavát, amikor a rendszer kéri.

Most már eltávolíthatjuk a tanúsítványkérő fájlt, és visszamásolhatjuk a szerverhez generált tanúsítványt, valamint a CA nyilvános tanúsítványát a szervergépre.

rm /root/server.req scp pki/issued/server.crt [email protected]:/root scp pki/ca.crt [email protected]:/root

Ezután még néhány lépést kell végrehajtanunk a VPN biztonságos kapcsolatának biztosítása érdekében.

DH paraméterek generálása

A DH (Diffie-Hellman) kulcscsere egy olyan algoritmus, amely biztosítja a titkosítási kulcsok biztonságos cseréjét egy nem biztonságos csatornán. Először helyezzük át a kapott tanúsítványt és a CA nyilvános tanúsítványt ide /etc/openvpn.

mv /root/ca.crt /root/server.crt /etc/openvpn

Lépjen a kiszolgáló gép CA mappájába, és futtassa a következő parancsot a DH paraméterek generálásához. Előfordulhat, hogy sokáig tart a generálás.

./easyrsa gen-dh

Most helyezze át a generált fájlt ide /etc/openvpn.

mv /root/cert_authority/pki/dh.pem /etc/openvpn

TA kulcsok generálása

Az OpenVPN egy másik további biztonsági intézkedést használ a TLS hitelesítési kulcs használatával. A TLS hitelesítési kulcs létrehozásához futtassa:

openvpn --genkey --secret tls_auth.key

És mozgassa a kulcsot /etc/openvpn.

mv tls_auth.key /etc/openvpn

A kiszolgálókulcs-konfiguráció és a tanúsítványkibocsátó beállítása most megtörtént. Most térjünk át a VPN-kiszolgáló tényleges konfigurációjára.

OpenVPN-kiszolgáló konfigurációja

Az OpenVPN szerver konfigurációs fájlja nem jön létre automatikusan, de használhatunk egy sablon konfigurációs fájlt a openvpn csomag.

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz

Nyissa meg a fájlt a vim vagy bármely tetszőleges szerkesztő segítségével.

cd /etc/openvpn vim server.conf

Meg kell adnunk a korábban generált kulcsok és tanúsítványok általános neveit. Ugrás a 2. sorra. 78. Mivel az összes alapértelmezett nevet használtuk, változatlanul hagyjuk őket. Ezután ellenőrizze a DH paraméter fájl nevét a 85. sorban. A dh.pem nevet használtuk, ezért változtassuk meg.

Ezután módosítsuk az OpenVPN-kiszolgáló jogosultságait. Menjen a 274-es és 275-ös sorra, és távolítsa el a bevezetőt ; hogy törölje a megjegyzést.

Hasonlóképpen lépjen a 192. sorra, és távolítsa el a pontosvesszőt. Ez az irányelv lehetővé teszi, hogy az összes kliens forgalma áthaladjon a VPN-en.

Mentse el és lépjen ki a fájlból.

Módosítsa az /etc/openvpn mappa tulajdonjogát root-ra.

sudo chown -R root:root /etc/openvpn

Hálózat és tűzfal beállítása

Engedélyeznünk kell az IP-továbbítást a szerveren, hogy lehetővé tegyük a csomagok továbbítását a VPN-klienstől és a VPN-kliens felé. Megjegyzés 28. sor bekapcsolva /etc/sysctl.conf:

Mentse el és lépjen ki a fájlból.

Újrakezd systemctl hogy ezek a változások megtörténjenek.

sudo sysctl -p

Be kell állítanunk a hálózati címfordítást (NAT) a szerveren egy UFW tűzfal segítségével, hogy lehetővé tegyük a VPN-kliens számára az internet elérését a VPN-kiszolgáló IP-címével. Először is engedélyezzük a csomagtovábbítást a tűzfalkonfigurációban. Nyisd ki /etc/default/ufw és módosítsa a 19. sorban lévő változót ELFOGADÁS-ra.

Mentse el és lépjen ki a fájlból.

Most adja hozzá a következő szabályokat a fájlhoz /etc/ufw/before.rules előtte szűrő sort a fájlban.

*nat :POSTROUTING ELFOGADÁS [0:0] -A POSTROUTING -s 10.8.0.0/8 -o -j MASQUERADE COMMIT

A helyére írja be a hálózati interfészt . A paranccsal láthatja a hálózati interfészt ifconfig.

Engedélyezze a forgalmat az OpenVPN szolgáltatás számára a tűzfalon, és engedélyezze az 1194-es portot.

sudo ufw engedélyezi az openvpn-t && sudo ufw engedélyezi az 1194-et

Töltse be újra a tűzfal szolgáltatást.

sudo ufw újratöltés

Most újraindíthatjuk az Open VPN szerver démont a következő futtatásával:

sudo service openvpn újraindítás

Engedélyezze az indulást a rendszerindításkor a következő futtatással:

sudo systemctl engedélyezi az openvpn-t

Az OpenVPN szerver konfigurálása megtörtént és elindult. Most folytassuk az ügyféltanúsítvány-kérelmet, a kulcsgenerálást és az egyéb konfigurációkat.

OpenVPN-kliens konfigurációja

Kulcsot és tanúsítványkérést kell generálnunk az ügyfél számára. Ehhez ugyanaz az eljárás, mint a szerver esetében.

Bár a kliensgépen létre lehet hozni egy klienskulcsot és tanúsítványkérést, majd át lehet vinni a hitelesítésszolgáltató gépre, ajánlatos a szervergépen létrehozni. Ennek a szerveren való megtételének az az előnye, hogy létrehozhat egy szkriptet az összes szükséges lépés végrehajtásához a szerveren, ami megkönnyíti az új kliensek VPN-hez való csatlakozását.

Lépjen a kiszolgáló CA mappájába, és futtassa a következőt:

cd ~/cert_authority ./easyrsa gen-req kliens nopass

A korábbiakhoz hasonlóan adjon meg egy általános nevet, amikor a rendszer kéri, vagy hagyja üresen az alapértelmezett általános név használatához, pl. ügyfél.

Most másoljuk a generált ügyféltanúsítvány-kérelmet a CA-gépre.

scp pki/reqs/client.req [email protected]:/root

Importáljuk ezt a kérést a CA gépre:

./easyrsa import-req /root/client.req kliens

És most írjuk alá:

./easyrsa sign-req kliens kliens

BelépIgen amikor a rendszer felszólítja a folytatásra. Amikor kérik, írja be a CA-kulcs jelszavát.

Most már eltávolíthatjuk a kért fájlt az ügyfél számára, és visszamásolhatjuk a kérést a VPN-kiszolgáló gépére.

rm /root/client.req scp pki/issued/client.crt [email protected]:/root

Hozzunk létre egy mappát, melynek neve ügyfél hogy a klienshez kapcsolódó összes fájl a VPN-kiszolgálón maradjon. Ebbe a mappába helyezzük át az ügyfélkulcsot és a tanúsítványt.

mkdir ~/client sudo mv ~/client.crt ~/cert_authority/pki/private/client.key ~/client

Most hozzunk létre egy konfigurációs fájlt egy elérhető sablonból, hasonlóan ahhoz, ahogyan a kiszolgáló konfigurációs fájlját hoztuk létre.

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

Nyissa meg a fájlt client.conf. A 42. sorban adja meg a kiszolgáló gépének gazdagépnevét vagy IP-címét a helyett my-server-1.

Törölje a 61. és 62. sor megjegyzéseit a bevezető pontosvessző eltávolításával, hogy csökkentse a fájl jogosultságait.

Ezt követően kommentálja a 88-90. és a 108. sort. Ennek az az oka, hogy az említett fájlok tartalmát manuálisan szeretnénk hozzáadni a fájlhelyek használata helyett. Ennek az a célja, hogy a kliens konfigurációs fájlja később átkerüljön a kliensbe, ahol tulajdonképpen nem lesz ügyfélkulcs- és tanúsítványfájlunk; ezért magában a konfigurációs fájlban lévők tartalmát másoljuk.

Adja hozzá a következőket az ügyfél konfigurációs fájljához. Adja meg a megfelelő fájlok fájl tartalmát a megadott címkéken belül.

 # A ca.crt fájl tartalmának beillesztése ide # A client.crt fájl tartalmának beillesztése ide # A client.key fájl tartalmának beillesztése ide kulcs-irány 1 # A tls_auth.key fájl tartalmának beillesztése ide 

Mentse el és lépjen ki a fájlból. Nevezze át ezt a fájlt erről: client.conf nak nek client.ovpn, mivel ez utóbbi a hálózati konfigurációként importálható konfigurációs fájlok kiterjesztése.

Most vigye át a fájlt client.ovpn a kliensnek, azaz a helyi gépnek.

Fuss scp az ügyfélgépen, hogy fájlokat vigyen át a kiszolgáló gépről a helyi gépre.

scp felhasználó@szerver_ip:/fájl_útvonala helyi_cél_útvonal

Végül ezt a konfigurációs fájlt kell használnunk a VPN-kiszolgálóhoz való csatlakozáshoz. Ez mind parancssoron, mind GUI-n keresztül megtehető.

A VPN-kliens parancssorból való indításához futtassa:

sudo openvpn --config client.ovpn

És ez az egyetlen parancs, amelyet le kell futtatnia a VPN-kliens elindításához.

A VPN-kliens grafikus felhasználói felületen keresztüli indításához hajtsa végre a következő lépéseket.

Nyissa meg a Beállítások » Hálózat menüpontot az ügyfélgépen.

Kattintson a + gombot a VPN részben, és válassza az „Importálás fájlból…” lehetőséget a lehetőségek közül.

Kattintson a „Hozzáadás” gombra a VPN használatának megkezdéséhez.

Vegye figyelembe, hogy az „Átjáró” alatt ez a szerver IP-címe.

Végül kapcsolja be a „kliens VPN” gombot, hogy engedélyezze a VPN-t a gépen.

A VPN-kapcsolat létrehozása eltarthat néhány másodpercig. A VPN új folyamatlogója jelenik meg a képernyő bal felső sarkában, miközben a beállítás folyamatban van, és a beállítás után VPN-logóvá változik.

A VPN megfelelő működésének ellenőrzéséhez futtassa a következőt:

curl //ipinfo.io/ip

Vissza kell adnia a szervergép IP-címét. Vagy úgy is ellenőrizheti IP-címét, hogy egyszerűen rákeres a „Saját IP-címemre” a Google-on. Meg kell mutatnia a VPN-kiszolgáló IP-címét, ha VPN-beállításunk megfelelően működik.

Következtetés

Ebben a cikkben láthattuk, hogyan konfigurálhat egy OpenVPN-kiszolgálót, egy tanúsító hatóságot és egy OpenVPN-klienst. Ha további klienseket szeretnénk hozzáadni a VPN-hez, akkor most követnünk kell a tanúsítvány létrehozásának és aláírásának eljárását az ügyfél számára, és ugyanazt a konfigurációs fájlt kell használnunk, amelyet itt készítettünk, csak az ügyfélkulcsot és a tanúsítványértékeket módosítva.

Lassabb internetkapcsolatok esetén előfordulhat, hogy ha UDP-t használnak a kommunikációhoz, akkor jelentős csomagvesztés lép fel. A felhasználó a sor megjegyzéseinek törlésével válthat TCP-re proto tcp és kommentálja a sort proto udp a szerver konfigurációs fájljában.

Egyéb hibák esetén is beállíthatja a naplózási szintet a ige direktívát mind a szerver, mind a kliens konfigurációs fájljaiban. 0 és 9 közötti értékeket adhat meg. Minél magasabb ennek az irányelvnek az értéke, annál részletesebb lesz a napló.