Statiese sleutel of TLS vir ’n OpenVPN-skakel tussen twee eweknieë?
OpenVPN se statiese-sleutelmodus kan nie sy verkeersleutels roteer nie. As twee eweknieë outomatiese hernuwing nodig het, skakel oor na TLS-modus en laat die punt-tot-punt-uitleg onveranderd.
Twee masjiene wat net met mekaar praat, kan daardie topologie behou en steeds onderhandelde verkeersleutels kry. Die netwerkvorm en die beskermingsmodus is onafhanklike keuses, en dit is die verwarring tussen hulle wat mense laat probeer om ’n statiese geheim te roteer deur ’n lêer te vervang terwyl albei daemons aanhou loop. Om die sleutellêer onder ’n lopende paar te vervang, roteer niks. Die statiese-sleutelmodus, wat OpenVPN 2.6 as verouderd merk, hou een sleutel vir die lewensduur van die tonnel, so die lêer op skyf en die sleutel in geheue stem eers weer ooreen nadat albei kante herbegin het. As outomatiese hernuwing die vereiste is, moet die beskermingsmodus verander.
Wat die statiese-sleutelmodus nie kan doen nie
In geheiemodus deel albei eweknieë ’n vooraf gedeelde sleutel wat die tonnel direk versleutel en authentiseer. Daar is geen handdruk nie, so daar is geen meganisme vir enige kant om nuwe sleutelmateriaal voor te stel, ’n identiteit te bewys of van ’n wanverhouding te herstel sonder ingryping van die operateur nie. Albei eienskappe volg uit die afwesigheid van ’n beheerkanaal eerder as uit ’n ontbrekende opsie, en geen konfigurasievlag voeg een by hierdie modus nie.
Die OpenVPN 2.6-handleiding is duidelik dat die sleutel bly voortbestaan totdat ’n nuwe een gegenereer word. Dit is aanvaarbaar vir ’n laboratoriumskakel of ’n vaste paar toestelle met ’n gedokumenteerde roteerprosedure, en dit is onaanvaarbaar waar ’n langdurige geheim ’n werklike risiko is. ’n Lêervervanging skep nie ’n nuwe sleutel vir ’n lopende paar nie; dit skep twee eweknieë wat van mekaar verskil. Om die lêer te vervang voeg dus ’n onderbreking by sonder om rotasie by te voeg.
Daar is ook geen begrip van eweknie-identiteit buiten die besit van die lêer nie. Enigiemand wat die sleutel het, is ’n eweknie, en niks in die tonnel teken aan watter kant watter is nie, so herroeping is alles of niks.
Oorstap na TLS sonder om die skakel te herontwerp
TLS-modus voeg ’n beheerkanaal by, en daarmee die vermoë om datakanaalsleutels te onderhandel. In ’n punt-tot-punt-ontplooiing neem een kant die bedienerrol en die ander die kliëntrol, maar die topologie bly ’n skakel tussen twee eweknieë: elke kant ken die ander se eindpunt, en geen poel of multigebruiker-diens verskyn nie. Die rolle is ’n handdrukdetail, nie ’n nuwe argitektuur nie.
Gee elke masjien sy eie identiteit. Elke kant het ’n sertifikaat en private sleutel nodig, die vertrouensanker wat die ander valideer, en ’n eweknie-verifikasiereël wat noem wie verwag word. Moenie een eweknie se private sleutel op die ander hergebruik om tyd te spaar nie; dit verander twee identiteite in een en verwyder die vermoë om enige kant afsonderlik te herroep. Inskrywing is die plek om dit reg te kry, want om dit later reg te maak beteken om sertifikate heruit te reik.
Hou die netwerkkontrak onveranderd terwyl die beskerming verander. Dieselfde tonneladresse, roetes en toegelate dienste moet voor en na geld, sodat ’n fout tydens die migrasie ’n beskermingsprobleem is eerder as ’n verborge roeteringsverrassing. Skryf die adresse en roetes voor die verandering neer; om hulle daarna te vergelyk is vinniger as om hulle uit die geheue te rekonstrueer.
Sommige ontplooiings beskerm ook die beheerkanaal met sy eie statiese sleutel, wat nie saam met die datakanaal roteer nie. Daardie sleutel beskerm die handdruk eerder as die loonvrag, so ’n kompromie daarvan stel onderhandeling eerder as verkeer bloot. Berg dit apart van die datakanaalmateriaal, en gee dit ’n vervangingsdatum wat ’n genoemde persoon besit. Om dit te roteer beteken om albei eweknieë in ’n gekoördineerde venster te herbegin, en daarom verdien dit ’n kalenderinskrywing eerder as ’n geheue.
Wie hernu wat, en wanneer
In TLS-modus word hernuwing gedryf deur gekonfigureerde limiete: ’n tydinterval, ’n greptelling of ’n pakkettelling. Die gedokumenteerde tydbeheer is waarop die meeste ontplooiings staatmaak, en die laer effektiewe waarde oor die twee eweknieë kan die vervanging begin, so om dit alleen aan een kant te verhoog sal die gebeurtenis nie terughou nie. Volumegeskepte limiete bestaan omdat ’n besige skakel ’n sleutel lank voor die klok kan uitput. Nie een van die limiete is ’n gesondheidskontrole nie, en nie een sê vir jou dat ’n hernuwing geslaag het nie.
Daarom is dit misleidend om ’n herhalende heronderhandeling uit ’n enkele konfigurasielêer te diagnoseer. Lees die instellings op albei eweknieë en kyk dan na die oorgang in die logboek eerder as om ’n fout aan te neem. ’n Hernuwing wat skoon voltooi word, lyk soos ’n kort uitbarsting beheerkanaalverkeer, nie soos ’n ontkoppeling nie.
Hou die objekte apart in jou kop. Die sertifikaat bewys langtermynidentiteit en word volgens ’n skedule wat jy beheer, vervang. Die datakanaalsleutel word outomaties verfris, en ’n aparte uitruiling vir verifikasie, as die ontplooiing een vereis, volg die rekeningbeleid en kan sy eie reëlings vir latere uitruilings nodig hê.
Om hernuwing heeltemal te deaktiveer, deur die interval op nul te stel, is nie ’n oplossing vir ’n lawwe logboek nie. Dit verander ’n gesonde lewenssiklusgebeurtenis in ’n permanente sleutel, wat jou terugbring na die eienskap wat jy probeer verlaat het.
Om die verandering te aanvaar
Bou die nuwe konfigurasie uit die ondersteunde voorbeeld van die geïnstalleerde weergawe eerder as uit ’n ou minimale brokkie waarvan die algoritmes en lêerpaaie elders geërf is. Koördineer die oorskakeling sodat albei eweknieë saam verander, en hou ’n goedgekeurde herstelpad gereed ingeval een kant nie opkom nie. Bring die skakel doelbewus af eerder as om op ’n onderbreking te wag om die terugrol te toets. ’n Terugrol wat jy geoefen het, is meer werd as een wat jy beskryf het.
Toets drie dinge: aanvanklike identiteitsverifikasie slaag, die beoogde toepassingsvloei werk, en ’n beheerde hernuwing vind plaas sonder om verkeer te verloor. Lees dan die oorgang in die logboek vir wat dit werklik bewys: ’n nuwe sleutelidentifiseerder beteken die eweknieë het ’n vervanging voltooi, nie dat die tonnel weer gekonnekteer het nie. Behandel dit as bewys van een stap, en kontroleer die verkeertellers voordat jy die migrasie as klaar beskou.
Wat ’n belofte van geen onderbreking sou verberg, is die fout wat jy nog nie gesien het nie. ’n Hernuwing wat misluk, ’n sertifikaat wat verval of ’n padfout kan die skakel steeds versteur, en nie een daarvan word deur ’n skoon toetslopie uitgesluit nie. Die eienskap waarvoor dit die moeite werd is om te ontwerp, is smaller en nuttiger: gereelde sleutelvervanging hou op om ’n handmatige lêervervanging te wees.