Porovnajte dva profily OpenVPN bez prezradenia kľúčov
Textový diff môže odhaliť vložené kľúče rovnako ľahko, ako ukáže zmenenú direktívu. Porovnávajte podľa roly na chránených kópiách a potom vytvorte samostatný redigovaný diagnostický súbor.
Dva profily, jeden sa pripojí a druhý nie, a rýchly spôsob, ako zistiť prečo, je diff. Problém je, že ten istý diff vypíše vložený súkromný kľúč, statický kľúč a akýkoľvek blok prihlasovacích údajov, ktorý súbor nesie, a ľudia vložia výstup do chatu skôr, než si to všimnú. Rozhodnutie, čo porovnávate, prichádza pred spustením príkazu. Porovnávajte štruktúru a roly na chránených kópiách a keď to má vidieť niekto iný, vytvorte samostatný redigovaný súbor.
Čo súbor .ovpn skutočne nesie
Súbor .ovpn je konfigurácia s voliteľnými vloženými blokmi. Môže obsahovať certifikát CA, klientsky certifikát, súkromný kľúč, kľúč tls-auth alebo tls-crypt a direktívy, ktoré odkazujú na externé súbory alebo sa pýtajú na prihlasovacie údaje. Dva súbory môžu vyzerať takmer identicky a líšiť sa len vnútri bloku, alebo v jednej direktíve, ktorá úplne zmení transport. Počet riadkov vám nič nepovie o tom, čo z toho sa stalo.
Rozdiel vnútri bloku kľúča nie je verejným dôkazom ničoho. Znovu vydaný certifikát a certifikát s novým kľúčom môžu dať rovnaký tvar zmeny, takže nezhoda bloku hovorí, že materiál je iný, nie ktoré rozhodnutie ju vytvorilo. Berte to ako signál na porovnanie polí, nie ako zistenie.
Porovnávajte podľa roly, nie podľa riadku
Choďte vlastným poradím spojenia: najprv koncový bod a transport, potom dôvera a očakávaná identita, potom autentifikácia používateľa, potom trasy, DNS a skriptové háčiky. Toto poradie zodpovedá tomu, čo robí klient, takže prvý rozdiel, na ktorý narazíte, je prvá vec, ktorá mohla prerušiť spojenie. Porovnávanie podľa abecedy namiesto toho rozptyľuje súvisiace nastavenia po celom výstupe.
Prechod citlivý na polia sa pozerá na tieto položky v tomto poradí. Všetko, na čo sa klient pýta interaktívne, patrí k riadku autentifikácie, nie k riadkom dôvery.
remote,protoa port, vrátane každého bloku spojenia.caacert: vydavateľ, predmet a dátum konca platnosti.- Či je súkromný kľúč vôbec prítomný, nikdy nie to, čo obsahuje.
tls-authalebotls-cryptprítomnosť a smer kľúča.- Autentifikačné direktívy, vrátane akéhokoľvek odkazu na súbor prihlasovacích údajov.
- Trasy, voľby DNS a skriptové háčiky, ktoré sa spúšťajú pri pripojení.
Keď súbor obsahuje niekoľko blokov spojenia, držte každú voľbu pri jej koncovom bode. Porovnanie iba prvého riadku remote môže vynechať alternatívu, ktorú klient v tejto sieti skutočne volí.
Prečo je obyčajný diff nesprávny nástroj
Obyčajný diff je stavaný na text, nie na tajomstvá. Ochotne vypíše súkromný kľúč do histórie obrazovky a nepovie vám, že direktíva, na ktorú sa pozeráte, nesúvisí s poruchou. Výpisy polí sú zároveň bezpečnejšie a čitateľnejšie, pretože materiál certifikátu možno porovnávať ako metadáta namiesto bajtov.
openssl x509 -in ca.crt -noout -subject -issuer -enddate
openssl x509 -in client.crt -noout -subject -issuer -enddate
grep -E '^(remote|proto|port|tls-auth|tls-crypt|route|dhcp-option)' profile.ovpn
Prvé dva príkazy vypíšu identitu a platnosť bez toho, aby sa dotkli kľúča, takže ich výstup je bezpečné vložiť. grep vypisuje názvy a hodnoty direktív, ale nikdy telá blokov, čo z neho robí správny prvý prechod, keď tušíte rozdiel v transporte alebo smerovaní. Ak treba porovnať samotný blok, porovnajte jeho hash, nie obsah.
Vytvorte redigovanú kópiu pre tiket
Odstráňte skutočné tajomstvá a nepotrebné identifikátory, pričom zachovajte názvy polí a dosť štruktúry na vysvetlenie rozdielu. Značka rovnakého tvaru predsa prezradí, kde materiál sedí a aký bol dlhý, takže rozhodnite, či je prijateľné aj to. Skontrolujte samotnú finálnu prílohu, namiesto toho, aby ste verili príkazu, ktorý si pamätáte, že ste spustili. Neupravujte pracovný originál len preto, aby ste vytvorili príklad, pretože redigovaný profil nemusí byť spustiteľný a nikdy sa nesmie znova importovať.
Udržujte originály rozpoznateľné podľa názvu súboru a hashu, namiesto kopírovania do troch adresárov s podobnými názvami. Hashový reťazec stačí na preukázanie, ktorý súbor bol skontrolovaný, a nič nestojí, ak unikne. Po uzavretí zmeny kópie prerežte, aby ďalší človek zdedil jeden autoritatívny súbor.
Držte porovnanie zviazané s poruchou
Porovnanie si svoju cenu zaslúži, keď odpovedá na otázku o jednom importe alebo jednej poruche spojenia. Najprv pomenujte krok, ktorý zlyháva, potom porovnajte iba polia, na ktorých ten krok závisí; zhromaždenie všetkých prihlasovacích údajov klienta do jedného adresára robí ďalší únik pravdepodobnejším a ďalšiu diagnostiku pomalšou. Čím užšia je otázka, tým kratší je zoznam polí, ktoré na ňu môžu odpovedať.
Ak nový súbor prišiel od operátora, potvrďte cestu jeho distribúcie pred nahradením materiálu dôvery. Po zmene skontrolujte importovanú kópiu, ktorú klient skutočne vybral, a dohodnutý výsledok, pretože direktíva môže byť inou verziou klienta ignorovaná alebo čítaná inak. Súbor na disku nie je dôkazom spojenia, ktoré bežalo. Sémantika direktív je v príručke OpenVPN 2.6.