Jūs atjaunojāt dublējumu, pakalpojums startēja, un klients pieslēdzās pirmajā mēģinājumā. Šie panākumi ir slazds. Atjaunošana atgriež failus, kas serverim bija momentuzņēmuma brīdī, nevis piekļuves stāvokli, kas kopš tā laika mainījies, un, ja vecais galapunkts joprojām ir sasniedzams, tagad jums ir divas mašīnas, kas atbild uz vienu identitāti. Risinājums nav labāks dublējums; risinājums ir izlemt, kas atjaunotajam resursdatoram drīkst būt, pirms tas atbild uz vienu vienīgu rokasspiedienu.

Dublējums atgriež failus, nevis pilnvaras

Momentuzņēmums satur servera konfigurāciju, privātās atslēgas, sertifikātu iestādi, vienaudžu sarakstu un ugunsmūra noteikumus tādus, kādi tie bija dublējuma laikā. Tas nevar saturēt to, kas mainījies pēc tam: ierīci, kuru atsaucāt, atslēgu, kuru izdevāt no jauna, vienaudzi, kuru noņēmāt, kad tika pārdots portatīvais dators, apakštīklu, kuru pārvietojāt. Atjaunošana pārtin failus atpakaļ uz to brīdi. Tā nepārtin atpakaļ lēmumus, ko cilvēki kopš tā laika pieņēmuši.

Kaitējums nāk tieši no šīs atstarpes. Zagts portatīvais dators, kas atsaukts divas nedēļas pēc dublējuma, uzrāda sertifikātu, kas joprojām validējas pret vecāko CRL atjaunotajā kokā, un serveris pieņem ierīci, kuru jūs izņēmāt no ekspluatācijas. WireGuard ir tiešāks: vienaudzis tiek autorizēts ar to vien, ka ir sarakstā, tāpēc pēc momentuzņēmuma dzēsts vienaudzis vienkārši atkal ir klāt. Neviens šo piekļuvi vēlreiz neapstiprināja. Vecais fails to izdarīja.

Servera identitāte un klienta identitāte sabrūk dažādos veidos

WireGuard gadījumā servera identitāte ir privātā atslēga wg0.conf failā, tāpēc šī faila kopēšana uz otru sasniedzamu resursdatoru rada divus serverus ar vienu identitāti, kas nezina viens par otru. Katrs uztur savu vienaudžu sarakstu. Noņemiet vienaudzi jaunajā resursdatorā, un vecais to joprojām pieņem; pārbaudiet wg show vienā un redzēsiet pusi patiesības. Arī klienti paši nepārslēdzas: profils satur vienu Endpoint, tāpēc ierīce turpina runāt ar adresi, ar kuru tā tika konfigurēta, un tā var būt mašīna, kuru gribējāt izņemt no ekspluatācijas.

OpenVPN dublējas tajā pašā slānī ar servera sertifikātu, tā privāto atslēgu un statisko atslēgu tls-auth vai tls-crypt. Nokopējiet visus trīs, un klients nevarēs atšķirt eksemplārus; ja abi ir sasniedzami, atkārtots savienojums var nonākt uz jebkura, un katrs žurnālfails stāsta daļēju stāstu. Sertifikātu iestāde ir dziļākā kopija. Atjaunots easy-rsa koks ir otrs patiesības avots, kas var izsniegt derīgu sertifikātu jebkuram jūsu dotajam vārdam.

Arī klienti tiek dublēti, parasti pašas migrācijas laikā. Profila kopēšana uz rezerves ierīci «tikai pārbaudei» rada otru ierīci ar to pašu atslēgu un kopēju nosaukumu. Ar duplicate-cn abas sesijas var būt aktīvas vienlaikus, un statiskā adreses piešķiršana ccd vai ifconfig-pool-persist var sadurties ar oriģinālo ierīci. Tās ir divas mašīnas ar vienu identitāti, un nekas servera konfigurācijā tās neatšķir.

Vecajam galapunktam izvēlieties vienu no trim stāvokļiem

Atjaunošana ir droša tikai tad, kad vecā galapunkta liktenis ir izlemts. Izņemiet to no ekspluatācijas: vecajam pakalpojumam jāpārstāj pieņemt VPN ports pirms jaunā resursdatora starta, un, ja nevarat sasniegt mašīnu, bloķējiet šo portu tīkla malā visam, izņemot jūsu administratīvo avotu. Salabojiet to pašu resursdatoru: identitātes atkārtota izmantošana ir pareiza, jo to tur viena mašīna, bet pēc tam iznīciniet vecās atslēgas diska kopiju vai VM momentuzņēmumu, lai tā nevarētu atgriezties. Izveidojiet pieejamības pāri: diviem resursdatoriem vajadzīgas atšķirīgas resursdatoru identitātes un viens kopīgs galapunkts, piemēram, peldoša adrese, slodzes balansētājs vai pārvietojams DNS. Privātās atslēgas kopēšana nav failover dizains; tie ir divi serveri, kas pretendē uz vienu vārdu.

Pirms pieskaraties klientiem, pārliecinieties, kādā stāvoklī jūs patiešām esat. Vecais resursdators, kas atbild VPN portā, ir tas, kas pieņems atsaukto ierīci, pat ja DNS ir pārvietots. Pārbaudiet klausītājus un publisko atslēgu:

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

Vispirms saskaņojiet vienaudžus, atsaukumus un adreses

Uzskaitiet, ko atjaunošana apgalvo pret to, kas pašlaik ir autorizēts. WireGuard gadījumā wg show wg0 sniedz katra vienaudža atslēgu, galapunktu, pēdējo rokasspiedienu un pārsūtīšanas skaitītājus, ar ko pietiek, lai pamanītu ierīci, kas vairs nepieder jums. Noņemiet to dzīvajā ar wg set wg0 peer <key> remove, pēc tam rediģējiet arī konfigurāciju, citādi vienaudzis atgriezīsies nākamajā startā. wg show wg0 allowed-ips atklāj otro problēmu: divi vienaudži vienā adresē vai adrese, kuru jau esat pārdalījis.

OpenVPN gadījumā atsaukumu saraksts ir fails ar datumu, un atjaunošana var atgriezt veco. Pārbaudiet to pirms klientu savienošanās:

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

Ja pēdējais atjauninājums ir pirms atsaukuma, serveris joprojām godina sertifikātu, kuru atsaucāt. OpenVPN 2.4 un jaunāki atkārtoti nolasa CRL failu katram jaunam savienojumam, tāpēc faila aizstāšana aptur jaunas sesijas, bet izveidotie tuneļi saglabājas līdz atkārtotām sarunām; reneg-sec noklusējums ir 3600 sekundes, un tieši tā samazināšana vai pakalpojuma restartēšana dod jums izmaiņas tagad. Vecākas versijas var neuztvert failu tik uzticami, tāpēc restartējiet, ja nevarat apstiprināt versijas uzvedību. wg(8) rokasgrāmata aptver iepriekš izmantoto vienaudža noņemšanu un allowed-ips sintaksi.

Iztīriet arī statiskos piešķīrumus ierīcēm, kas vairs neeksistē. No ekspluatācijas izņemtas ierīces adreses atkārtota izmantošana jaunai ierīcei, kamēr vecais profils vēl ir instalēts, rada tieši to dublikātu, no kura cenšaties izvairīties.

Pārbaudiet ar klientu, kuru atsaucāt

Veiciet pārbaudes secībā, no tīkla ārpus tuneļa. Vispirms autorizēta ierīce pieslēdzas, atrisina DNS caur piespiesto risinātāju un sasniedz privātu resursu. Pēc tam atsauktajai ierīcei jācieš neveiksme, izmantojot esošo profilu, nevis jaunu. Tad izmēģiniet veco galapunktu no ārpuses: ja VPN ports joprojām pabeidz rokasspiedienu, vecais resursdators ir dzīvs un dublēšanās ir reāla, nevis teorētiska.

Restartējiet atjaunoto resursdatoru un atkārtojiet autorizētās un atsauktās ierīces pārbaudes, jo tieši tad konfigurācijas fails uzvar pār to, ko mainījāt izpildes laikā. Salīdziniet resursdatora publisko atslēgu vai sertifikāta nospiedumu ar to, ko izmantoja no ekspluatācijas izņemtā mašīna. Vienādi nospiedumi divās dzīvās mašīnās nozīmē, ka atjaunošana klonēja identitāti; vienādi nospiedumi vienā mašīnā ir normāli. Pierakstiet atjaunotās versijas, atslēgu nospiedumus un atsaukto sērijas numuru vai vienaudža atslēgu, pēc tam pēc šīs saskaņošanas izveidojiet nākamo dublējumu, lai tas atspoguļotu pakalpojumu tādu, kāds tas tagad ir. Strādājošais tests nav tas, ka klients pieslēdzas. Bet gan tas, ka noņemtais klients paliek ārā, kamēr vecais galapunkts paliek slēgts.

Saistītie raksti