Vergelyk twee OpenVPN-profiele sonder om sleutels te lek
'n Teksdiff kan ingebedde sleutels net so maklik blootle as wat dit 'n veranderde opdrag wys. Vergelyk volgens rol op beskermde kopiee en redigeer dan 'n aparte diagnostiese leêr.
Twee profiele, een verbind en een nie, en die vinnige manier om te sien hoekom is 'n diff. Die probleem is dat dieselfde diff die ingebedde privaatsleutel, die statiese sleutel en enige geloofsbriefblok wat die lêer bevat, druk, en mense plak die uitvoer in 'n klets voordat hulle dit agterkom. Om te besluit waarmee jy vergelyk, kom voor die uitvoer van die opdrag. Vergelyk struktuur en rolle op beskermde kopieë, en bou 'n aparte geredigeerde lêer wanneer iemand anders dit moet sien.
Wat 'n .ovpn-lêer werklik bevat
'n .ovpn-lêer is 'n konfigurasie met opsionele ingebedde blobs. Dit kan 'n CA-sertifikaat, 'n klient-sertifikaat, 'n privaatsleutel, 'n tls-auth of tls-crypt-sleutel bevat, en opdragte wat na eksterne lêers wys of om geloofsbriewe vra. Twee lêers kan byna identies lyk en net binne 'n blob verskil, of in een opdrag verskil wat die transport heeltemal verander. Die aantal reëls sê niks oor watter een van dié dinge gebeur het nie.
'n Verskil binne 'n sleutelblok is geen openbare bewys van enigiets nie. 'n Heruitgereikte sertifikaat en een met 'n nuwe sleutel kan dieselfde vorm van verandering lewer, dus die blob-verskil sê die materiaal is anders, nie watter besluit dit veroorsaak het nie. Behandel dit as 'n teken om velde te vergelyk, nie as 'n bevinding nie.
Vergelyk volgens rol, nie volgens reël nie
Volg die verbinding se eie volgorde: eers die eindpunt en transport, dan vertroue en verwagte identiteit, dan gebruikersverifikasie, dan roetes, DNS en script-hake. Dié volgorde stem ooreen met wat die kliênt doen, so die eerste verskil wat jy teëkom is die eerste ding wat die verbinding kon gebreek het. Om alfabeties te vergelyk strooi eerder verwante instellings oor die uitvoer.
'n Veldbewuste deurloop kyk in dié volgorde na hierdie items. Enigiets waarvoor die kliênt interaktief vra, hoort by die verifikasie-ry eerder as by die vertroue-rye.
remote,protoen poort, insluitend elke verbindingsblok.caencert: uitreiker, onderwerp en vervaldatum.- Of 'n privaatsleutel hoegenaamd teenwoordig is, nooit wat dit bevat nie.
tls-authoftls-crypt-teenwoordigheid en sleutelrigting.- Verifikasie-opdragte, insluitend enige verwysing na 'n geloofsbrieflêer.
- Roetes, DNS-opsies en script-hake wat by verbinding loop.
Wanneer 'n lêer verskeie verbindingsblokke bevat, hou elke opsie by sy eindpunt. Om net die eerste remote-reël te vergelyk kan die alternatief mis wat die kliênt op hierdie netwerk werklik kies.
Waarom 'n gewone diff die verkeerde instrument is
'n Gewone diff is vir teks gebou, nie vir geheime nie. Dit sal 'n privaatsleutel geredelik in die terugrol druk, en dit sal jou nie sê dat die opdrag waarna jy staar irrelevant vir die fout is nie. Veldonttrekkings is beide veiliger en leesbaarder, want sertifikaatmateriaal kan as metadata eerder as as grepe vergelyk word.
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
Die eerste twee opdragte druk identiteit en geldigheid sonder om die sleutel aan te raak, so hul uitvoer is veilig om te plak. Die grep druk opdragname en waardes maar nooit die blob-liggame nie, wat dit die regte eerste deurloop maak wanneer jy 'n transport- of roeteverkil vermoed. As 'n blob self vergelyk moet word, vergelyk sy hash eerder as die inhoud.
Bou 'n geredigeerde kopie vir die kaartjie
Verwyder werklike geheime en onnodige identifiseerders terwyl veldname en genoeg struktuur behou word om die verskil te verduidelik. 'n Merker van dieselfde vorm verklap steeds waar die materiaal sit en hoe lank dit was, so besluit of selfs dit aanvaarbaar is. Kontroleer die finale aanhegsel self eerder as om die opdrag te vertrou wat jy onthou jy uitgevoer het. Moenie die werkende oorspronklike wysig net om 'n voorbeeld te lewer nie, want 'n geredigeerde profiel is nie noodwendig uitvoerbaar nie en moet nooit weer ingevoer word nie.
Hou die oorspronklikes identifiseerbaar aan die hand van lêernaam en hash eerder as om hulle in drie gidse met soortgelyke name te kopieër. 'n Hash-string is genoeg om te bewys watter lêer nagegaan is en kos niks as dit lek nie. Snoei die kopieë nadat die verandering afgesluit is, sodat die volgende persoon een gesaghebbende lêer erf.
Hou die vergelyking aan 'n fout gekoppel
'n Vergelyking verdien sy koste wanneer dit 'n vraag oor een invoer of een verbindingsfout beantwoord. Noem eers die stap wat faal en vergelyk dan net die velde waarvan daardie stap afhang; om elke geloofsbrief wat die kliênt het in een gids te versamel maak die volgende lek waarskynliker en die volgende diagnose stadiger. Hoe nouer die vraag, hoe korter die lys velde wat dit kan beantwoord.
As 'n nuwe lêer van die operateur kom, bevestig sy verspreidingspad voordat jy vertrouemateriaal vervang. Inspekteer ná die verandering die ingevoerde kopie wat die kliênt werklik gekies het en die bedingde resultaat, want 'n opdrag kan geïgnoreer of anders gelees word deur 'n ander kliêntweergawe. Die lêer op skyf is nie bewys van die verbinding wat geloop het nie. Die opdragsemantiek is in die OpenVPN 2.6-handleiding.