Du gjenopprettet sikkerhetskopien, tjenesten startet, og en klient koblet til på første forsøk. Den suksessen er fellen. Gjenoppretting gir tilbake filene tjeneren 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 å avgjøre hva den gjenopprettede verten får lov til å være før den svarer på ett eneste håndtrykk.

En sikkerhetskopi gir tilbake filer, ikke myndighet

Øyeblikksbildet rommer tjenerkonfigurasjonen, de private nøklene, sertifikatmyndigheten, peer-listen og brannmurreglene slik de var da sikkerhetskopien kjørte. Det kan ikke romme 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, legger fram et sertifikat som fortsatt valideres mot den eldre CRL-en i det gjenopprettede treet, og tjeneren 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 på plass igjen. Ingen godkjente den tilgangen på nytt. Den gamle filen gjorde det.

Tjeneridentitet og klientidentitet feiler på hver sin måte

På WireGuard er tjenerens identitet den private nøkkelen i wg0.conf, så kopiering av filen til en annen tilgjengelig vert skaper to tjenere 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 bytter 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 fjerne.

OpenVPN dupliseres på samme lag med et tjener­sertifikat, 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 havne på hvilken som helst, og hver loggfil forteller en delvis historie. Sertifikatmyndigheten er den dypere kopien. Et gjenopprettet easy-rsa-tre er en annen sannhetskilde som kan utstede et gyldig sertifikat for ethvert navn du gir det.

Også klienter dupliseres, oftest under selve migreringen. Kopiering av en profil til en reserveenhet «bare for å teste» gir en annen 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 tjenerkonfigurasjonen 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 tjenere 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 tjeneren 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 varer 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 oppførselen til versjonen. 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, lever den gamle verten, 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 peernøkkelen, og ta deretter neste sikkerhetskopi etter denne avstemmingen, slik at den representerer tjenesten slik 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