tls-auth key-direction: a 0 és az 1 térjen el, ne egyezzen
A tls-authnál a két végnek ellentétes irányra van szüksége, 0 és 1, vagy mindkettőnek el kell hagynia a beállítást. Ugyanaz a szám meghiúsul, és a tls-crypt soha nem használja.
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 see | What it rules out | Next check |
|---|---|---|
| Authentication error before any certificate is sent | The data channel is irrelevant; the control channel never authenticated | Compare tls-auth and its direction on both ends |
| Certificate or handshake failure after the control channel authenticates | The shared key and its direction already agree | Check the CA, the certificate dates and the hostname |
| Session completes but throughput or cipher warnings appear | Direction was never the problem | Compare the data-channel cipher settings |
| Startup stops on an options error | The number itself is not the issue | Re-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.