Obnovili ste varnostno kopijo, storitev se je zagnala in odjemalec se je povezal v prvem poskusu. Ta uspeh je past. Obnovitev vrne datoteke, ki jih je strežnik imel v trenutku posnetka, ne stanja dostopa, ki se je od takrat spremenilo, in če je stara končna točka še dosegljiva, imate zdaj dva stroja, ki odgovarjata na eno identiteto. Rešitev ni boljša varnostna kopija; rešitev je odločiti, kaj sme biti obnovljeni gostitelj, preden odgovori na eno samo rokovanje.

Varnostna kopija vrne datoteke, ne pooblastila

Posnetek vsebuje konfiguracijo strežnika, zasebne ključe, potrditveno ustanovo, seznam partnerjev in pravila požarnega zidu takšna, kakršna so bila ob izvajanju kopije. Ne more vsebovati tega, kar se je pozneje spremenilo: naprave, ki ste jo preklicali, ključa, ki ste ga znova izdali, partnerja, ki ste ga odstranili ob prodaji prenosnika, podomrežja, ki ste ga premaknili. Obnovitev previje datoteke nazaj v tisti trenutek. Ne previje odločitev, ki so jih ljudje sprejeli od takrat.

Škoda izhaja prav iz te vrzeli. Ukraden prenosnik, preklican dva tedna po kopiji, predloži potrdilo, ki se še vedno preverja glede na starejši CRL v obnovljenem drevesu, in strežnik sprejme napravo, ki ste jo umaknili iz uporabe. WireGuard je bolj neposreden: partner je pooblaščen s tem, da je na seznamu, zato je partner, izbrisan po posnetku, preprosto spet prisoten. Nihče ni tega dostopa znova odobril. Stara datoteka ga je.

Identiteta strežnika in identiteta odjemalca odpovedujeta na različne načine

Pri WireGuardu je identiteta strežnika zasebni ključ v wg0.conf, zato kopiranje te datoteke na drugega dosegljivega gostitelja ustvari dva strežnika z isto identiteto, ki drug o drugem ne vesta nič. Vsak vodi svoj seznam partnerjev. Odstranite partnerja na novem gostitelju in stari ga še vedno sprejme; preverite wg show na enem in vidite polovico resnice. Odjemalci se tudi sami ne preklopijo: profil nosi en Endpoint, zato naprava še naprej govori z naslovom, s katerim je bila konfigurirana, to pa je lahko gostitelj, ki ste ga hoteli umakniti.

OpenVPN se podvaja v istem sloju s potrdilom strežnika, njegovim zasebnim ključem in statičnim ključem tls-auth ali tls-crypt. Kopirajte vse tri in odjemalec ne more razlikovati instanc; če sta obe dosegljivi, lahko ponovna povezava pristane na kateri koli, vsaka dnevniška datoteka pa pripoveduje delno zgodbo. Potrditvena ustanova je globlja kopija. Obnovljeno easy-rsa drevo je drugi vir resnice, ki lahko izda veljavno potrdilo za katero koli ime, ki mu ga daste.

Tudi odjemalci se podvajajo, običajno med samo selitvijo. Kopiranje profila na rezervno napravo «samo za preizkus» ustvari drugo napravo z istim ključem in istim skupnim imenom. Z duplicate-cn lahko obe seji ostaneta aktivni hkrati, statična dodelitev naslova v ccd ali ifconfig-pool-persist pa lahko trči ob prvotno napravo. To sta dva stroja z eno identiteto in nič v konfiguraciji strežnika ju ne razlikuje.

Izberite eno od treh stanj za staro končno točko

Obnovitev je varna šele, ko je usoda stare končne točke odločena. Umaknite jo: stara storitev mora prenehati sprejemati vrata VPN, preden se novi gostitelj zažene, in če do stroja ne morete, blokirajte ta vrata na robu omrežja za vse razen vašega administrativnega vira. Popravite isti gostitelj: ponovna uporaba identitete je v redu, ker jo drži en stroj, a nato uničite kopijo na disku ali posnetek VM starega ključa, da se ne more vrniti. Zgradite par razpoložljivosti: dva gostitelja potrebujeta ločeni identiteti gostiteljev in eno skupno končno točko, na primer plavajoči naslov, razporejevalnik obremenitve ali DNS, ki ga lahko premaknete. Kopiranje zasebnega ključa ni načrt failoverja; to sta dva strežnika, ki si lastita eno ime.

Preden se dotaknete odjemalcev, potrdite, v katerem stanju ste v resnici. Stari gostitelj, ki odgovarja na vratih VPN, je tisti, ki bo sprejel preklicano napravo, tudi če se je DNS premaknil. Preverite poslušalce in javni ključ:

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

Najprej uskladite partnerje, preklice in naslove

Naštejte, kaj obnovitev zatrjuje v primerjavi s tem, kar je trenutno pooblaščeno. Pri WireGuardu wg show wg0 da ključ, končno točko, zadnje rokovanje in števce prenosa vsakega partnerja, kar zadošča, da opazite napravo, ki je ne posedujete več. Odstranite jo v živo z wg set wg0 peer <key> remove, nato uredite tudi konfiguracijo, sicer se partner vrne ob naslednjem zagonu. wg show wg0 allowed-ips razkrije drugo težavo: dva partnerja na enem naslovu ali naslov, ki ste ga že prerazporedili.

Pri OpenVPN je seznam preklicev datoteka z datumom in obnovitev lahko vrne starega. Preverite ga, preden se odjemalci povežejo:

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

Če je zadnja posodobitev pred preklicem, strežnik še vedno spoštuje potrdilo, ki ste ga preklicali. OpenVPN 2.4 in novejši znova preberejo datoteko CRL ob vsaki novi povezavi, zato zamenjava datoteke ustavi nove seje, a vzpostavljeni tuneli vztrajajo do ponovnih pogajanj; privzeta vrednost reneg-sec je 3600 sekund in prav njena znižitev ali ponovni zagon storitve vam da spremembo takoj. Starejše gradnje morda ne preberejo datoteke tako zanesljivo, zato znova zaženite, ko ne morete potrditi vedenja različice. Priročnik wg(8) pokriva odstranitev partnerja in sintakso allowed-ips, uporabljeno zgoraj.

Počistite tudi statične dodelitve za naprave, ki jih ni več. Ponovna uporaba naslova umaknjene naprave za novo, medtem ko je stari profil še nameščen, ustvari natanko tisti dvojnik, ki se mu skušate izogniti.

Preverite z odjemalcem, ki ste ga preklicali

Izvedite preverjanja po vrsti, iz omrežja zunaj tunela. Najprej se pooblaščena naprava poveže, razreši DNS prek potisnjenega razreševalnika in doseže zasebni vir. Nato mora preklicana naprava odpovedati, z uporabo svojega obstoječega profila in ne novega. Nato poskusite staro končno točko od zunaj: če vrata VPN še vedno dokončajo rokovanje, je stari gostitelj živ in podvajanje je resnično, ne teoretično.

Znova zaženite obnovljenega gostitelja in ponovite preverjanja pooblaščene in preklicane naprave, ker takrat konfiguracijska datoteka premaga to, kar ste spremenili med delovanjem. Primerjajte javni ključ ali odtis potrdila gostitelja s tistim, ki ga je uporabljal umaknjeni stroj. Ujemajoči se odtisi na dveh živih strojih pomenijo, da je obnovitev klonirala identiteto; ujemajoči se odtisi na enem stroju so v redu. Zabeležite obnovljene različice, odtise ključev in preklicano serijsko številko ali ključ partnerja, nato po tej uskladitvi naredite naslednjo varnostno kopijo, da bo predstavljala storitev, kakršna je zdaj. Delujoč preizkus ni to, da se odjemalec poveže. Je to, da odjemalec, ki ste ga odstranili, ostane zunaj, medtem ko stara končna točka ostane zaprta.

Sorodni članki