Statisk nøkkel eller TLS for en OpenVPN-forbindelse mellom to parter?
OpenVPNs statiske nøkkelmodus kan ikke rotere trafikknøklene sine. Hvis to parter trenger automatisk fornyelse, gå over til TLS-modus og la punkt-til-punkt-oppsettet være uendret.
To maskiner som bare snakker med hverandre, kan beholde den topologien og likevel få forhandlede trafikknøkler. Nettverksformen og beskyttelsesmodusen er uavhengige valg, og det er sammenblandingen av dem som får folk til å prøve å rotere en statisk hemmelighet ved å bytte ut en fil mens begge daemonene fortsatt kjører. Å bytte nøkkelfilen under et kjørende par roterer ingenting. Den statiske nøkkelmodusen, som OpenVPN 2.6 markerer som utdatert, holder én nøkkel gjennom tunnelens levetid, så filen på disken og nøkkelen i minnet stemmer først igjen etter at begge ender er startet på nytt. Hvis automatisk fornyelse er kravet, må beskyttelsesmodusen endres.
Hva den statiske nøkkelmodusen ikke kan
I hemmelig modus deler begge parter en forhåndsdelt nøkkel som krypterer og autentiserer tunnelen direkte. Det finnes ingen håndtrykk, så det finnes ingen mekanisme for noen side til å foreslå nytt nøkkelmateriale, bevise en identitet eller komme seg etter et avvik uten operatørens inngripen. Begge egenskapene følger av fraværet av en kontrollkanal og ikke av et manglende alternativ, og ingen konfigurasjonsflagg legger til en i denne modusen.
OpenVPN 2.6-håndboken sier uttrykkelig at nøkkelen vedvarer til en ny genereres. Det er akseptabelt for en laboratorieforbindelse eller et fast par enheter med dokumentert rotasjonsprosedyre, og uakseptabelt der en langvarig hemmelighet er en reell risiko. Et filbytte lager ikke en ny nøkkel for et kjørende par; det lager to parter som er uenige. Å erstatte filen legger derfor til et avbrudd uten å legge til rotasjon.
Det finnes heller ikke noe begrep om partens identitet utover å eie filen. Den som har nøkkelen, er en part, og ingenting i tunnelen registrerer hvilken side som er hvilken, så tilbakekalling er alt eller ingenting.
Gå over til TLS uten å redesigne forbindelsen
TLS-modusen legger til en kontrollkanal, og med den evnen til å forhandle nøkler for datakanalen. I en punkt-til-punkt-utplassering tar den ene siden serverrollen og den andre klientrollen, men topologien forblir en forbindelse mellom to parter: hver side kjenner den andres endepunkt, og det dukker ikke opp noen pool eller flerbrukertjeneste. Rollene er en detalj i håndtrykket, ikke en ny arkitektur.
Gi hver maskin sin egen identitet. Hver side trenger et sertifikat og en privat nøkkel, tillitsankeret som validerer den andre, og en partverifiseringsregel som navngir hvem som forventes. Ikke gjenbruk den ene partens private nøkkel på den andre for å spare tid; det gjør to identiteter til én og fjerner muligheten til å tilbakekalle hver side separat. Registreringen er stedet for å gjøre dette riktig, fordi retting senere betyr å utstede sertifikater på nytt.
Hold nettverkskontrakten uendret mens beskyttelsen endres. De samme tunneladressene, rutene og tillatte tjenestene bør gjelde før og etter, slik at en feil under migreringen er et beskyttelsesproblem og ikke en forkledd rutingoverraskelse. Skriv ned adressene og rutene før endringen; å sammenligne dem etterpå er raskere enn å gjenoppbygge dem fra hukommelsen.
Noen utplasseringer beskytter også kontrollkanalen med sin egen statiske nøkkel, som ikke roterer sammen med datakanalen. Den nøkkelen vokter håndtrykket og ikke nyttelasten, så en kompromittering av den avdekker forhandlingen og ikke trafikken. Oppbevar den atskilt fra datakanalens materiale, og gi den en utskiftingsdato som en navngitt person eier. Å rotere den betyr å starte begge parter på nytt i et koordinert vindu, og derfor fortjener den en kalenderoppføring og ikke en erindring.
Hvem fornyer hva, og når
I TLS-modus styres fornyelsen av konfigurerte grenser: et tidsintervall, et byteantall eller et pakkeantall. Den dokumenterte tidskontrollen er det de fleste utplasseringer stoler på, og den lavere effektive verdien på tvers av de to partene kan starte utskiftingen, så å øke den bare på én side holder ikke hendelsen tilbake. Volumbaserte grenser finnes fordi en travel forbindelse kan tømme en nøkkel lenge før klokken gjør det. Ingen av grensene er en helsesjekk, og ingen av dem forteller deg at en fornyelse lyktes.
Derfor er det misvisende å diagnostisere en tilbakevendende reforhandling fra én enkelt konfigurasjonsfil. Les innstillingene på begge parter, og se deretter på overgangen i loggen i stedet for å anta en feil. En fornyelse som fullføres rent, ser ut som en kort utblåsning av kontrollkanaltrafikk, ikke som en frakobling.
Hold objektene atskilt i hodet. Sertifikatet beviser langsiktig identitet og skiftes ut etter en plan du kontrollerer. Datakanalnøkkelen oppdateres automatisk, og en separat autentiseringsutveksling, hvis utplasseringen krever en, følger kontopolitikken og kan trenge egne ordninger for senere utvekslinger.
Å deaktivere fornyelse helt ved å sette intervallet til null er ikke en løsning på en støyende logg. Det gjør en sunn livssyklushendelse om til en permanent nøkkel, noe som bringer deg tilbake til egenskapen du prøvde å forlate.
Å godta endringen
Bygg den nye konfigurasjonen fra det støttede eksempelet i den installerte utgivelsen, ikke fra en gammel minimal bit der algoritmene og filbanene er arvet fra et annet sted. Koordiner byttet slik at begge parter endres sammen, og hold en godkjent gjenopprettingsvei i tilfelle den ene siden ikke starter. Ta forbindelsen ned med vilje i stedet for å vente på et avbrudd for å teste tilbakerullingen. En tilbakerulling du har øvd på, er mer verdt enn en du har beskrevet.
Test tre ting: den innledende identitetsverifiseringen lykkes, den tiltenkte applikasjonsflyten virker, og en kontrollert fornyelse skjer uten å miste trafikk. Les deretter overgangen i loggen for hva den faktisk beviser: en ny nøkkelidentifikator betyr at partene fullførte en utskifting, ikke at tunnelen ble koblet til på nytt. Behandle det som bevis for ett trinn, og kontroller trafikktellerne før du erklærer migreringen fullført.
Det en lovnad om null avbrudd ville skjule, er feilen du ennå ikke har sett. En fornyelse som feiler, et sertifikat som utløper eller en stifeil kan fortsatt forstyrre forbindelsen, og ingen av dem utelukkes av en ren testkjøring. Egenskapen det er verdt å designe for, er smalere og mer nyttig: rutinemessig nøkkelutskifting slutter å være en manuell filutskifting.