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