Како обновити VPN сервер без удвостручавања идентитета
Обновљени VPN сервер враћа датотеке, не тренутни приступ. Ускладите опозиве, кључеве партнера и завршне тачке пре него што друга копија одговори на руковање.
Обновили сте резервну копију, услуга је покренута и клијент се повезао из првог покушаја. Тај успех је замка. Обнова враћа датотеке које је сервер имао у тренутку снимка, а не стање приступа које се од тада променило, и ако је стара завршна тачка још доступна, сада имате две машине које одговарају на један идентитет. Решење није боља резервна копија; решење је да одлучите шта обновљени домаћин сме бити пре него што одговори и на једно руковање.
Резервна копија враћа датотеке, не овлашћење
Снимак држи конфигурацију сервера, приватне кључеве, установу за издавање сертификата, листу партнера и правила заштитног зида онаквима какви су били кад је копија настала. Не може држати оно што се после променило: уређај који сте опозвали, кључ који сте поново издали, партнера ког сте уклонили кад је преносни рачунар продат, подмрежу коју сте преместили. Обнова враћа датотеке на тај тренутак. Не враћа одлуке које су људи од тада донели.
Штета долази управо из тог јаза. Украдени преносни рачунар опозван две недеље после копије представља сертификат који се још проверава према старијем 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 порт још довршава руковање, стари домаћин је жив и удвостручавање је стварно, не теоријско.
Поново покрените обновљени домаћин и поновите провере овлашћеног и опозваног уређаја, јер тада конфигурациона датотека побеђује оно што сте променили током рада. Упоредите јавни кључ домаћина или отисак сертификата са оним који је користила машина стављена ван употребе. Подударни отисци на две живе машине значе да је обнова клонирала идентитет; подударни отисци на једној машини су у реду. Забележите обновљене верзије, отиске кључева и опозвани серијски број или кључ партнера, па узмите следећу копију након овог усклађивања, да представља сервис какав сада јесте. Радни тест није да се клијент повеже. Него да клијент ког сте уклонили остане напољу док стара завршна тачка остаје затворена.