Ја вративте резервната копија, услугата стартуваше и клиентот се поврза од прв обид. Тој успех е стапицата. Враќањето ги враќа датотеките што серверот ги имал во моментот на снимката, а не состојбата на пристап што се променила оттогаш, и ако старата крајна точка е сѐ уште достапна, сега имате две машини што одговараат на еден идентитет. Решението не е подобра резервна копија; решението е да одлучите што смее да биде вратениот домаќин пред да одговори на едно ракување.

Резервната копија враќа датотеки, не овластување

Снимката ги содржи конфигурацијата на серверот, приватните клучеви, сертификациското тело, списокот партнери и правилата на огнениот ѕид онакви какви што биле кога се извршила копијата. Не може да го содржи она што се променило потоа: уредот што го отповикавте, клучот што го издадовте повторно, партнерот што го отстранивте кога се продаде преносен компјутер, подмрежата што ја преместивте. Враќањето ги враќа датотеките во тој момент. Не ги враќа одлуките што луѓето ги донеле оттогаш.

Штетата доаѓа токму од овој јаз. Украден преносен компјутер отповикан две недели по копијата прикажува сертификат што сѐ уште се проверува против постариот CRL во вратеното дрво, и серверот прифаќа уред што сте го пензионирале. WireGuard е понепосреден: партнерот е овластен со тоа што е на списокот, па партнерот избришан по снимката едноставно повторно е присутен. Никој не го одобри тој пристап повторно. Старата датотека го направи.

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

Кај WireGuard идентитетот на серверот е приватниот клуч во wg0.conf, па копирањето на таа датотека на втор достапен домаќин создава два сервери со ист идентитет и без знаење еден за друг. Секој држи свој список партнери. Отстранете партнер на новиот домаќин и стариот сѐ уште го прифаќа; проверете wg show на едниот и ќе видите половина од вистината. Ни клиентите не префрлаат сами: профилот носи еден Endpoint, па уредот продолжува да зборува со адресата со која бил конфигуриран, а тоа може да биде домаќинот што сакавте да го пензионирате.

OpenVPN се дуплицира на истиот слој со серверски сертификат, неговиот приватен клуч и статичниот клуч tls-auth или tls-crypt. Копирајте ги трите и клиентот не може да ги разликува примероците; ако и двата се достапни, повторното поврзување може да слета на кој било, и секоја датотека на дневник раскажува половина приказна. Сертификациското тело е подлабоката копија. Вратеното easy-rsa дрво е втор извор на вистина што може да издаде валиден сертификат за кое било име што ќе му го дадете.

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

Изберете една од три состојби за старата крајна точка

Враќањето е безбедно само кога судбината на старата крајна точка е одлучена. Пензионирајте ја: старата услуга мора да престане да го прифаќа VPN портот пред да стартува новиот домаќин, а ако не можете да стигнете до машината, блокирајте го тој порт на работ на мрежата за сѐ освен вашиот административен извор. Поправете го истиот домаќин: повторната употреба на идентитетот е во ред бидејќи една машина го држи, но потоа уништете ја копијата на дискот или VM снимката од стариот клуч за да не може да се врати. Изградете пар на достапност: два домаќини бараат различни идентитети на домаќин плус една заедничка крајна точка, како лебдечка адреса, балансер на оптоварување или DNS што можете да го преместите. Копирањето на приватниот клуч не е failover дизајн; тоа се два сервери што бараат едно име.

Потврдете во која состојба навистина сте пред да ги допрете клиентите. Стариот домаќин што одговара на 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 портот сѐ уште завршува ракување, стариот домаќин е жив и дупликатот е вистински, не теоретски.

Рестартирајте го вратениот домаќин и повторете ги проверките за овластен и отповикан уред, бидејќи тогаш конфигурациската датотека победува над она што сте го смениле при извршување. Споредете го јавниот клуч или отпечатокот на сертификатот на домаќинот со тој што го користела пензионираната машина. Исти отпечатоци на две живи машини значат дека враќањето го клонирало идентитетот; исти отпечатоци на една машина се во ред. Забележете ги вратените верзии, отпечатоците на клучевите и отповиканиот сериски број или клуч на партнер, потоа направете ја следната резервна копија по ова усогласување, за да ја претставува услугата каква што е сега. Работечкиот тест не е дека клиентот се поврзува. Туку дека отстранетиот клиент останува надвор, додека старата крајна точка останува затворена.

Поврзани статии