Заключени извън VPN сървъра си: запазете втори път за достъп
Счупен тунел не бива да отнема и способността ви да поправите сървъра. Планирайте, тествайте и преглеждайте независим административен път, преди да ви потрябва.
Отваряте конзолата, променяте едно правило на защитната стена и тунелът, през който сте били свързани, изчезва. Промяната беше правилна, презареждането — не, и сега единственият път обратно към машината е този, който току-що счупихте. Вторият път за достъп е проектно решение и трябва да съществува преди прекъсването, а не по време на него.
Прегледайте какво още ви е останало
Започнете от конзолния екран пред вас и избройте пътищата, които не зависят от тунела. Уеб конзола на доставчика със серийна или VNC сесия е един. Интерфейс за управление в отделна мрежа е друг. Физическият достъп е трети и именно неговата липса хората откриват в най-лошия момент.
| Path | Depends on | Usually fails when |
|---|---|---|
| Provider console | Account access and the provider's own API | Credentials live in a wiki only reachable over the tunnel |
| Management subnet | A second interface and its own routing | The bad change was a global route or firewall policy |
| Second tunnel | A different listener, port and credentials | Both listeners were changed in the same edit |
| Physical or local console | Being in the building | Nobody has been in the building for a year |
Четете третата колона като списък с откази, а не като абстракция. Два от тези пътища обикновено се провалят по една и съща причина. Таблицата е начинът да го забележите, преди прекъсване да ви го обясни.
Независимостта е въпрос на зависимости
Акаунтът за възстановяване не е независим, ако паролата му се пази в услуга, до която стигате през тунела. Втори VPN на същия хост, същия порт и същата политика на защитната стена също не е независим, защото промяната, която счупи първия, чупи и двата.
Слезте по веригата и назовете какво изисква всяка стъпка. Мрежова достижимост, разрешаване на имена, източник за удостоверяване и самата услуга за управление са четири отделни зависимости и път, който споделя която и да е от тях, наследява този отказ.
Пътят, който никога не е тестван, заслужава собствено подозрение. Конзола, която не е отваряна от месеци, може да изисква нулиране на паролата по имейл, а тази пощенска кутия може да се хоства на машината, до която не достигате. Тествайте пътя, докато всичко работи, и ще откриете това в спокоен следобед.
Използвайте втория път за една контролирана промяна
От конзолата направете моментна снимка или копирайте конфигурацията, която ще редактирате. Променете едно нещо. Презаредете услугата и прочетете резултата, преди да пипате друго, защото две промени наведнъж превръщат възстановяването в експеримент.
Дръжте сесията за възстановяване отворена, докато го правите. Цялата стойност на втория път е, че той оцелява при това, което променяте, затова затварянето му първо премахва единственото свойство, което го правеше полезен.
Проверявайте от пътя за възстановяване, а не по памет
Проверката, която има значение, е дали нормалният път се връща, а сесията за възстановяване е мястото, където го потвърждавате по ред:
systemctl status openvpn-server@server --no-pager ss -lntup | grep -E ':(1194|443)\b' nft list ruleset | sed -n '1,40p' journalctl -u openvpn-server@server --since '-10 min' --no-pager | tail -n 30
Прочетете първо състоянието на услугата, после слушателя, после правилата, после журнала. Услуга, която работи без слушател, сочи към конфигурацията на услугата, докато слушател без достижими правила сочи към филтрирането. Редът е важен, защото всяка стъпка стеснява следващата, а прескачането към журнала обикновено означава четене на грешки, които описват симптома, а не причината.
Документацията на systemctl описва поведението на състоянието и рестартирането, използвани тук, включително как неуспешното презареждане оставя предишния процес да работи. Възстановяването на съгласувана версия е по-добре от многократно пресвързване от клиент, който не може да поправи сървъра. Ако условието за връщане назад, което сте определили преди промяната, е изпълнено, възстановете и спрете.
Поддържайте инвентара актуален
Преглеждайте списъка за достъп, когато хората или инфраструктурата се променят. Тествайте пътя за възстановяване, докато всичко работи. Оттегляйте акаунтите, които никой не е използвал от последната реорганизация. Два остарели акаунта и един изтекъл сертификат са малко почистване във вторник и прекъсване в неделя.
Записвайте кой може да използва всеки път, какво позволява той и как се сменят удостоверенията. Път за възстановяване без собственик се превръща в забравен вход, което е различен вид отказ от това да си заключен извън сървъра.