Usporedite dva OpenVPN profila bez odavanja ključeva
Tekstualni diff može otkriti ugrađene ključeve jednako lako kao što pokaže promijenjenu direktivu. Uspoređujte po ulozi na zaštićenim kopijama, pa izradite zasebnu redigiranu dijagnostičku datoteku.
Dva profila, jedan se povezuje a drugi ne, a brz način da vidite zašto je diff. Problem je što isti diff ispiše ugrađeni privatni ključ, statički ključ i svaki blok vjerodajnica koje datoteka nosi, a ljudi zalijepe izlaz u razgovor prije nego što primijete. Odluka o tome što uspoređujete dolazi prije pokretanja naredbe. Uspoređujte strukturu i uloge na zaštićenim kopijama, a kad netko drugi treba vidjeti, izradite zasebnu redigiranu datoteku.
Što .ovpn datoteka zapravo nosi
Datoteka .ovpn je konfiguracija s neobaveznim ugrađenim blokovima. Može sadržavati CA certifikat, klijentski certifikat, privatni ključ, ključ tls-auth ili tls-crypt, te direktive koje pokazuju na vanjske datoteke ili traže vjerodajnice. Dvije datoteke mogu izgledati gotovo identično i razlikovati se samo unutar bloka, ili u jednoj direktivi koja potpuno mijenja prijenos. Broj redaka ne govori vam ništa o tome što se od toga dogodilo.
Razlika unutar bloka ključa nije javni dokaz ničega. Ponovno izdan certifikat i certifikat s novim ključem mogu dati isti oblik promjene, pa nesklad bloka govori da je materijal drugačiji, a ne koja ga je odluka stvorila. Tretirajte to kao signal za usporedbu polja, ne kao nalaz.
Uspoređujte po ulozi, ne po retku
Slijedite vlastiti redoslijed veze: prvo odredište i prijenos, zatim povjerenje i očekivani identitet, zatim autentifikacija korisnika, zatim rute, DNS i skriptne kuke. Taj slijed odgovara onome što klijent radi, pa je prva razlika na koju naiđete prva stvar koja je mogla prekinuti vezu. Abecedna usporedba umjesto toga razbacuje povezane postavke po cijelom izlazu.
Prolaz koji vodi računa o poljima gleda ove stavke tim redom. Sve što klijent traži interaktivno pripada retku autentifikacije, a ne retcima povjerenja.
remote,protoi port, uključujući svaki blok veze.caicert: izdavatelj, subjekt i datum isteka.- Je li privatni ključ uopće prisutan, nikad što sadrži.
tls-authilitls-cryptprisutnost i smjer ključa.- Direktive autentifikacije, uključujući svaku referencu na datoteku vjerodajnica.
- Rute, DNS opcije i skriptne kuke koje se pokreću pri povezivanju.
Kad datoteka sadrži nekoliko blokova veze, držite svaku opciju uz njezino odredište. Usporedba samo prvog retka remote može propustiti alternativu koju klijent doista odabire na ovoj mreži.
Zašto je obični diff pogrešan alat
Obični diff napravljen je za tekst, ne za tajne. Rado će ispisati privatni ključ u povijest zaslona i neće vam reći da direktiva u koju gledate nema veze s kvarom. Izlučivanje polja je istodobno sigurnije i čitljivije, jer se materijal certifikata može uspoređivati kao metapodaci, a ne kao bajtovi.
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
Prve dvije naredbe ispisuju identitet i valjanost bez dodirivanja ključa, pa je njihov izlaz siguran za lijepljenje. grep ispisuje nazive direktiva i vrijednosti, ali nikad tijela blokova, što ga čini pravim prvim prolazom kad sumnjate na razliku u prijenosu ili usmjeravanju. Ako se sam blok mora usporediti, usporedite njegov hash, a ne sadržaj.
Izradite redigiranu kopiju za tiket
Uklonite prave tajne i nepotrebne identifikatore, a zadržite nazive polja i dovoljno strukture da objasnite razliku. Marker istog oblika ipak otkriva gdje materijal stoji i koliko je bio dugačak, pa odlučite je li i to prihvatljivo. Provjerite samu konačnu privitak, umjesto da vjerujete naredbi koju se sjećate da ste pokrenuli. Ne uređujte radni izvornik samo da biste proizveli primjer, jer redigirani profil nije nužno izvršan i nikada se ne smije ponovno uvesti.
Držite izvornike prepoznatljivima po imenu datoteke i hashu, umjesto da ih kopirate u tri direktorija sa sličnim imenima. Hash string dovoljan je da dokaže koja je datoteka pregledana i ne košta ništa ako iscuri. Obrežite kopije nakon što se promjena zatvori, da sljedeća osoba naslijedi jednu autoritativnu datoteku.
Držite usporedbu vezanu uz kvar
Usporedba zaslužuje svoju cijenu kad odgovori na pitanje o jednom uvozu ili jednom kvaru veze. Prvo imenujte korak koji pada, pa usporedite samo polja o kojima taj korak ovisi; skupljanje svih klijentovih vjerodajnica u jedan direktorij čini sljedeće curenje vjerojatnijim, a sljedeću dijagnozu sporijom. Što je pitanje uže, to je popis polja koja mogu odgovoriti kraći.
Ako je nova datoteka došla od operatera, potvrdite put distribucije prije nego zamijenite materijal povjerenja. Nakon promjene pregledajte uvezenu kopiju koju je klijent doista odabrao i dogovoreni rezultat, jer direktiva može biti ignorirana ili drukčije pročitana od druge verzije klijenta. Datoteka na disku nije dokaz veze koja je tekla. Semantika direktiva je u OpenVPN 2.6 priručniku.