WireGuard VPN a mindennapokra

Itt a megoldás, ha távolról szeretnénk elérni erőforrásainkat vagy gépeket szeretnénk titkosítva összekötni. – írta: stopperos, 2 hete

A WireGuard mint olyan

[RIOS ERROR] [RIOS ERROR]

Nem találtam Wireguarddal kapcsolatos címlapos írást itt a logouton, csak egy-két szűkebb témakörre korlátozott blog bejegyzést. Mivel újra volt Szegeden Szabad Szoftver Konferencia, ezért a témában megtartott ismertető előadásom írásban rögzítem. Azt előre leszögezem, hogy ez nem egy teljes bemutató: nem foglalkozom tűzfal beállításokkal és bonyolultabb konfigurációs beállításokkal. Az írás csak figyelemfelkeltő és kedvcsináló akar lenni, hogy az elindulást segítse. De akkor vágjunk is bele!

Biztos találkoztatok már azokkal a reklámokkal, amik különböző VPN szolgáltatásokat próbálnak rátukmálni a felhasználókra. Azt ígérve, hogy ez majd megvédi őket a kormányok és a szolgáltatók árgus szemeitől, vagy pedig a kedvenc streaming szolgáltatójuk geo-blokkolt tartalmaihoz fognak majd hozzáférni. Egy kormány bármikor ráküldheti a VPN szolgáltatóra nyomozóit, hogy a forgalmadat lehallgassák. A VPN szolgáltató pedig együtt fog működni, még ha azt is reklámozza, hogy ő nem tárol rólad semmit. A geo blokkolt tartalmak elérése pedig csak addig fog működni, amíg a szolgáltató IP cím tartományát ki nem tiltják.

Egy VPN, vagy Virtuális Privát Hálózat a valóságban ennél sokkal egyszerűbb, de sokkal több is. A nyilvános hálózaton (internet) tudjuk eszközeinket összekapcsolni, vagy pedig egy úton lévő eszközünk tud egy belső céges hálózat része maradni és például feladatot küldeni a nyomtatóra. A titkosítás és a kilépési végpontok elhelyezése az csak egy pozitív mellékterméke a hálózatnak és a forgalom irányításnak.

Személyesen én akkor kezdtem el foglalkozni VPN-ekkel, amikor hozzá akartam férni családtagjaim eszközeihez, hogy tudjak nekik segítséget nyújtani, ha kérdésük van. Szükségem lenne x programra, miért nem töltődnek le a levelek Thunderbirdben, ... Valamint szerettem volna az általam kezelt eszközöket egy menedzsment hálózatba rendezni, hogy bárhol is legyenek, mindig el tudjam őket érni, és a biztonsági mentéseket ezen keresztül elkészíteni. Az utóbbi időben pedig a nyilvános SSH portokat is megszüntetem, ahogy a kiberháború fokozódik:


Az ábra egy internetre kilógatott Raspberry Pi-t ért SSH bejelentkezéses támadások számát mutatja. Szerencsére dolgozik a fail2ban és tiltja az IP címeket. Az így készülő listát pedig az általam kezelt gépek tiltólistáinak frissítéséhez használom fel. A grafikon természetesen munin segítségével készült

Korábban OpenVPN-t használtam, azonban azt már ideje volt leváltani, mert sok hálózati interfész "megakadás" és elhalálozás miatt bizonytalan volt a hálózat. S bár az OpenVPN-nél megoldott a kulcsok központi kezelése, az ingyenes verzió csak egy processzor-szálon fut (a forgalomirányítás és a csatlakozási kísérlet ellenőrzése nincs különválasztva). Több felhasználó esetén, ha valaki csatlakozni akar a hálózathoz, akkor a hitelesítési folyamat az összes forgalmat 3-4 másodpercre megakasztja. S bár sok hálózati eszközt gyártó cég támogatja, a gyengébb OpenWRT kompatibilis eszközökre (TPLink TL-WR[740, 741, 841, 941] ) fel sem lehetett már tenni a hely szűke miatt. Pedig ezek az eszközök még simán használhatók maradnak gyári támogatásuk megszűnése után is. Sőt saját OpenWRT 21.02.3-at is sikerült fordítani rájuk wireguard és muninlite támogatással.

A régit leváltandó új megoldást egy hírverés során találtam meg:

A fenti levél a Linux kernel levelező listájáról van, és azon ritka alkalmak egyike, amikor a Linus, a kernel atyja valamiről pozitívan nyilatkozik. Ilyen amikor negatívan nyilatkozik. De talán értettek a szép szóból. Sőt, a kernelbe küldött Wireguard forráskódot egyenesen műremeknek nevezi! Amiről így nyilatkozott, az a Jason A. Donenfeld által létrehozott és fejlesztett WireGuard nevű biztonságos hálózati alagút (vagyis VPN). De mi is ez a WireGuard?

* A szerző az OpenVPN és az IPsec leváltására tervezte.
* Az OSI modell szerinti 3. rétegben működik IPv4 és IPv6 támogatással.
* Csak UDP protokollt használ, hogy a tűzfalakon könnyen átjusson, illetve hogy elkerülje az OpenVPN TCP over TCP förmedvényét.
* Az SSH-hoz hasonló privát és publikus kulcsos hitelesítési módszert használ.
* Csupán 6000 sornyi kódból és megjegyzésből áll a Linux kernelben (minden mást a kernelből újrahasznál vagy hív meg), hogy egyszerű maradjon és könnyen lehessen auditálni.
* Az operációs rendszer számára egy hálózati csatolóként fog megjelenni (eth0, wlan0, ..., wg0), aminek így az az érdekessége, hogy a megszokott módon tudunk rá tűzfal szabályokat (iptables, nftables, pf, ...) alkalmazni, valamint névterekhez lehet hozzárendelni (pl. azt szeretnénk hogy egy bizonyos docker konténer férjen csak hozzá a WireGuard hálózathoz).
* Nem válaszol ismeretlen csomagokra (ddos-t el lehet vele kerülni), és csak olyan csomag fog a hálózati csatolón megjelenni az alagút túloldalán, amelynél a forrás IP és a titkosítási kulcs is megfelelő. Ezt hívják kriptokulcs alapú forgalom irányításnak.

* A Linux kernelben az 5.6-os verziótól elérhető a WireGuard, de a 3.10-es verzióig visszamenőleg is telepíthető és használható. Ubuntu 16.04 óta megtalálható forrásból fordított modulként, de 20.04 óta már az Ubuntu kernel része.
* OpenWRT-ben 17.01-óta elérhető és Luci támogatás is van rá. Sőt még a 4/32-es eszközökre is ráfér ha valaki saját maga fordítja a 19.07-et vagy a 21.02-t.
* FreeBSD 12.1-RELEASE óta megtalálható a Ports-ban, illetve 13.1-RELEASE-től pedig kernel szintű támogatást is fog kapni. A 13.0-RELEASE-ben volt egy fiaskó, ami miatt újra kellett írni az egész FreeBSD WireGuard kódot.
* OpenBSD-re 6.8 óta elérhető kernel szinten.
* Windows 10 és 11 támogatás is megoldott NT kernel szinten 2020 novembere óta. Korábban csak userspace szinten futott.
* Androidra a Play Store-ból elérhető, de ez userspace-ben fut. Root-olt telefon és megfelelő kernel esetén az applikáció átvált a kernel driverre. #7
* A gyümölcsös világról én nem nyilatkozom, de #6

A cikk még nem ért véget, kérlek, lapozz!

Előzmények