Як вывесці VPN-сервер з эксплуатацыі, не пакінуўшы доступ
Ідзіце вонкі ад кліенцкага дадатка: адклікайце ключы і ўліковыя запісы, зачыніце слухач, а затым дакажыце, што ні профіль, ні DNS-запіс, ні рэзервовая копія ўжо не дацягнуцца да яго.
Ваш кліент усё яшчэ падключаецца ў дзень, калі адкрываецца заяўка на вывад з эксплуатацыі. Профіль ляжыць у дадатку, ён дамаўляецца, і тунель уздымаецца так, нібыта нічога не змянілася. Гэта момант працаваць у адваротным кірунку ад таго, як вы будавалі сэрвіс: пачніце са спісу кліентаў, ідзіце вонкі да слухача, потым да фаервола і скончыце ўліковымі данымі, якія перажываюць усё гэта. Выключэнне VM — апошні крок, а не першы. Гэтае кіраўніцтва мяркуе, што ў вас ёсць кансольны доступ да хоста і права рэдагаваць кліенцкія запісы і DNS.
Спачатку прайдзіце па спісе кліентаў
Адкрыйце тое, што раздае вашы профілі, і прачытайце спіс, перш чым кранаць сервер. Кожны запіс — гэта прылада, якая лічыць, што ў яе ёсць доступ: тэлефоны, ноўтбукі, філіяльны маршрутызатар, кантэйнер, які сінхранізуецца кожную ноч. Экспартуйце гэты спіс у заяўку, бо калі хост знікне, не будзе wg show, каб сказаць вам, хто быў падключаны.
Размеркаваць кожную прыладу на заменную канчатковую кропку, больш не патрэбную або невядомую. Менавіта катэгорыя невядомых важная, бо гэта профілі, якія хтосьці знойдзе ў шуфлядзе праз месяцы і паспрабуе. Даслаце паведамленне тым жа каналам, які вы выкарыстоўваеце для запытаў доступу, і ўпішыце дату, калі старая канчатковая кропка перастане адказваць.
Адклікайце ідэнтычнасць, а не толькі файл
Дзве розныя дзеянні абедзве называюць адкліканнем. У WireGuard сусед аўтарызуецца толькі сваім публічным ключом, які з'яўляецца ў раздзеле суседа з запісам AllowedIPs, таму выдаленне канфігурацыйнага файла з ноўтбука нічога не мяняе на серверы. Выдаліце блок суседа і паўторна прымяніце файл, не скідваючы тых суседзяў, якіх вы пакідаеце, як апісвае кіраўніцтва wg(8):
wg show
wg set wg0 peer <CLIENT_PUBLIC_KEY> remove
wg syncconf wg0 <(wg-quick strip wg0)wg syncconf — гэта частка, якая зэканоміць вам акно абслугоўвання. Ён перабудоўвае інтэрфейс з файла на месцы, таму выдаленне аднаго суседа не разбурае тунель, якім карыстаюцца ўсе астатнія. Калі вы выводзіце з эксплуатацыі ўвесь хост, а не аднаго суседа, парадак усё яшчэ важны, бо гэтым ключам могуць давяраць у іншым месцы.
Пры наладзе X.509 крокам адклікання з'яўляецца сертыфікат, а не файл: openssl ca -revoke client.crt і потым openssl ca -gencrl -out crl.pem. Гэта мае эфект толькі там, дзе яго чытае правяральнік, што азначае OpenVPN-сервер з наладжаным crl-verify і перазагружаным пасля гэтага. Калі гэты шлюз — адзіны спажывец таго CA, CRL перастае мець значэнне ў дзень, калі ён памірае; калі той жа CA падпісвае для другога шлюза, сертыфікат, які вы ніколі не адклікалі, працягвае працаваць там.
Уліковыя запісы — трэці выпадак і той, які часцей за ўсё прапускаюць. Калі шлюз аўтэнтыфікаваўся праз RADIUS, LDAP або воблачнага пастаўшчыка ідэнтычнасці, уліковы запіс жыве па-за VPN. Адключыце яго ў каталогу. Выдаленне карыстальніцкага раздзела на серверы пакідае сапраўдныя ўліковыя даныя, якія заменная канчатковая кропка прыме ў тую ж хвіліну, як пакажа на той жа каталог.
Зачыніце слухачы і шляхі да іх
Спыніце сэрвіс так, каб гэта перажыло перазагрузку, а затым пацвердзіце спісам сокетаў, а не станам юніта. systemctl disable --now wg-quick@wg0 спыняе інтэрфейс і выдаляе маршруты і правілы, якія дадаў wg-quick; systemctl disable --now openvpn-server@server робіць тое ж для шаблоннага экзэмпляра OpenVPN. Пасля любога з іх выканайце ss -lunp і ss -ltnp. Пусты вынік для старога порта — адзіны доказ, які мае значэнне.
Што дадаў wg-quick, тое wg-quick і выдаляе. Што вы дадалі ўручную, застаецца: пастаяннае правіла NAT, дазвол у фаерволе, перанакіраванне порта на маршрутызатары, правіла ўваходу ў хмарнай групе бяспекі, слухач балансіроўшчыка нагрузкі. Усё гэта трэба выдаляць яўна, як і DNS-запіс, гэта значыць A, AAAA і любы CNAME, які паказвае на імя. Імя, якое развязаецца ў мёртвы хост, памыляецца інакш, чым імя, якое не развязаецца, і гэтая розніца каштавацьме камусьці пасляабедзеннага часу.
Копія, якую вы забылі, — гэта клон. Здымак або VM, адноўленая з рэзервовай копіі, усё яшчэ трымае ключы хоста і стары спіс суседзяў, і калі нешта верне яе на той жа адрас, кліенты зноў падключацца да сэрвісу, які вы лічыце выведзеным. Пазначце набор рэзервовых копій як які належыць спыненаму сэрвісу і трымайце яго па-за аўтаматычнымі шляхамі аднаўлення.
Даганяйце тое, што ўсё яшчэ паказвае на старую канчатковую кропку
Кэшаваныя профілі перажываюць DNS. Захаваная канфігурацыя з лікавым адрасам працягвае набіраць пасля знікнення запісу, а пастаянна ўключаны кліент паўтарае спробу пры кожнай змене сеткі. Гэта шум, а не доступ, бо слухач зачынены, але веданне, на што менавіта вы глядзіце, вызначае, як адказаць на заяўку.
Затым прашуруйце залежнасці, якія ніхто не падшывае пад VPN: праверкі часу бесперабойнай працы, што пранікаюць порт, задачы рэзервовага капіравання, якія цягнулі канфігурацыі з хоста, уліковыя даныя аўтаматызацыі для штурхання запісаў суседзяў, акаўнты аднаўлення, створаныя толькі для гэтай канчатковай кропкі. Кожная — гэта шлях доступу з уласным тэрмінам жыцця і ўласным уладальнікам, таму кожная атрымлівае рашэнне замест ціхага выдалення.
Праверце, а затым запішыце
Вывад з эксплуатацыі скончаны, калі тэст звонку правальваецца так, як вы чакалі. З сеткі, якой вы не кантралюеце, падключыцеся да старога адраса і порта. Адфільтраваны або адхілены вынік — гэта выпадак поспеху. У кліенцкім дадатку пацвердзіце, што профіль выдалены, а не выключаны, і што ні адзін кіраўнічы профіль ціха не дадае яго зноў.
Затым запішыце, што вы зрабілі: канчатковая кропка, дата, адкліканыя ключы і сертыфікаты, адключаныя ўліковыя запісы, дзе ляжаць рэзервовыя копіі. Хто б ні знайшоў наступным старую канфігурацыю, мусіць адказаць, ці была яна адклікана ці проста выдалена, без здагадак, і кароткая табліца ў заяўцы гэта робіць.
Перад закрыццём заяўкі:
- кліенцкія профілі выдалены або заменены, невядомыя прылады высветлены
- суседзі выдалены і канфігурацыя паўторна прыменена, або сертыфікаты адкліканы і CRL апублікаваны
- уліковыя запісы каталога адключаны, а не толькі лакальныя файлы выдалены
- сэрвіс адключаны, на старым порце не засталося слухача
- фаервол, перанакіраванне порта, група бяспекі і DNS-запісы выдалены
- рэзервовыя копіі пазначаны, здымак выключаны са шляхоў аднаўлення
- уліковыя даныя маніторынгу і аўтаматызацыі выведзены
Праверце замену асобна, ад кліента, які ніколі не трымаў стары профіль. Гэты адзіны тэст скажа вам, ці вы вывелі сэрвіс, ці толькі пераназвалі праблему.