Obnovili jste zálohu, služba naběhla a klient se připojil na první pokus. Ten úspěch je past. Obnova vrací soubory, které server měl v okamžiku snímku, ne stav přístupu, který se od té doby změnil, a pokud je starý koncový bod stále dostupný, máte teď dva stroje odpovídající na jednu identitu. Řešením není lepší záloha; řešením je rozhodnout, čím obnovený hostitel smí být, než odpoví na jediný handshake.

Záloha vrací soubory, ne pravomoc

Snímek obsahuje konfiguraci serveru, soukromé klíče, certifikační autoritu, seznam peerů a pravidla firewallu tak, jak byla při běhu zálohy. Nemůže obsahovat to, co se změnilo potom: zařízení, které jste odvolali, klíč, který jste znovu vydali, peer, kterého jste odstranili při prodeji notebooku, podsíť, kterou jste přesunuli. Obnova vrátí soubory do toho okamžiku. Nevrátí rozhodnutí, která lidé od té doby učinili.

Škoda přichází právě z této mezery. Ukradený notebook odvolaný dva týdny po záloze předloží certifikát, který se stále ověřuje proti starší CRL v obnoveném stromu, a server přijme zařízení, které jste vyřadili. WireGuard je přímočařejší: peer je autorizován tím, že je v seznamu, takže peer smazaný po snímku je prostě znovu přítomen. Nikdo ten přístup znovu neschválil. Starý soubor ano.

Identita serveru a identita klienta selhávají různými způsoby

U WireGuardu je identitou serveru soukromý klíč v wg0.conf, takže zkopírování tohoto souboru na druhého dostupného hostitele vytvoří dva servery se stejnou identitou a bez vědomí o sobě. Každý si drží vlastní seznam peerů. Odeberte peera na novém hostiteli a starý ho stále přijímá; zkontrolujte wg show na jednom a vidíte polovinu pravdy. Klienti se také sami nepřepínají: profil nese jeden Endpoint, takže zařízení dál mluví s adresou, na kterou bylo nakonfigurováno, což může být hostitel, který jste chtěli vyřadit.

OpenVPN se duplikuje ve stejné vrstvě certifikátem serveru, jeho soukromým klíčem a statickým klíčem tls-auth nebo tls-crypt. Zkopírujte všechny tři a klient instance nerozezná; pokud jsou obě dostupné, opětovné připojení může přistát na kterékoli a každý log vypráví částečný příběh. Certifikační autorita je hlubší kopie. Obnovený strom easy-rsa je druhý zdroj pravdy, který může vydat platný certifikát na jakékoli jméno, které mu dáte.

Duplikují se i klienti, obvykle při samotné migraci. Zkopírování profilu na náhradní zařízení „jen na test“ vytvoří druhé zařízení se stejným klíčem a společným jménem. S duplicate-cn mohou obě relace zůstat živé současně a statické přidělení adresy v ccd nebo ifconfig-pool-persist se může střetnout s původním zařízením. To jsou dva stroje s jednou identitou a nic v konfiguraci serveru je nerozlišuje.

Vyberte jeden ze tří stavů pro starý koncový bod

Obnova je bezpečná jen tehdy, když je osud starého koncového bodu rozhodnut. Vyřaďte ho: stará služba musí přestat přijímat VPN port dřív, než nový hostitel nastartuje, a pokud se na stroj nedostanete, zablokujte ten port na okraji sítě pro vše kromě vašeho administrativního zdroje. Opravte stejného hostitele: znovupoužití identity je v pořádku, protože ji drží jeden stroj, ale poté zničte diskovou kopii nebo snímek VM starého klíče, aby se nemohl vrátit. Postavte pár dostupnosti: dva hostitelé potřebují odlišné identity hostitelů plus jeden sdílený koncový bod, například plovoucí adresu, load balancer nebo DNS, které můžete přesunout. Kopírování soukromého klíče není návrh failoveru; to jsou dva servery nárokující si jedno jméno.

Než se dotknete klientů, potvrďte, v jakém stavu skutečně jste. Starý hostitel odpovídající na VPN portu je ten, kdo přijme odvolané zařízení, i když se DNS posunul. Zkontrolujte posluchače a veřejný klíč:

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

Nejprve slaďte peery, odvolání a adresy

Vypište, co obnova tvrdí, proti tomu, co je právě autorizováno. Na WireGuardu wg show wg0 dává klíč, koncový bod, poslední handshake a přenosové počítadla každého peera, což stačí k odhalení zařízení, které už nevlastníte. Odstraňte ho za běhu pomocí wg set wg0 peer <key> remove, pak upravte i konfiguraci, jinak se peer při dalším startu vrátí. wg show wg0 allowed-ips odhaluje druhý problém: dva peery na jedné adrese nebo adresu, kterou jste už přeřadili.

U OpenVPN je seznam odvolání soubor s datem a obnova může vrátit starý. Zkontrolujte ho, než se klienti připojí:

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

Pokud je poslední aktualizace starší než odvolání, server stále uznává certifikát, který jste odvolali. OpenVPN 2.4 a novější znovu čtou soubor CRL pro každé nové spojení, takže nahrazení souboru zastaví nové relace, ale zavedené tunely přetrvávají do renegociace; výchozí reneg-sec je 3600 sekund a právě jeho snížení nebo restart služby vám dá změnu hned. Starší sestavení nemusí soubor načítat tak spolehlivě, takže restartujte, když nemůžete chování verze potvrdit. Manuál wg(8) pokrývá odstranění peera a syntaxi allowed-ips použitou výše.

Vyčistěte také statická přidělení pro zařízení, která už neexistují. Znovupoužití adresy vyřazeného zařízení pro nové, dokud je starý profil stále nainstalovaný, vytváří přesně ten duplikát, kterému se snažíte vyhnout.

Ověřte s klientem, kterého jste odvolali

Proveďte kontroly v pořadí, ze sítě mimo tunel. Nejprve se autorizované zařízení připojí, přeloží DNS přes pushovaný resolver a dosáhne soukromého zdroje. Pak musí odvolané zařízení selhat, s použitím svého stávajícího profilu, ne nového. Potom vyzkoušejte starý koncový bod zvenku: pokud VPN port stále dokončí handshake, starý hostitel je živý a duplikace je skutečná, ne teoretická.

Restartujte obnoveného hostitele a zopakujte kontroly autorizovaného a odvolaného zařízení, protože právě tehdy konfigurační soubor přebije to, co jste změnili za běhu. Porovnejte veřejný klíč nebo otisk certifikátu hostitele s tím, který používal vyřazený stroj. Shodné otisky na dvou živých strojích znamenají, že obnova identitu naklonovala; shodné otisky na jednom stroji jsou v pořádku. Zaznamenejte obnovené verze, otisky klíčů a odvolané sériové číslo nebo klíč peera, potom po tomto sjednocení pořiďte další zálohu, aby představovala službu takovou, jaká je nyní. Fungující test není to, že se klient připojí. Je to, že klient, kterého jste odstranili, zůstane venku, zatímco starý koncový bod zůstane zavřený.

Související články