Ako obnoviť VPN server bez duplikovania identít
Obnovený VPN server vracia súbory, nie aktuálny prístup. Zosúlaďte odvolania, kľúče peerov a koncové body, kým druhá kópia odpovie na handshake.
Obnovili ste zálohu, služba sa spustila a klient sa pripojil na prvý pokus. Ten úspech je pasca. Obnovenie vracia súbory, ktoré mal server v okamihu snímky, nie stav prístupu, ktorý sa odvtedy zmenil, a ak je starý koncový bod stále dostupný, máte teraz dva stroje odpovedajúce na jednu identitu. Riešením nie je lepšia záloha; riešením je rozhodnúť, čím obnovený hostiteľ smie byť, kým odpovie na jediný handshake.
Záloha vracia súbory, nie oprávnenie
Snímka obsahuje konfiguráciu servera, súkromné kľúče, certifikačnú autoritu, zoznam peerov a pravidlá firewallu také, aké boli pri behu zálohy. Nemôže obsahovať to, čo sa zmenilo potom: zariadenie, ktoré ste odvolali, kľúč, ktorý ste znovu vydali, peera, ktorého ste odstránili pri predaji notebooku, podsieť, ktorú ste presunuli. Obnovenie vráti súbory do toho okamihu. Nevráti rozhodnutia, ktoré ľudia odvtedy urobili.
Škoda prichádza práve z tejto medzery. Ukradnutý notebook odvolaný dva týždne po zálohe predloží certifikát, ktorý sa stále overuje voči staršej CRL v obnovenom strome, a server prijme zariadenie, ktoré ste vyradili. WireGuard je priamočarejší: peer je autorizovaný tým, že je v zozname, takže peer zmazaný po snímke je jednoducho znova prítomný. Nikto ten prístup znova neschválil. Urobil to starý súbor.
Identita servera a identita klienta zlyhávajú rôznymi spôsobmi
V WireGuarde je identitou servera súkromný kľúč v wg0.conf, takže skopírovanie tohto súboru na druhého dostupného hostiteľa vytvorí dva servery s tou istou identitou a bez vedomia o sebe. Každý si drží vlastný zoznam peerov. Odstráňte peera na novom hostiteľovi a starý ho stále prijíma; skontrolujte wg show na jednom a vidíte polovicu pravdy. Klienti sa tiež sami neprepínajú: profil nesie jeden Endpoint, takže zariadenie ďalej hovorí s adresou, na ktorú bolo nakonfigurované, čo môže byť hostiteľ, ktorého ste chceli vyradiť.
OpenVPN sa duplikuje v tej istej vrstve certifikátom servera, jeho súkromným kľúčom a statickým kľúčom tls-auth alebo tls-crypt. Skopírujte všetky tri a klient inštancie nerozozná; ak sú obe dostupné, opätovné pripojenie môže pristáť na ktorejkoľvek a každý log rozpráva čiastočný príbeh. Certifikačná autorita je hlbšia kópia. Obnovený strom easy-rsa je druhý zdroj pravdy, ktorý môže vydať platný certifikát na akékoľvek meno, ktoré mu dáte.
Duplikujú sa aj klienti, zvyčajne počas samotnej migrácie. Skopírovanie profilu na náhradné zariadenie „len na test“ vytvorí druhé zariadenie s rovnakým kľúčom a spoločným menom. S duplicate-cn môžu obe relácie zostať živé súčasne a statické pridelenie adresy v ccd alebo ifconfig-pool-persist sa môže zraziť s pôvodným zariadením. To sú dva stroje s jednou identitou a nič v konfigurácii servera ich nerozlišuje.
Vyberte jeden z troch stavov pre starý koncový bod
Obnovenie je bezpečné len vtedy, keď je osud starého koncového bodu rozhodnutý. Vyraďte ho: stará služba musí prestať prijímať port VPN skôr, než nový hostiteľ naštartuje, a ak sa na stroj nedostanete, zablokujte ten port na okraji siete pre všetko okrem vášho administratívneho zdroja. Opravte toho istého hostiteľa: opätovné použitie identity je v poriadku, pretože ju drží jeden stroj, ale potom zničte diskovú kópiu alebo snímku VM starého kľúča, aby sa nemohol vrátiť. Postavte pár dostupnosti: dvaja hostitelia potrebujú odlišné identity hostiteľov plus jeden spoločný koncový bod, napríklad plávajúcu adresu, load balancer alebo DNS, ktoré môžete presunúť. Kopírovanie súkromného kľúča nie je návrh failoveru; to sú dva servery nárokujúce si jedno meno.
Pred dotykom klientov potvrďte, v akom stave skutočne ste. Starý hostiteľ odpovedajúci na porte VPN je ten, ktorý prijme odvolané zariadenie, aj keď sa DNS posunul. Skontrolujte poslucháčov a verejný kľúč:
ss -lunp | grep -E ':51820|:1194'
wg show wg0
wg pubkey < /etc/wireguard/server.key
Najprv zosúlaďte peerov, odvolania a adresy
Vypíšte, čo obnovenie tvrdí, proti tomu, čo je práve autorizované. V WireGuarde wg show wg0 dáva kľúč, koncový bod, posledný handshake a prenosové počítadlá každého peera, čo stačí na odhalenie zariadenia, ktoré už nevlastníte. Odstráňte ho za behu pomocou wg set wg0 peer <key> remove, potom upravte aj konfiguráciu, inak sa peer pri ďalšom štarte vráti. wg show wg0 allowed-ips odhaľuje druhý problém: dvaja peeri na jednej adrese alebo adresa, ktorú ste už preradili.
V OpenVPN je zoznam odvolaní súbor s dátumom a obnovenie môže vrátiť starý. Skontrolujte ho, kým sa klienti pripoja:
openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate
grep -E 'crl-verify|reneg-sec' /etc/openvpn/server.conf
Ak je posledná aktualizácia staršia ako odvolanie, server stále uznáva certifikát, ktorý ste odvolali. OpenVPN 2.4 a novšie znovu čítajú súbor CRL pri každom novom spojení, takže nahradenie súboru zastaví nové relácie, ale zavedené tunely pretrvávajú do renegociácie; predvolená hodnota reneg-sec je 3600 sekúnd a práve jej zníženie alebo reštart služby vám dá zmenu hneď. Staršie zostavenia nemusia súbor načítať tak spoľahlivo, preto reštartujte, keď nemôžete potvrdiť správanie verzie. Manuál wg(8) pokrýva odstránenie peera a syntax allowed-ips použitú vyššie.
Vyčistite aj statické pridelenia pre zariadenia, ktoré už neexistujú. Opätovné použitie adresy vyradeného zariadenia pre nové, kým je starý profil ešte nainštalovaný, vytvára presne ten duplikát, ktorému sa snažíte vyhnúť.
Overte s klientom, ktorého ste odvolali
Vykonajte kontroly v poradí, zo siete mimo tunela. Najprv sa autorizované zariadenie pripojí, preloží DNS cez pushovaný resolver a dosiahne súkromný zdroj. Potom odvolané zariadenie musí zlyhať, s použitím svojho existujúceho profilu, nie nového. Potom skúste starý koncový bod zvonka: ak port VPN ešte dokončí handshake, starý hostiteľ je živý a duplikácia je skutočná, nie teoretická.
Reštartujte obnoveného hostiteľa a zopakujte kontroly autorizovaného a odvolaného zariadenia, pretože vtedy konfiguračný súbor prekoná to, čo ste zmenili za behu. Porovnajte verejný kľúč alebo odtlačok certifikátu hostiteľa s tým, ktorý používal vyradený stroj. Zhodné odtlačky na dvoch živých strojoch znamenajú, že obnovenie identitu naklonovalo; zhodné odtlačky na jednom stroji sú v poriadku. Zaznamenajte obnovené verzie, odtlačky kľúčov a odvolané sériové číslo alebo kľúč peera, potom po tomto zjednotení urobte ďalšiu zálohu, aby predstavovala službu takú, aká je teraz. Fungujúci test nie je to, že sa klient pripojí. Je to, že klient, ktorého ste odstránili, zostane vonku, kým starý koncový bod zostane zavretý.