OpenVPN Szerver 5 perc alatt

A bejegyzésből megtudhatod, hogy hogyan telepíts és konfigurálj néhány perc alatt egy teljes értékű- és abszolút biztonságos vpn kapcsolatot.

Az OpenVPN Szerver telepítés

Töltsük le a telepítő scriptet, majd indítsuk el a telepítést

wget https://git.io/vpn -O openvpn-install.sh

Tegyük futtathatóvá

chmod a+x openvpn-install.sh

Futtatás

./openvpn-install.sh

A telepítés folyamán a következő adatokat kell megadnunk:

  • Válasszuk ki a szerver IP címét
  • Adjuk meg a port számot, alapértelmezés: 1194
  • DNS szerver kiválasztása
  • Kliens neve (Automatikusan létrehozza az első kliens konfigurációját)

A script futtatásához meg kell nyomnunk egy tetszőleges gombot. A telepítés és konfigurálás automatikusan lezajlik. Ezze a VPN szerver szolgáltatás telepítése be is fejeződött. A kliens konfig a .ovpn kiterjesztéssel megtalálható a rendszeren.

Túzfal beállítása

Ahhoz hogy csatlakozni tudjunk a szerverhez kívülről tűzfal használata esetén néhány beállítás szükséges. IPTables használata esetén a következő beállítás szükséges

nano /etc/rc.local

Adjuk meg a szükséges szabályokat

iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -I INPUT -p udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to <szerver ip>

Amennyiben az ufw -t használjuk a tűzfal szabályok kezelésére, a következő utasítások- és beállítások kellenek. Én az IspConfig-ot használom a szerver menedzselésére, érdekes módon itt elegendő a 1194-es port- és a címfordítás engedélyezése, és a tűzfal egyéb beállításai nélkül is működik az openvpn szolgáltatás. Még nem néztem utána, hogy az IspConfig által generált tűzfal szabályok miként engedélyezik a kliens NAT-olását a külvilág felé. Tehát IspConfig esetén a before.rules konfiguráció módosítása kihagyható.

ufw allow 1194/udp

Konfiguráció

nano /etc/ufw/before.rules

Adjuk hozzá az állomány megfelelő részéhez a következő beállításokat

[...]
*filter
[...]
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source  <szerver ip>
[...]
# ok icmp code for FORWARD
-A ufw-before-forward -m state --state RELATED,ESTABLISHED -j ACCEPT #Csak ha még nem szerepel ez a szabály fentebb
-A ufw-before-forward -s 10.8.0.0/24 -j ACCEPT
-A ufw-before-forward -i tun+ -j ACCEPT
-A ufw-before-forward -i tap+ -j ACCEPT

Engedélyezzük a címfordítást

nano /etc/ufw/sysctl.conf

Keressük meg az alábbi szekciót és vegyük ki a kommentet

net/ipv4/ip_forward=1

Aktualizáljuk a tűzfal szabályt

ufw reload

Elkészültünk, nincs más dolgunk, mint a klienst telepíteni a rendszerünkre, ami lehet Windows, vagy Linux Desktop. Az OpenVPN GUI innen érhető el.

Új kliens

Amennyiben új klienset szeretnénk felvenni, nincs más dolgunk, mint a telepítő scriptet elindítani. Felismeri, hogy a szolgáltatás már fut, és új- a telepítéstől eltérő menü jelenik meg, melynél kiválasztható az új kliens hozzáadásának lehetősége.

Kiegészítés

A script által generált server.conf állomány kiegészítésre szorul. Egyrészt az openvpn szerver 2.5 előtti verziói a cipher BF-CBC beállítást preferálták, azonban kiderült, hogy a BlowFish – kellő elfogott csomagszám esetén – ma már törhető. Így érdemes ezt átállítani a cipher AES-256-CBC rejtjelezésre, amely jelenleg biztonságos. Második lépésként szintén egészítsük ki a konfigurációt, szúrjuk be a következő sort: data-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC:BF-CBC. A jövőben a cipher kivezetésre kerül, az új direktíva veszi át a szerepét. Amint látható itt azt soroljuk fel, hogy mely rejtjelezési módokat támogassa az openvpn szerverünk. A kliens konfigurációból már a cipher utasítást ki is vehetjük és csak ez kerüljön bele: data-ciphers-fallback AES-256-CBC. Értelemszerűen ezzel azt adtuk meg, hogy a kliens a szerver által támogatottak közül az: AES-256-CBC rejtjelezést szeretnénk használni. Ezt a kiegészítést 2021. 12. 12.-én írtam, az általam használt openvpn szerver 2.5.4 -es verziójú.

Windows Kliens

OpenVPN-GUI

A Windows alatt használható OpenVPN kliens program a: openvpn.net címről tölthető le, azon belől is a community > download almenü alatt találhatóak az egyes verziók. Telepítést követően a:

C:\Users\<Felhasználói név>\OpenVPN\config

alkönyvtárban kell létrehozni a kliens ovpn kiterjesztésű konfigurációs állományát, melyet a fenti script legenerált. Amennyiben ezzel megvagyunk, manuálisan már tudunk csatlakozni a VPN szerverünkhöz.

OpenVPN-Connect

Az OpenVPN Connect arra szolgál, hogy Windows alól automatikusan tudjunk kliensként csatlakozni egy OpenVPN szerverhez. A szoftver használata rendkívül egyszerű, külön bemutatást nem igényel.

Linux Kliens

Linux alatt telepítsük fel az openvpn szolgáltatást:

apt install openvpn

Módosítsuk az alapértelmezett beállítást:

nano /etc/default/openvpn

Keressük meg- és módosítsuk az alábbi szekciót, vegyük el a kettős keresztet:

AUTOSTART="all"

A kliens konfigurációt helyezzük el az „/etc/openvpn” könyvtárba, client.conf néven.
Majd adjuk ki az alábbi utasítást. Figyelem, mivel az OpenVPN képes  több – különböző – szerverhez kapcsolódni egy időben, így a szolgáltatás engedélyezését- és indítását a konfiguráció nevére hivatkozva kell megadni, melyet a @ utáni rész jelöl:

systemctl enable openvpn@client.service
systemctl daemon-reload
service openvpn start

Újraindítást követően a kliensnek automatikusan el kell indulnia. Arra viszont figyelni kell, ha az openvpn szerver ipv6 címet is oszt, és a kliens gépünkön az ipv6 használata le van tíltva az „/etc/sysctl.conf” állományban, akkor nem fog elindulni a szolgáltatás.