SECLEVEL=0 zdravi simptom, ne certifikata
Znižanje varnostne ravni OpenSSL razširi, kaj knjižnica sprejme. Ugotovite, kateri vnos je bil zavrnjen, preden spremenite to mejo za celoten gostitelj.
Povezava OpenVPN ne uspe, nekdo najde popravek v eni vrstici, ki doda SECLEVEL=0, in tunel se dvigne. Spremenila se ni certifikat ne šifrirni nabor; premaknil se je prag sprejemanja na ravni celotne knjižnice, in vse, kar proces počne pozneje, podeduje novo mejo. To je vredno razumeti, preden se ista vrstica kopira v vsak profil v okolju.
Ugotovite, katera knjižnica in katera politika veljata
SECLEVEL je koncept OpenSSL, zato je prvo vprašanje, ali vaša gradnja sploh uporablja OpenSSL. OpenVPN je mogoče povezati z več kot eno kriptografsko knjižnico, in nastavitev, ki velja za eno od njih, je za druge nesmiselna. Vprašajte binarno datoteko, s čim je bila zgrajena, nato vprašajte knjižnico, katero različico in konfiguracijo je naložila:
openvpn --version | head -3
openssl version -aPozorno preberite izpis različice, ker distribucije popravljajo privzete vrednosti. Nekatere prinašajo sistemsko konfiguracijo, ki dvigne najnižjo raven nad privzeto vrednost upstreama, in zato se isti profil obnaša drugače na dveh strojih z enakimi paketi OpenVPN. Veljavna politika je tista, ki jo je naložil delujoči proces, ne tista iz priročnika upstream.
Nato ločite dve plasti, ki jih ljudje mešajo. OpenVPN ima svoje nadzore TLS, vključno z nastavitvijo profila certifikata in izrecnimi seznami šifer, in ti stojijo nad vsem, kar knjižnica vsili. Znižanje ravni knjižnice ne spremeni, katere šifre navaja vaša konfiguracija OpenVPN, in zoženje seznama OpenVPN ne dvigne praga knjižnice. Vedenje, katera plast vas je zavrnila, je tisto, kar preprečuje, da bi popravek ostal ugibanje.
Ločite tri stvari, ki so lahko zavrnjene
Prvi kandidat je identitetno gradivo: certifikat, katerega ključ je premajhen ali katerega podpisnega algoritma politika ne sprejema več. Drugi je parameter izmenjave ključev, na primer skupina, ki jo politika šteje za prešibko. Tretji je nabor šifer, ki ga politika izključuje. Vsi trije lahko povzročijo napako rokovanja, in ločita jih le besedilo napake in faza pogajanj.
Nobeden od teh treh ni šifra podatkovnega kanala. OpenVPN se o šifriranju tunela pogaja ločeno od rokovanja TLS, zato povezava, ki uspe po spremembi varnostne ravni, ne pove nič o tem, katera šifra ščiti vaše podatke. Če vprašanje, ki ga v resnici zastavljate, zadeva zaupnost podatkov, gledate popolnoma napačen gumb.
Znižanje ravni razširi sprejemanje vseh treh vnosov hkrati. To je del, ki ga ljudje spregledajo: popravek, ki spusti star certifikat, spusti tudi šibko skupino in nabor, ki ga morda niste nameravali dovoliti. Ena napaka je sprožila spremembo, in sprememba je širša od napake. Ta asimetrija je razlog, da je omejena izjema boljša od privzete vrednosti za celotno okolje.
Spremenite vnos, ne praga
Ohranite natančno napako, preden se dotaknete konfiguracije, vključno s fazo, ki jo je sporočila, in predmetom, ki ga je imenovala. Težava s certifikatom se reši z zamenjavo certifikata z nečim, kar trenutna politika sprejme, kar običajno pomeni ponovno izdajo pri organu, ne pa ponovne namestitve iste datoteke.
Če zavrnjeni vnos pripada partnerju, ki ga ne nadzorujete, je pogovor z njegovim lastnikom o podprtem nadomestnem gradivu. Znižanje lastnega praga, da bi gostili sistem, ki ga nihče ne vzdržuje, prenese stroške z njih na vse, ki se povežejo za njimi.
Kjer strežnik uveljavlja politiko, preverite, ali je resnični vzrok nastavitev na ravni OpenVPN, preden obtožite knjižnico. Profil certifikata, ki zahteva strožji razred, kot ga lahko izpolni nameščeni certifikat, bo spodletel ne glede na varnostno raven, in odstranitev tega profila je ožja sprememba kot izklop preverjanj knjižnice.
Če ga morate znižati, ga omejite in dokumentirajte
Včasih je odobrena izjema za združljivost pravi odgovor, zlasti za starega partnerja z datiranim načrtom umika. Omejite jo na storitev, ki jo potrebuje, namesto na celotnega gostitelja: konfiguracijska datoteka za posamezno storitev ali namenska konfiguracija OpenSSL ima manjši vpliv kot izvoz v globalnem profilu.
Zapišite štiri stvari skupaj z izjemo: natančno nastavitev, lastnika, ki jo je odobril, prizadete odjemalce in pogoj, pod katerim bo odstranjena. Izjema brez pogoja umika je trajna oslabitev s priloženo začasno utemeljitvijo.
Povrnitev bi morala biti en korak, ki ste ga že preizkusili. Obdržite prejšnjo konfiguracijo, uporabite spremembo, potrdite, da se storitev zažene, in natančno vedite, katero datoteko obnoviti, če se naslednja povezava obnaša drugače od pričakovanega.
Nato preverite identiteto in zaščito
Uspešna povezava dokaže le, da so jo revidirani pogoji spustili. Potrdite, da preverjanje imena gostitelja in partnerja še vedno opravlja svoje delo, da je uporabljeni certifikat tisti, ki ste ga nameravali uvesti, in da se pogajani podatkovni kanal ujema s politiko, za katero mislite, da jo imate.
openssl x509 -in /etc/openvpn/client.crt -noout -subject -dates -text | grep -E 'Signature Algorithm|Public-Key'
openvpn --show-tls | head -20Referenca OpenSSL za varnostne ravni izrecno navaja, da ogrodje uveljavlja omejitve za ključe, podpise, skupine in nabore skupaj in da ničelna raven dovoli vse, kar preveri povratni klic. To je obseg tega, kar ste spremenili, in to je stavek, ki ga citirate, ko kdo vpraša, ali je bil popravek ozek.
Predaja, ki prestane revizijo, pove, katera politika je zavrnila kateri vnos, kaj je bilo spremenjeno in kaj ostaja sprejeto. „Deluje s SECLEVEL=0“ je opažanje o eni povezavi, ne varnostna ocena uvedbe.