Du gjenopprettet sikkerhetskopien, tjenesten startet, og en klient koblet til på første forsøk. Den suksessen er fellen. En gjenoppretting gir tilbake filene serveren hadde i det øyeblikket øyeblikksbildet ble tatt, ikke tilgangstilstanden som har endret seg siden, og hvis det gamle endepunktet fortsatt er tilgjengelig har du nå to maskiner som svarer på én identitet. Løsningen er ikke en bedre sikkerhetskopi; den er å bestemme hva den gjenopprettede verten får være før den svarer på ett eneste håndtrykk.

En sikkerhetskopi gir tilbake filer, ikke myndighet

Øyeblikksbildet inneholder serverkonfigurasjonen, de private nøklene, sertifikatmyndigheten, peer-listen og brannmurreglene slik de var da sikkerhetskopien kjørte. Det kan ikke inneholde det som endret seg etterpå: enheten du tilbakekalte, nøkkelen du utstedte på nytt, peeren du fjernet da en bærbar PC ble solgt, subnettet du flyttet. Gjenoppretting spoler filene tilbake til det øyeblikket. Det spoler ikke tilbake beslutningene folk har tatt siden.

Skaden kommer nettopp fra dette gapet. En stjålet bærbar PC som ble tilbakekalt to uker etter sikkerhetskopien, presenterer et sertifikat som fortsatt valideres mot den eldre CRL-en i det gjenopprettede treet, og serveren godtar en enhet du har tatt ut av drift. WireGuard er mer direkte: en peer autoriseres ved å stå på listen, så en peer som ble slettet etter øyeblikksbildet er rett og slett der igjen. Ingen godkjente den tilgangen på nytt. Den gamle filen gjorde det.

Serveridentitet og klientidentitet feiler på ulike måter

På WireGuard er serverens identitet den private nøkkelen i wg0.conf, så kopiering av filen til en andre tilgjengelig vert skaper to servere med samme identitet og uten kjennskap til hverandre. Hver holder sin egen peer-liste. Fjern en peer på den nye verten, og den gamle godtar den fortsatt; sjekk wg show på én, og du ser halve sannheten. Klienter svitsjer heller ikke selv: en profil bærer én Endpoint, så en enhet fortsetter å snakke med adressen den ble konfigurert med, som kan være verten du ville ta ut av drift.

OpenVPN dupliseres på samme lag med et serversertifikat, den private nøkkelen og den statiske nøkkelen tls-auth eller tls-crypt. Kopier alle tre, og en klient kan ikke skille instansene; hvis begge er tilgjengelige, kan en gjenoppkobling lande på hvilken som helst, og hver loggfil forteller en delvis historie. Sertifikatmyndigheten er den dypere kopien. Et gjenopprettet easy-rsa-tre er en andre sannhetskilde som kan utstede et gyldig sertifikat for ethvert navn du gir det.

Klienter dupliseres også, vanligvis under selve migreringen. Kopiering av en profil til en reserveenhet «bare for å teste» gir en andre enhet med samme nøkkel og fellesnavn. Med duplicate-cn kan begge sesjonene være oppe samtidig, og en statisk adressetildeling i ccd eller ifconfig-pool-persist kan kollidere med den opprinnelige enheten. Det er to maskiner med én identitet, og ingenting i serverkonfigurasjonen skiller dem.

Velg én av tre tilstander for det gamle endepunktet

En gjenoppretting er bare trygg når det gamle endepunktets skjebne er avgjort. Ta det ut av drift: den gamle tjenesten må slutte å godta VPN-porten før den nye verten starter, og hvis du ikke når maskinen, blokker den porten ved nettverkskanten for alt unntatt din administrative kilde. Reparer samme vert: gjenbruk av identiteten er greit fordi én maskin holder den, men ødelegg deretter diskkopien eller VM-øyeblikksbildet av den gamle nøkkelen så den ikke kan komme tilbake. Bygg et tilgjengelighetspar: to verter trenger ulike vertsidentiteter pluss ett delt endepunkt, for eksempel en flytende adresse, en lastbalanserer eller DNS du kan flytte. Å kopiere den private nøkkelen er ikke et failover-design; det er to servere som krever ett navn.

Bekreft hvilken tilstand du faktisk er i før du rører klienter. Den gamle verten som svarer på VPN-porten, er den som vil godta den tilbakekalte enheten, selv om DNS har flyttet seg. Sjekk lyttere og den offentlige nøkkelen:

ss -lunp | grep -E ':51820|:1194'
wg show wg0
wg pubkey < /etc/wireguard/server.key

Avstem først peers, tilbakekallinger og adresser

List opp hva gjenopprettingen hevder mot hva som faktisk er autorisert. På WireGuard gir wg show wg0 hver peers nøkkel, endepunkt, siste håndtrykk og overføringstellere, nok til å oppdage en enhet du ikke lenger eier. Fjern den live med wg set wg0 peer <key> remove, og rediger deretter også konfigurasjonen, ellers kommer peeren tilbake ved neste start. wg show wg0 allowed-ips avdekker det andre problemet: to peers på én adresse, eller en adresse du allerede har tildelt på nytt.

På OpenVPN er tilbakekallingslisten en fil med en dato, og en gjenoppretting kan bringe en gammel tilbake. Sjekk den før klienter kobler til:

openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate
grep -E 'crl-verify|reneg-sec' /etc/openvpn/server.conf

Hvis siste oppdatering er eldre enn tilbakekallingen, ærer serveren fortsatt et sertifikat du tilbakekalte. OpenVPN 2.4 og nyere leser CRL-filen på nytt for hver ny tilkobling, så å erstatte filen stopper nye sesjoner, men etablerte tunneler består til reforhandling; standardverdien for reneg-sec er 3600 sekunder, og det er senkingen eller omstarten av tjenesten som gir deg endringen nå. Eldre bygg plukker kanskje ikke opp filen like pålitelig, så start på nytt når du ikke kan bekrefte versjonens oppførsel. wg(8)-håndboken dekker peer-fjerning og allowed-ips-syntaksen brukt ovenfor.

Rydd også statiske tildelinger for enheter som ikke finnes lenger. Å gjenbruke adressen til en pensjonert enhet for en ny mens den gamle profilen fortsatt er installert, skaper nøyaktig den duplikaten du prøver å unngå.

Verifiser med en klient du tilbakekalte

Kjør kontrollene i rekkefølge, fra et nettverk utenfor tunnelen. Først kobler en autorisert enhet til, løser DNS via den pushede resolveren og når en privat ressurs. Deretter må den tilbakekalte enheten feile, med sin eksisterende profil i stedet for en ny. Så prøv det gamle endepunktet utenfra: hvis VPN-porten fortsatt fullfører et håndtrykk, er den gamle verten levende, og dupliseringen er reell, ikke teoretisk.

Start den gjenopprettede verten på nytt og gjenta kontrollene for autorisert og tilbakekalt, for det er da konfigurasjonsfilen vinner over det du endret under kjøring. Sammenlign vertens offentlige nøkkel eller sertifikatfingeravtrykk med det den pensjonerte maskinen brukte. Like fingeravtrykk på to levende maskiner betyr at gjenopprettingen klonet identiteten; like fingeravtrykk på én maskin er greit. Noter de gjenopprettede versjonene, nøkkelfingeravtrykkene og det tilbakekalte serienummeret eller peer-nøkkelen, og ta deretter neste sikkerhetskopi etter denne avstemmingen, slik at den representerer tjenesten som den er nå. Den fungerende testen er ikke at en klient kobler til. Den er at klienten du fjernet blir ute mens det gamle endepunktet forblir lukket.

Relaterte artikler