SECLEVEL=0 genêst it symptoom, net it sertifikaat
It ferleegjen fan it feilichheidsnivo fan OpenSSL makket breder wat de bibleteek akseptearret. Fêststelle hokker ynfier wegere waard foardat jo dy grins foar in hiele host feroarje.
In OpenVPN-ferbining mislearret, immen fynt in ienrige-oplossing dy't SECLEVEL=0 tafoeget, en de tunnel komt omheech. Wat feroare wie net it sertifikaat en net de sjiferset; in akseptaasjedrompel oer de hiele bibleteek ferskode, en alles wat it proses dêrnei docht erft de nije grins. Dat is it wurdich te begripen foardat deselde rigel yn elk profyl fan 'e omjouwing kopiearre wurdt.
Fêststelle hokker bibleteek en hokker belied jilde
SECLEVEL is in OpenSSL-begrip, dus de earste fraach is oft jo build uberhaupt OpenSSL brûkt. OpenVPN kin tsjin mear as ien kryptografyske bibleteek keppele wurde, en in ynstelling dy't foar ien fan harren jildt is betsjuttingsleas foar de oaren. Freegje it binary wêrmei't it boud is, freegje dan de bibleteek hokker ferzje en konfiguraasje it laden hat:
openvpn --version | head -3
openssl version -aLês de ferzje-útfier soarchfâldich, want distribúsjes patsje defaults. Guon leverje in systeemkonfiguraasje dy't it minimale nivo boppe de upstream-default ferheget, en dêrom gedraacht itselde profyl him oars op twa masines mei identike OpenVPN-pakketten. It effektive belied is dat wat it rinnende proses laden hat, net dat út 'e upstream-hânlieding.
Skied dan de twa lagen dy't minsken trochinoar helje. OpenVPN hat syn eigen TLS-kontrôles, wêrûnder in ynstelling foar it sertifikaatprofyl en eksplisite sjiferlisten, en dy steane boppe alles wat de bibleteek ôftwingt. It ferleegjen fan it bibleteeknivo feroaret net hokker sjifers jo OpenVPN-konfiguraasje neamt, en it ferneukjen fan 'e OpenVPN-list ferheget de drompel fan 'e bibleteek net. Witte hokker laach jo wegere is wat foarkomt dat de oplossing in gissing bliuwt.
Skied de trije dingen dy't wegere wurde kinne
De earste kandidaat is identiteitsmateriaal: in sertifikaat wêrfan de kaai te lyts is of wêrfan it hantekeningalgoritme it belied net mear akseptearret. De twadde is in kaai-útwikselingsparameter, lykas in groep dy't it belied te swak achtet. De tredde is in sjiferset dy't it belied útslút. Alle trije kinne in handshake-flater feroarsaakje, en allinnich de flatertekst en de ûnderhannelingsfaze skiede har.
Gjin fan dy trije is de sjifer fan it datakanaal. OpenVPN ûnderhannelet syn tunnelfersifering apart fan 'e TLS-handshake, dus in ferbining dy't slagget nei in wiziging fan feilichheidsnivo seit neat oer hokker sjifer jo gegevens beskermet. As de fraach dy't jo eins stelle oer de fertroulikheid fan gegevens giet, sjogge jo nei de ferkearde knop.
It ferleegjen fan it nivo makket de akseptaasje foar alle trije ynfieren tagelyk breder. Dat is it diel dat minsken misse: de oplossing dy't in âld sertifikaat talit, lit ek in swakke groep en in set ta dy't jo miskien net fan doel wiene te tastean. Ien flater late ta de wiziging, en de wiziging is breder as de flater. Dy asymmetry is de reden wêrom't in beheinde útsûndering better is as in default foar de hiele omjouwing.
Feroarje de ynfier, net de drompel
Bewarje de krekte flater foardat jo de konfiguraasje oanreitsje, ynklusyf de faze dy't him meldde en it objekt dat er neamde. In sertifikaatprobleem wurdt oplost troch it sertifikaat te ferfangen troch eat dat it hjoeddeiske belied akseptearret, wat meastentiids betsjut it by de autoriteit opnij útjaan ynstee fan itselde bestân opnij te ynstallearjen.
As de wegere ynfier by in peer heart dy't jo net kontrolearje, is it petear mei de eigner fan dy peer oer stipe ferfangingsmateriaal. Jo eigen drompel ferleegje om in systeem te herbergen dat nimmen ûnderhâldt, ferpleatst de kosten fan harren nei elkenien dy't dêrnei ferbynt.
Wêr't de server it belied hanthavet, kontrolearje dan oft in ynstelling op OpenVPN-nivo de echte oarsaak is foardat jo de bibleteek de skuld jouwe. In sertifikaatprofyl dat in strangere klasse easket as it útrôle sertifikaat befredigje kin, sil mislearje hoe't it feilichheidsnivo ek stiet, en dat profyl fuorthelje is in ingere wiziging as it útskeakeljen fan 'e kontrôles fan 'e bibleteek.
As jo it ferleegje moatte, beheinsje it en dokumintearje it
Soms is in goedkarde kompatibiliteitsútsûndering it goede antwurd, benammen foar in âlde peer mei in datearre útfasingsplan. Beheinsje it ta de tsjinst dy't it nedich hat ynstee fan de hiele host: in tsjinstspesifyk konfiguraasjebestân of in tawijde OpenSSL-konfiguraasje hat in lytsere ynfloedsradius as in eksport yn it globale profyl.
Skriuw fjouwer dingen by de útsûndering: de krekte ynstelling, de eigner dy't it goedkard hat, de kliïnten dy't it rekket, en de betingst wêryn't it fuortsmiten wurdt. In útsûndering sûnder útfasingsbetingst is in permaninte ferswakking mei in tydlike rjochtfeardiging derby.
Weromrollen moat ien stap wêze dy't jo al test hawwe. Hâld de foarige konfiguraasje, pas de wiziging ta, befêstigje dat de tsjinst start, en witte krekt hokker bestân jo weromsette moatte as de folgjende ferbining oars gedraacht as ferwachte.
Kontrolearje dêrnei identiteit en beskerming
In slagge ferbining bewiist allinnich dat de herziene betingsten it talieten. Befêstigje dat de kontrôle fan hostnamme en peer noch altyd syn wurk docht, dat it brûkte sertifikaat it iene is dat jo fan doel wiene te rollen, en dat it ûnderhannele datakanaal oerienkomt mei it belied dat jo tinke te hawwen.
openssl x509 -in /etc/openvpn/client.crt -noout -subject -dates -text | grep -E 'Signature Algorithm|Public-Key'
openvpn --show-tls | head -20De OpenSSL-referinsje foar feilichheidsnivo's seit dúdlik dat it ramt grinzen oan kaaien, hantekeningen, groepen en sets mei-inoar opleit en dat nivo nul alles tastiet wat de callback kontrolearret. Dat is de omfang fan wat jo feroare hawwe, en dat is de sin om oan te heljen as immen freget oft de oplossing ing wie.
De oerdracht dy't in audit oerlibbet seit hokker belied hokker ynfier wegere, wat feroare is en wat dêrtroch akseptearre bliuwt. „It wurket mei SECLEVEL=0“ is in waarnimming oer ien ferbining, net in feilichheidsbeoardieling fan 'e útrôle.