Възстановихте резервното копие, услугата стартира и клиент се свърза от първия опит. Този успех е капанът. Възстановяването връща файловете, които сървърът е имал към момента на снимката, а не състоянието на достъп, което се е променило след това, и ако старата крайна точка е все още достъпна, сега имате две машини, които отговарят на една идентичност. Решението не е по-добро резервно копие; то е да решите какво може да бъде възстановеният хост, преди да отговори на дори едно ръкостискане.

Резервното копие връща файлове, а не правомощия

Снимката съдържа конфигурацията на сървъра, частните ключове, сертифициращия орган, списъка с партньори и правилата на защитната стена такива, каквито са били при пускането на резервното копие. Тя не може да съдържа това, което се е променило после: устройството, което сте отменили, ключа, който сте издали наново, партньора, когото сте премахнали при продажба на лаптоп, подмрежата, която сте преместили. Възстановяването връща файловете към онзи момент. То не връща решенията, които хората са взели след това.

Щетата идва именно от тази разлика. Откраднат лаптоп, отменен две седмици след резервното копие, представя сертификат, който все още се проверява срещу по-стария CRL във възстановеното дърво, и сървърът приема устройство, което сте извели от употреба. WireGuard е по-прям: партньорът е упълномощен, като е в списъка, затова изтрит след снимката партньор просто отново присъства. Никой не е одобрил отново този достъп. Старият файл го направи.

Идентичността на сървъра и идентичността на клиента се провалят по различен начин

В WireGuard идентичността на сървъра е частният ключ в wg0.conf, затова копирането на този файл на втори достъпен хост създава два сървъра с еднаква идентичност и без знание един за друг. Всеки пази свой списък с партньори. Премахнете партньор на новия хост и старият все още го приема; проверете wg show на единия и виждате половината истина. Клиентите също не превключват сами: профилът носи един Endpoint, затова устройството продължава да говори с адреса, с който е било конфигурирано, а това може да е хостът, който сте искали да изведете от употреба.

OpenVPN се дублира на същия слой със сертификат на сървъра, неговия частен ключ и статичния ключ tls-auth или tls-crypt. Копирайте и трите и клиентът не може да различи инстанциите; ако и двете са достъпни, повторно свързване може да попадне на която и да е, а всеки лог файл разказва частична история. Сертифициращият орган е по-дълбокото копие. Възстановеното дърво easy-rsa е втори източник на истина, който може да издаде валиден сертификат за всяко име, което му дадете.

Клиентите също се дублират, обикновено по време на самото мигриране. Копирането на профил на резервно устройство „само за тест“ създава второ устройство със същия ключ и общо име. С duplicate-cn и двете сесии могат да останат активни едновременно, а статичното назначаване на адрес в ccd или ifconfig-pool-persist може да влезе в конфликт с оригиналното устройство. Това са две машини с една идентичност и нищо в конфигурацията на сървъра не ги различава.

Изберете едно от три състояния за старата крайна точка

Възстановяването е безопасно само след като съдбата на старата крайна точка е решена. Изведете я от употреба: старата услуга трябва да спре да приема VPN порта преди новият хост да стартира, а ако не можете да достигнете машината, блокирайте този порт на мрежовата граница за всичко освен вашия административен източник. Поправете същия хост: повторното използване на идентичността е допустимо, защото една машина я държи, но след това унищожете дисковото копие или VM снимката на стария ключ, за да не може да се върне. Изградете двойка за наличност: два хоста се нуждаят от отделни идентичности на хостове плюс една споделена крайна точка, например плаващ адрес, балансьор на натоварването или DNS, който можете да преместите. Копирането на частния ключ не е дизайн за отказоустойчивост; това са два сървъра, претендиращи за едно име.

Потвърдете в какво състояние всъщност се намирате, преди да пипате клиенти. Старият хост, който отговаря на VPN порта, е този, който ще приеме отмененото устройство, дори DNS да се е преместил. Проверете слушателите и публичния ключ:

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

Първо съгласувайте партньори, отменяния и адреси

Избройте какво твърди възстановяването спрямо това, което е упълномощено в момента. В WireGuard wg show wg0 дава ключа, крайната точка, последното ръкостискане и броячите на трафика на всеки партньор, което е достатъчно да забележите устройство, което вече не притежавате. Премахнете го на живо с wg set wg0 peer <key> remove, после редактирайте и конфигурацията, иначе партньорът се връща при следващото стартиране. wg show wg0 allowed-ips разкрива втория проблем: два партньора на един адрес или адрес, който вече сте преназначили.

В OpenVPN списъкът с отменяния е файл с дата и възстановяване може да върне стар. Проверете го, преди клиентите да се свържат:

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

Ако последното обновяване е преди отменянето, сървърът все още зачита сертификат, който сте отменили. OpenVPN 2.4 и по-нови препрочитат CRL файла при всяка нова връзка, затова замяната на файла спира новите сесии, но установените тунели остават до предоговаряне; стойността по подразбиране на reneg-sec е 3600 секунди и именно намаляването ѝ или рестартирането на услугата ви дава промяната веднага. По-стари сборки може да не хващат файла толкова надеждно, затова рестартирайте, когато не можете да потвърдите поведението на версията. Ръководството wg(8) покрива премахването на партньор и синтаксиса allowed-ips, използвани по-горе.

Изчистете също статичните назначения за устройства, които вече не съществуват. Повторното използване на адреса на изведено устройство за ново, докато старият профил е все още инсталиран, създава точно дубликата, който се опитвате да избегнете.

Проверете с клиент, който сте отменили

Изпълнете проверките по ред, от мрежа извън тунела. Първо упълномощено устройство се свързва, разрешава DNS през изпратения резолвер и достига до частен ресурс. После отмененото устройство трябва да се провали, използвайки съществуващия си профил, а не нов. Накрая опитайте старата крайна точка отвън: ако VPN портът все още завършва ръкостискане, старият хост е жив и дублирането е реално, не теоретично.

Рестартирайте възстановения хост и повторете проверките за упълномощено и отменено устройство, защото точно тогава конфигурационният файл надделява над това, което сте променили по време на работа. Сравнете публичния ключ или отпечатъка на сертификата на хоста с този, който е използвала изведената машина. Съвпадащи отпечатъци на две живи машини означават, че възстановяването е клонирало идентичността; съвпадащи отпечатъци на една машина са нормални. Запишете възстановените версии, отпечатъците на ключовете и отменения сериен номер или ключ на партньор, после направете следващото резервно копие след това съгласуване, за да представя услугата такава, каквато е сега. Работещият тест не е, че клиент се свързва. А че премахнатият клиент остава навън, докато старата крайна точка остава затворена.

Подобни статии