Az OpenVPN egy SSL VPN megoldás, amely kiterjeszti az OSI 2 és OSI 3 szintű biztonságos hálózatot az SSL/TLS szektorszabvány protokollt használva és konfigurációk széles skáláját fedve le. Az OpenVPN támogatja a Windows, Linux, FreeBSD, OpenBSD, macOS, iOS és Android operációs rendszerű klienseket.
Támogatja a tanúsítványokon, intelligens kártyákon és/vagy felhasználónév és jelszó hitelesítő adatokon alapuló rugalmas kliens-hitelesítési módszereket, továbbá lehetővé teszi a felhasználóknak vagy csoportoknak, hogy a virtuális VPN-re alkalmazott tűzfalszabályok segítségével valósítsák meg a hozzáférés szabályozást.
Az alábbiakban ismertetjük az általános elveket, valamint a VPN-kapcsolat OpenVPN használatával történő létrehozásához szükséges lépéseket. A Windows Server 2019 és az Ubuntu 20.04 konfigurálásához/megvalósításához szükséges példa útmutatók hivatkozásai a cikk végén találhatók.
A VPN konfigurálása gyakran magában foglalja a privát alhálózatok összekapcsolását különböző helyekről. Az IANA (Internet Assigned Numbers Authority) a következő három IP címtartományt foglalta le a magánhálózatok számára (az RFC 1918-ban meghatározva):
- 10.0.0.0 – 10.255.255.255 (prefix 10/8)
- 172.16.0.0 – 172.31.255.255 (prefix 172.16/12)
- 192.168.0.0 – 192.168.255.255 (prefix 192.168/16)
Fontos, hogy olyan címeket válasszunk, amelyekkel a lehető legnagyobb mértékben elkerülhetjük az IP címek vagy alhálózatok ütközését. A kiszolgáló hálózati konfigurációjának bizonyos szempontjait optimalizálni kell a forgalom VPN-en keresztül történő helyes irányításához:
- IP cím továbbítás - az operációs rendszer azon képessége, hogy fogadja a bejövő hálózati csomagokat egy interfészen, felismerje, hogy azokat nem magának a rendszernek szánták, hanem át kell adni egy másik hálózatnak, majd ennek megfelelően továbbítani;
- tűzfal konfigurálása - a távoli elérésű VPN kiszolgálóként működő virtuális gépen kell végrehajtani:
- SSH port;
- VPN megoldás által használt portok (például a 1194-es UDP port az előre meghatározott port az OpenVPN számára);
Fontos annak biztosítása, hogy a vDC (virtuális adatközpont) hálózaton lévő virtuális gépek kapcsolódjanak a VPN használatával, hogy a hálózati forgalom a VPN kiszolgálóhoz irányítódjon. Az egyik megoldás a one-to-many NAT megvalósítása a csatlakoztatott ügyfelek számára.
Az
OpenVPN konfiguráció létrehozásának első lépése egy PKI (nyilvános kulcsú infrastruktúra) beállítása. A PKI a következőkből áll:
- egy külön tanúsítvány (más néven nyilvános kulcs) és egy privát kulcs a szerverhez és minden klienshez;
- egy a tanúsító hatóság (CA) által kiadott tanúsítvány és kulcs, amely az egyes kiszolgálók és kliens tanúsítványok aláírására szolgál;
Az OpenVPN támogatja a tanúsítványokon alapuló kétirányú hitelesítést, ami azt jelenti, hogy a kliensnek hitelesítenie kell a szervertanúsítványt, a szervernek pedig hitelesítenie kell az klienstanúsítványt. Az OpenVPN azt javasolja, hogy a PKI-k kezelését
easy-rsa, egy a CA PKI létrehozásához és kezeléséhez használható CLI (Command-Line Interface) segítségével végezze el. A saját tanúsító hatóság konfigurálásához, valamint a tanúsítványok és kulcsok generálásához szükséges lépések az OpenVPN
dokumentációjában találhatók.
Szerver oldali megvalósítás
Az OpenVPN szerver a 1194-es portot és az UDP protokollt használja alapértelmezett beállításként a kliens kapcsolatok elfogadásához. Ha a kliens korlátozott hálózati környezetben található, és másik portot kell használni, a port és a protokoll beállításai módosíthatók. A 1194-es port az IANA által az OpenVPN-hez rendelt hivatalos portszám, de bármely 1 és 65535 közötti portszám működni fog, ha még nincs használatban a szerveren. A 443-as port a legnépszerűbb választás, mivel a tűzfalszabályok általában engedélyezik.
A konfigurációs részletek a server.conf fájlban archiválódnak, és olyan információkat tartalmaznak, mint az IP cím és a port (amelyen a kiszolgáló figyel), a szolgáltatás titkosítási listája, a szolgáltatás tanúsítványa stb.
A konfiguráció kiindulópontjaként javasoljuk a minta OpenVPN konfigurációs fájlok használatát, amelyek a következő helyen találhatók:
- az OpenVPN forrásdisztribúció sample-config-files könyvtára
- a /usr/share/doc/packages/openvpn vagy /usr/share/doc/openvpn könyvtárban található sample-config-files könyvtár, ha RPM vagy DEB csomagból van telepítve
- Start Menu > All Programs > OpenVPN > OpenVPN Sample Configuration Files Windows esetében
Ha az OpenVPN minta konfigurációs fájljait használja, egy VPN egy TUN (routed mode) virtuális hálózati interfész segítségével jön létre, amely figyeli a kliens kapcsolatokat az UDP 1194-es porton, és virtuális címeket oszt ki a kliens kapcsolathoz a 10.8.0.0/24 alhálózatról. A fent leírt könyvtárban található fájlok paramétereinek szerkesztésével ez a viselkedés megváltoztatható.
A minta konfigurációs fájlok használata előtt a ca, cert, key és dh (Diffie hellman) paramétereket úgy kell módosítani, hogy azok a PKI szekcióban generált fájlokra mutassanak. A kiszolgáló konfigurációs fájlja ezután használatra kész.
Kliens oldali megvalósítás
A következő lépések a kliens konfigurálására vonatkoznak: a tanúsítvány és a kulcspár legenerálása, valamint a kliens konfigurációs fájl létrehozása.
Az utolsó lépés a kliens konfigurációs fájljához kapcsolódik, amely megismétli a kiszolgáló konfigurációs fájljában beállított alapértelmezett direktívákat:
- A kiszolgáló konfigurációs fájljához hasonlóan először módosítsa a ca, cert, key és dh paramétereket, hogy a korábban generált fájlokra mutassanak. Vegye figyelembe, hogy minden kliensnek saját tanúsítvány/kulcspárral kell rendelkeznie. Csak a ca fájl univerzális az OpenVPN szerveren és az összes kliensen.
- Módosítsa a távoli direktívát, hogy az OpenVPN szerver állomásnevére/IP címére és portszámára mutasson: használja a nyilvános IP címet, amely a VPN kiszolgáló NAT címe.
Példák arra, hogy hogyan hozható létre VPN kapcsolat OpenVPN segítségével: