Аўтаматычныя абнаўленні VPN-сервера патрабуюць праверанага шляху аднаўлення
Абнаўленне можа перазапусціць тую самую службу, праз якую вы дабіраецеся да сервера. Параўнайце пазапалосную кансоль з планам аднаўлення толькі праз тунель, перш чым аўтаматызаваць.
Аўтаматычныя абнаўленні — разумная палітыка для сервера, да якога вы дабіраецеся праз яго ўласны VPN, і адначасова адзіная кропка адмовы, якую вы ствараеце сабе самі. Аперацыя пакета перазапускае службу, тунель падае, і адміністрацыйны шлях, які вы выкарыстоўвалі, знікае разам з ім. Існуюць дзве мадэлі аднаўлення, і выбар паміж імі залежыць ад адной умовы: ці ёсць у вас шлях уваходу, які не праходзіць праз тое, што абнаўляецца.
Дзве мадэлі аднаўлення, адна вырашальная ўмова
Першая мадэль давярае абнаўленню і мяркуе, што пасля яго вы зможаце падключыцца зноў. Яна працуе, калі VPN — адзін з некалькіх спосабаў дабрацца да хоста і калі збой тунеля не пазбаўляе вас магчымасці яго дыягнаставаць. Другая мадэль загадзя размяшчае незалежны шлях, звычайна кансоль хостэра, і разглядае тунель як тое, што хутчэй за ўсё зламае абслугоўванне. Абедзве мадэлі можна абараніць, і толькі адна з іх патрабуе працы загадзя.
Вырашальную ўмову проста назваць і лёгка прапусціць. Калі кожны адміністрацыйны шлях да машыны ідзе праз службу, якая абнаўляецца, у вас няма мадэлі аднаўлення наогул, толькі спадзяванне. Скажыце гэта ўголас на разглядзе зменаў.
Праверка гэтай умовы займае дзесяць хвілін і павінна адбыцца да першага аўтаматычнага абнаўлення, а не падчас інцыдэнту. Адкрыйце кансоль, пакуль усё працуе, пераканайцеся, што ўліковыя даныя актуальныя, і зачыніце яе зноў. Пераканайцеся, што кансоль адкрываецца на той хост, пра які вы думаеце. Затым пераканайцеся, што ўваход, які вы рэальна выкарыстоўвалі б у 3 гадзіны ночы, усё яшчэ працуе.
Апошняя частка важнейшая, чым гучыць. Уліковы запіс кансолі, пароль якога змянілі шэсць месяцаў таму і ніколі не правяралі, — гэта не шлях аднаўлення; гэта дакумент, які апісвае шлях.
Што рэзервовая копія не аднаўляе
Архіў канфігурацыі — гэта запіс файлаў, а абнаўленне змяняе больш за файлы. Стан пакетаў, модулі ядра, уключаныя спасылкі юнітаў і правілы фэйрвола, ужытыя праз асобны інструмент, жывуць па-за каталогам канфігурацыі, і аднаўленне, якое іх ігнаруе, дае машыну, што выглядае наладжанай і не перасылае трафік.
| What changed | Restored by a configuration backup | Needs its own action |
|---|---|---|
| Service unit or startup ordering | Partly, if the unit file was included | Package state and enabled links |
| Kernel module or interface support | No | Kernel or module rollback, or a boot-time decision |
| Peer or device authorization | Only if the backup predates the revocation | A deliberate decision about which peers return |
| Firewall rules applied outside the config | Only if they were captured | Replaying and verifying each rule |
Аўтарызацыя заслугоўвае асобнага радка. Копія, зробленая да выдалення скампраметаванай прылады, з задавальненнем верне доступ гэтай прыладзе. Вяртанне да яе падчас збою — гэта спосаб ператварыць адзін інцыдэнт у два, і рашэнне аб аднаўленні павінна прымацца адносна піраў так жа яўна, як адносна файлаў.
Механізм адкату таксама важны. Капіраванне старога выканальнага файла паверх таго, што кіруецца пакетам, не з’яўляецца падтрыманым адваротам змены пакета, і яно пакідае базу пакетаў апісваць стан, якому файлавая сістэма не адпавядае. Выкарыстоўвайце ўласны шлях паніжэння версіі мэнэджара пакетаў або здымак, які прапануе хостэр. Паніжэнне, якое запісвае база пакетаў, можна паўтарыць.
Нішто з гэтага не сведчыць супраць рэзервовых копій. Яно сведчыць за тое, каб ведаць, які пласт пакрывае кожны артэфакт, бо рэжым адмовы частковага аднаўлення заблытвае больш, чым зыходны збой. Запішыце пласт побач з кожнай копіяй у runbook.
Кантрольная кропка, абнаўленне, затым праверка звонку
Запішыце стан да змены ў форме, якую зможаце параўнаць потым: усталяваныя версіі, задзейнічаныя юніты службаў, слухаючыя сокеты і бягучы спіс піраў. Чатыры каманды пакрываюць большасць гэтага на хосце Linux.
systemctl list-units --type=service | grep -E 'openvpn|wg-quick'
ss -lunp | grep -E ':51820|:1194'
journalctl -u wg-quick@wg0 --since '-10 min'
Першая паказвае, якія юніты існуюць і ці яны працуюць, другая пацвярджае, што слухач сапраўды прывязаны, а трэцяя дае вам уласныя звесткі службы за апошнія некалькі хвілін. Ніводная з іх не даказвае, што кліент можа падключыцца, таму наступны крок адбываецца звонку хоста. Захавайце гэтыя паказчыкі як базу для параўнання.
Праверце з сеткі, якая не выкарыстоўвае тунель: аўтэнтыфікуйце аднаго дазволенага кліента, развязайце імя і дасягніце адной патрэбнай праграмы. Лакальны радок стану, які кажа, што інтэрфейс узняты, — гэта сцверджанне пра інтэрфейс, а не пра маршрутызацыю, ключы ці палітыку, якая дапускае піра.
Затым наўмысна праверце шлях перападключэння. Перазапусціце службу адзін раз і пераканайцеся, што тунель вяртаецца без ручнога ўмяшання, бо служба, якая правільна стартуе толькі пры загрузцы, — гэта служба, якая здзівіць вас у найгоршы момант.
Калі гэта не ўдалося, выкарыстоўвайце правераны шлях
Паслядоўнасць аднаўлення няўзнёслая і яна працуе: дабярыцеся да хоста праз незалежны шлях, прачытайце ўласныя журналы службы і аднавіце тую кантрольную кропку, якая адпавядае збою. Змяняйце адну рэч за спробу, каб наступнае чытанне журнала нешта азначала.
Супрацьстойце жаданню зрабіць некалькі незапісаных зменаў, каб вярнуць злучанасць. Машыну, папраўленую пяццю адначасовымі правакамі, потым немагчыма растлумачыць, і наступнае абнаўленне зноў унясе тую з іх, якая насамрэч несла нагрузку.
Затым вырашыце пастаянную палітыку з доказамі. Калі абнаўленне выявіла залежнасць, якую ніхто не дакументаваў, выпраўленне — гэта дакументацыя і тэст, а не адключэнне абнаўленняў. Калі яно выявіла службу, якая не можа чыста перазапусціцца, выпраўленне ў юніце, а не ў раскладзе.
Параўнанне вырашаецца чыста, як толькі ўмова названая. Незалежны шлях робіць аўтаматычныя абнаўленні кіравальнай рызыкай. Яго адсутнасць робіць тую ж палітыку планавым збоем з невядомым часам аднаўлення, і ніякая колькасць аўтаматызацыі не змяняе гэтую арыфметыку.