Sådan gendanner du en VPN-server uden at duplikere identiteter
En gendannet VPN-server bringer filer tilbage, ikke nuværende adgang. Afstem tilbagekaldelser, peer-nøgler og endepunkter, før en anden kopi besvarer et håndtryk.
Du gendannede backupen, tjenesten startede, og en klient blev forbundet i første forsøg. Den succes er fælden. En gendannelse giver de filer tilbage, som serveren havde på tidspunktet for snapshotet, ikke den adgangstilstand, der har ændret sig siden, og hvis det gamle endepunkt stadig er tilgængeligt, har du nu to maskiner, der svarer på én identitet. Løsningen er ikke en bedre backup; det er at beslutte, hvad den gendannede vært må være, før den besvarer et eneste håndtryk.
En backup giver filer tilbage, ikke myndighed
Snapshotet indeholder serverkonfigurationen, de private nøgler, certifikatmyndigheden, peer-listen og firewallreglerne, som de var, da backupen kørte. Det kan ikke indeholde det, der ændrede sig bagefter: enheden, du tilbagekaldte, nøglen, du genudstedte, peeren, du fjernede, da en bærbar blev solgt, subnettet, du flyttede. Gendannelse spoler filerne tilbage til det øjeblik. Det spoler ikke de beslutninger tilbage, som folk har truffet siden.
Skaden kommer netop fra dette gab. En stjålet bærbar, der blev tilbagekaldt to uger efter backupen, fremviser et certifikat, der stadig valideres mod den ældre CRL i det gendannede træ, og serveren accepterer en enhed, du har taget ud af drift. WireGuard er mere direkte: en peer autoriseres ved at stå på listen, så en peer, der blev slettet efter snapshotet, er simpelthen til stede igen. Ingen godkendte den adgang igen. Den gamle fil gjorde.
Serveridentitet og klientidentitet fejler på forskellige måder
På WireGuard er serverens identitet den private nøgle i wg0.conf, så kopiering af filen til en anden tilgængelig vært skaber to servere med samme identitet og uden kendskab til hinanden. Hver holder sin egen peer-liste. Fjern en peer på den nye vært, og den gamle accepterer den stadig; tjek wg show på én, og du ser halvdelen af sandheden. Klienter skifter heller ikke selv: en profil bærer ét Endpoint, så en enhed bliver ved med at tale med den adresse, den blev konfigureret med, hvilket kan være den vært, du ville tage ud af drift.
OpenVPN duplikerer på samme lag med et servercertifikat, dets private nøgle og den statiske nøgle tls-auth eller tls-crypt. Kopier alle tre, og en klient kan ikke skelne instanserne; hvis begge er tilgængelige, kan en genopkobling lande på en af dem, og hver logfil fortæller en delvis historie. Certifikatmyndigheden er den dybere kopi. Et gendannet easy-rsa-træ er en anden kilde til sandhed, der kan udstede et gyldigt certifikat til ethvert navn, du giver det.
Klienter bliver også duplikeret, ofte under selve migreringen. Kopiering af en profil til en reserveenhed «bare for at teste» giver en anden enhed med samme nøgle og common name. Med duplicate-cn kan begge sessioner være oppe samtidig, og en statisk adressetildeling i ccd eller ifconfig-pool-persist kan kollidere med den oprindelige enhed. Det er to maskiner med én identitet, og intet i serverkonfigurationen skelner dem.
Vælg en af tre tilstande til det gamle endepunkt
En gendannelse er kun sikker, når det gamle endepunkts skæbne er afgjort. Tag det ud af drift: den gamle tjeneste skal stoppe med at acceptere VPN-porten, før den nye vært starter, og hvis du ikke kan nå maskinen, blokér den port ved netværkskanten for alt undtagen din administrative kilde. Reparer den samme vært: genbrug af identiteten er fin, fordi én maskine holder den, men ødelæg derefter diskkopien eller VM-snapshotet af den gamle nøgle, så den ikke kan vende tilbage. Byg et tilgængelighedspar: to værter har brug for forskellige værtsidentiteter plus ét delt endepunkt, for eksempel en flydende adresse, en load balancer eller DNS, du kan flytte. Kopiering af den private nøgle er ikke et failover-design; det er to servere, der gør krav på ét navn.
Bekræft, hvilken tilstand du faktisk er i, før du rører klienter. Den gamle vært, der svarer på VPN-porten, er den, der vil acceptere den tilbagekaldte enhed, selv om DNS er flyttet. Tjek lyttere og den offentlige nøgle:
ss -lunp | grep -E ':51820|:1194'
wg show wg0
wg pubkey < /etc/wireguard/server.key
Afstem først peers, tilbagekaldelser og adresser
List, hvad gendannelsen hævder, op mod hvad der aktuelt er autoriseret. På WireGuard giver wg show wg0 hver peers nøgle, endepunkt, seneste håndtryk og transfertællere, hvilket er nok til at spotte en enhed, du ikke længere ejer. Fjern den live med wg set wg0 peer <key> remove, og rediger derefter også konfigurationen, ellers vender peeren tilbage ved næste start. wg show wg0 allowed-ips afslører det andet problem: to peers på én adresse eller en adresse, du allerede har gentildelt.
På OpenVPN er tilbagekaldelseslisten en fil med en dato, og en gendannelse kan bringe en gammel tilbage. Tjek den, før klienter forbinder:
openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate
grep -E 'crl-verify|reneg-sec' /etc/openvpn/server.conf
Hvis den seneste opdatering er ældre end tilbagekaldelsen, ærer serveren stadig et certifikat, du tilbagekaldte. OpenVPN 2.4 og nyere genlæser CRL-filen for hver ny forbindelse, så udskiftning af filen stopper nye sessioner, men etablerede tunneler består indtil forhandling igen; standarden for reneg-sec er 3600 sekunder, og det er sænkning eller genstart af tjenesten, der giver dig ændringen nu. Ældre builds opfanger måske ikke filen lige så pålideligt, så genstart, når du ikke kan bekræfte versionens adfærd. wg(8)-manualen dækker peer-fjernelse og allowed-ips-syntaksen brugt ovenfor.
Ryd også statiske tildelinger for enheder, der ikke findes længere. Genbrug af en pensioneret enheds adresse til en ny, mens den gamle profil stadig er installeret, skaber præcis den dublet, du prøver at undgå.
Verificér med en klient, du har tilbagekaldt
Kør kontrollerne i rækkefølge fra et netværk uden for tunnelen. Først forbinder en autoriseret enhed, slår DNS op via den push'ede resolver og når en privat ressource. Derefter skal den tilbagekaldte enhed fejle med sin eksisterende profil i stedet for en ny. Prøv så det gamle endepunkt udefra: hvis VPN-porten stadig fuldfører et håndtryk, er den gamle vært live, og duplikeringen er reel, ikke teoretisk.
Genstart den gendannede vært, og gentag kontrol af autoriseret og tilbagekaldt, for det er der, konfigurationsfilen vinder over det, du ændrede under kørsel. Sammenlign værtens offentlige nøgle eller certifikatfingeraftryk med det, den pensionerede maskine brugte. Ens fingeraftryk på to kørende maskiner betyder, at gendannelsen klonede identiteten; ens fingeraftryk på én maskine er fint. Notér de gendannede versioner, nøglefingeraftrykkene og det tilbagekaldte serienummer eller peer-nøglen, og tag derefter næste backup efter denne afstemning, så den repræsenterer tjenesten, som den er nu. Den fungerende test er ikke, at en klient forbinder. Den er, at den klient, du fjernede, bliver ude, mens det gamle endepunkt forbliver lukket.