Az alagút egyik oldala olyan kulcstárhellyel írja alá a vezérlőcsatornát, amelyet a másik oldal soha nem ellenőriz, és a kapcsolat hitelesítési hibával hal meg, mielőtt egyetlen tanúsítvány kicserélődne. Így néz ki az tls-auth irányeltérése, és ez determinisztikus: ugyanaz a két fájl minden kísérletnél meghiúsul, minden hálózatról. A napló sem nevezi meg a keresett beállítást, ezért az emberek újraépítik a kulcsokat és újra kiadják a tanúsítványokat, amelyek soha nem voltak hibásak. A megoldás az, hogy a két végét kiegészítővé tesszük, vagy mindkettőt kétirányúvá hagyjuk, nem pedig az ellenőrzés gyengítése.

A hiba a tanúsítványok előtt következik be

A tls-auth esetében mindkét fél ugyanazt a megosztott kulcsot tartja, és mindegyik a belőle származtatott két hely egyikét használja: az egyik hely aláírja a kimenő vezérlőcsomagokat, a másik ellenőrzi a bejövőket. A 0 irány és az 1 irány fordított sorrendben osztja ki ezeket a szerepeket, ezért a párnak kiegészítőnek kell lennie ahhoz, hogy a HMAC-ellenőrzések összeérjenek. Ha a hozzárendelés az egyik oldalon megfordul, a fogadó a rossz helyen keres aláírást, és elutasítja a csomagot. A munkamenet ott véget ér, ezért a hiba a csomagok hitelesítésére vonatkozik, nem arra, amit a tanúsítványtár előállítana.

A determinizmus fontos a diagnózishoz, mert az idő- vagy útvonalprobléma más nyomot hagy: szakaszos megszakadások, egy irány meghiúsulása, vagy csak egy adott hálózaton meghaló munkamenet. Az irányeltérés minden alkalommal az első kézfogásnál meghiúsul, és ugyanúgy meghiúsul egy másik gépen is ugyanazzal a két fájllal. Olvassa a naplót --verb 4 mellett, és keresse meg az első elutasított csomagot az utolsó sor helyett. Ha ez az elutasítás bármilyen tanúsítványcserét megelőz, a megosztott kulcs és annak iránya az a két dolog, amit érdemes ellenőrizni.

What you seeWhat it rules outNext check
Authentication error before any certificate is sentThe data channel is irrelevant; the control channel never authenticatedCompare tls-auth and its direction on both ends
Certificate or handshake failure after the control channel authenticatesThe shared key and its direction already agreeCheck the CA, the certificate dates and the hostname
Session completes but throughput or cipher warnings appearDirection was never the problemCompare the data-channel cipher settings
Startup stops on an options errorThe number itself is not the issueRe-read the inline versus external directive syntax

Hol él a szám

A OpenVPN 2.6 kézikönyve két helyet dokumentál az irányhoz: a tls-auth második argumentumát, amikor a kulcs külön fájlban van, és egy önálló key-direction sort, amikor a kulcs a profilba van ágyazva. Mindkettő ugyanazt az értéket állítja be, ezért a profilnak az egyik vagy a másik formát kell használnia, soha mindkettőt. A kihagyás is választás, és kétirányú elrendezésbe teszi mindkét felet, amely akkor működik, ha egyik oldal sem nevez meg irányt. Két ugyanazzal a számmal rendelkező fél nincs ebben az elrendezésben: mindegyik abban bízik, hogy az egyik helyen ír alá és a másikon ellenőriz, és mindkettő ugyanúgy teszi.

# server.conf, external key
tls-auth ta.key 0

# client.ovpn, external key
tls-auth ta.key 1

# client.ovpn, inline key
key-direction 1

A beágyazott forma önálló sorban álló direktíva, nem attribútum a kulcsblokk nyitó tagjén, és argumentumot fűzni ehhez a taghoz hiba, nem irányváltoztatás. Az elhelyezés is számít: a direktíva azon blokkon kívül áll, amelyhez tartozik, ezért a blokkon belül írt érték kulcsanyagként olvasódik. Másolja a profil terjesztője által szánt elrendezést, ne találjon ki párost, mert az egy kiszolgáló ellen működő profil talán már tükrözve van a másik oldalon.

Mit hagy érintetlenül a beállítás

Nem titkosítja az alkalmazásforgalmat. A tls-auth HMAC-ot tesz a vezérlőcsatorna csomagjai köré, míg az adatcsatornát a kézfogás során egyeztetett munkamenet-kulcsok védik, ezért az átviteli sebességre vagy titkosításra vonatkozó kérdésnek semmi köze az irányszámhoz. A beállítás második titkosítási réteget sem ad hozzá, és éppen ez a feltevés küldi az embereket hosszabb kulcsot keresni.

Nem vonatkozik a tls-crypt-re, egy másik vezérlőcsatorna-mechanizmus, saját beállításokkal és kulcskezeléssel, és semmit nem mond egyik fél tanúsítványazonosságáról sem. Ezért a működő irányegyezés csak azt bizonyítja, hogy a két vég egyetért abban, hogyan kell hitelesíteni a vezérlőcsatornát, nem azt, hogy a bizalmi lánc érvényesítve lett.

Igazítsa össze a párt, majd csatlakozzon újra

Hasonlítsa össze a két konfigurációt, mielőtt bármelyiket módosítaná, mert a már helyes oldal szerkesztése megduplázza a munkát. Az alábbi grep megmutatja, melyik mechanizmust választja az egyes fájl, a részletes futtatás pedig azt, hogy a vezérlőcsatorna egyáltalán hitelesítve lett-e. Őrizze meg mindkét kimenetet, hogy a következő változtatás egy ismert állapothoz hasonlítható legyen.

grep -n -E 'tls-auth|tls-crypt|key-direction' server.conf client.ovpn
openvpn --config client.ovpn --verb 4 2>&1 | grep -i -E 'hmac|tls error|control channel'

Minden változtatás után indítsa újra mindkét felet, mert ezek a beállítások indításkor egyszer olvasódnak be, és az egyik oldal újratöltése következetlenné teszi a párt a régi munkamenet teljes élettartamára. Ha az üzembe helyezés jelenleg irány beállítása nélkül működik, a beállítás egyik félre való hozzáadása újratermeli azt a hibát, amellyel elkezdte; vagy hagyja mindkettőt békén, vagy állítsa be mindkettőt. Egyszerre egy véget változtasson, és őrizze meg az előző fájlt, hogy a visszaesés kétperces visszaállítás legyen, ne újjáépítés.

Jegyezze fel a mechanizmust, a kulcsfájlt és az irányt minden véghez az üzembe helyezési jegyzetekben, mert különben a következő ember két hasonló fájlt olvas, és azt feltételezi, hogy a számoknak egymással egyezniük kell. Az irány koordinációs részlet, nem biztonsági fejlesztés: elválasztja a vezérlőcsatorna két irányát, és semmi mást nem tesz.

Kapcsolódó cikkek