Dva profily, jeden se připojí a druhý ne, a rychlý způsob, jak zjistit proč, je diff. Potíž je v tom, že tentýž diff vypíše vložený soukromý klíč, statický klíč a jakýkoli blok přihlašovacích údajů, který soubor nese, a lidé vloží výstup do chatu dřív, než si toho všimnou. Rozhodnutí, co porovnáváte, přichází před spuštěním příkazu. Porovnávejte strukturu a role na chráněných kopiích a když to má vidět někdo jiný, vytvořte samostatný redigovaný soubor.

Co soubor .ovpn skutečně nese

Soubor .ovpn je konfigurace s volitelnými vloženými bloky. Může obsahovat certifikát CA, klientský certifikát, soukromý klíč, klíč tls-auth nebo tls-crypt a direktivy, které odkazují na externí soubory nebo se ptají na přihlašovací údaje. Dva soubory mohou vypadat téměř stejně a lišit se jen uvnitř bloku, nebo v jedné direktivě, která úplně změní transport. Počet řádků vám nic neřekne o tom, co z toho se stalo.

Rozdíl uvnitř bloku klíče není veřejným důkazem ničeho. Znovu vydaný certifikát a certifikát s novým klíčem mohou vytvořit stejný tvar změny, takže neshoda bloku říká, že materiál je jiný, ne které rozhodnutí ji způsobilo. Berte to jako signál k porovnání polí, ne jako zjištění.

Porovnávejte podle role, ne podle řádku

Jděte vlastním pořadím spojení: nejprve koncový bod a transport, pak důvěra a očekávaná identita, pak autentizace uživatele, pak trasy, DNS a skriptové háčky. Tato posloupnost odpovídá tomu, co klient dělá, takže první rozdíl, na který narazíte, je první věc, která mohla spojení přerušit. Porovnávání podle abecedy naopak rozptýlí související nastavení po celém výstupu.

Průchod, který si všímá polí, prochází tyto položky v tomto pořadí. Vše, na co se klient ptá interaktivně, patří k řádku autentizace, ne k řádkům důvěry.

  • remote, proto a port, včetně každého bloku spojení.
  • ca a cert: vydavatel, subjekt a datum konce platnosti.
  • Zda je soukromý klíč vůbec přítomen, nikdy co obsahuje.
  • tls-auth nebo tls-crypt přítomnost a směr klíče.
  • Autentizační direktivy, včetně jakéhokoli odkazu na soubor s údaji.
  • Trasy, volby DNS a skriptové háčky, které se spouštějí při připojení.

Když soubor obsahuje několik bloků spojení, držte každou volbu u jejího koncového bodu. Porovnání jen prvního řádku remote může minout alternativu, kterou klient v této síti skutečně volí.

Proč je obyčejný diff nesprávný nástroj

Obyčejný diff je stavěný na text, ne na tajemství. Ochotně vypíše soukromý klíč do historie obrazovky a neřekne vám, že direktiva, na kterou se díváte, s poruchou nesouvisí. Výpisy polí jsou zároveň bezpečnější a čitelnější, protože materiál certifikátu lze porovnávat jako metadata místo bajtů.

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

První dva příkazy vypíšou identitu a platnost, aniž by se klíče dotkly, takže jejich výstup lze bezpečně vložit. grep vypisuje názvy direktiv a hodnoty, ale nikdy těla bloků, což z něj dělá správný první průchod, když tušíte rozdíl v transportu nebo směrování. Pokud je třeba porovnat samotný blok, porovnejte jeho hash, ne obsah.

Vytvořte redigovanou kopii pro tiket

Odstraňte skutečná tajemství a nepotřebné identifikátory, ale ponechte názvy polí a dost struktury, aby šlo rozdíl vysvětlit. Značka stejného tvaru přesto prozradí, kde materiál leží a jak byl dlouhý, takže rozhodněte, zda je přijatelné i to. Zkontrolujte samotnou finální přílohu, místo abyste věřili příkazu, který si pamatujete, že jste spustili. Neupravujte pracovní originál jen kvůli příkladu, protože redigovaný profil nemusí být spustitelný a nikdy se nesmí znovu importovat.

Udržujte originály rozpoznatelné podle názvu souboru a hashe, místo abyste je kopírovali do tří adresářů s podobnými názvy. Hashovací řetězec stačí k prokázání, který soubor byl zkontrolován, a nic nestojí, když unikne. Po uzavření změny kopie prořežte, aby další člověk zdědil jeden autoritativní soubor.

Držte porovnání svázané s poruchou

Porovnání si svou cenu zaslouží, když odpovídá na otázku o jednom importu nebo jedné poruše spojení. Nejprve pojmenujte krok, který selhává, a pak porovnejte jen pole, na kterých ten krok závisí; shromáždit všechny přihlašovací údaje klienta do jednoho adresáře dělá další únik pravděpodobnějším a další diagnostiku pomalejší. Čím užší je otázka, tím kratší je seznam polí, která na ni mohou odpovědět.

Pokud nový soubor přišel od operátora, potvrďte cestu jeho distribuce, než nahradíte materiál důvěry. Po změně prohlédněte importovanou kopii, kterou klient skutečně vybral, a vyjednaný výsledek, protože direktiva může být jinou verzí klienta ignorována nebo čtena jinak. Soubor na disku není důkazem spojení, které proběhlo. Sémantika direktiv je v příručce OpenVPN 2.6.

Související články