Nespravované aktualizácie VPN servera vyžadujú odskúšanú cestu obnovy
Aktualizácia môže reštartovať práve tú službu, cez ktorú sa dostávate na server. Pred automatizáciou porovnajte konzolu mimo pásma s plánom obnovy len cez tunel.
Nespravované aktualizácie sú rozumná politika pre server, ku ktorému sa dostávate cez jeho vlastnú VPN, a zároveň sú jediným bodom zlyhania, ktorý si sami spôsobujete. Operácia balíka reštartuje službu, tunel padne a administratívna cesta, ktorú ste používali, zmizne spolu s ním. Existujú dva modely obnovy a výber medzi nimi závisí od jednej podmienky: či máte prístupovú cestu, ktorá nevedie cez to, čo sa aktualizuje.
Dva modely obnovy, jedna rozhodujúca podmienka
Prvý model dôveruje aktualizácii a predpokladá, že sa potom znova pripojíte. Funguje, keď je VPN jedným z niekoľkých spôsobov, ako sa dostať k hostiteľovi, a keď zlyhanie tunela neodoberie vašu schopnosť diagnostikovať ho. Druhý model vopred umiestňuje nezávislú cestu, zvyčajne konzolu poskytovateľa hostingu, a tunel považuje za to, čo údržba najpravdepodobnejšie pokazí. Oba modely sú obhájiteľné a len jeden z nich vyžaduje prácu vopred.
Rozhodujúcu podmienku je ľahké vysloviť a ľahké preskočiť. Ak každá administratívna cesta k stroju vedie cez aktualizovanú službu, nemáte žiadny model obnovy, iba očakávanie. Povedzte to nahlas pri revízii zmeny.
Otestovanie tej podmienky trvá desať minút a musí sa udiať pred prvou nespravovanou aktualizáciou, nie počas incidentu. Otvorte konzolu, kým všetko funguje, overte, že prihlasovacie údaje sú platné, a znova ju zavrite. Overte, že konzola sa otvára na hostiteľovi, o ktorom si myslíte. Potom overte, že prihlásenie, ktoré by ste o 3 hodine ráno skutočne použili, stále funguje.
Posledná časť je dôležitejšia, než to znie. Konzolový účet, ktorého heslo bolo zmenené pred šiestimi mesiacmi a nikdy nebolo overené, nie je cesta obnovy; je to dokument, ktorý takú cestu opisuje.
Čo záloha neobnoví
Archív konfigurácie je záznam súborov a aktualizácia mení viac než súbory. Stav balíkov, moduly jadra, povolené odkazy jednotiek a pravidlá firewallu aplikované samostatným nástrojom žijú mimo konfiguračného adresára a obnova, ktorá ich ignoruje, vytvorí stroj, ktorý vyzerá nakonfigurovaný a nepreposiela.
| 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 |
Autorizácia si zaslúži vlastný riadok. Záloha vyhotovená pred odstránením kompromitovaného zariadenia s radosťou obnoví prístup tohto zariadenia. Vrátenie sa k nej počas výpadku je spôsob, akým sa z jedného incidentu stanú dva, a rozhodnutie o obnove by sa malo o peer-och robiť rovnako výslovne ako o súboroch.
Záleží aj na mechanizme vrátenia. Skopírovanie staršieho spustiteľného súboru na ten spravovaný balíkom nie je podporované zvrátenie zmeny balíka a necháva databázu balíkov opisovať stav, ktorému súborový systém nezodpovedá. Použite vlastnú cestu na zníženie verzie správcu balíkov alebo snímku, ktorú ponúka poskytovateľ. Zníženie verzie, ktoré databáza balíkov zaznamená, je to, ktoré môžete zopakovať.
Nič z toho neargumentuje proti zálohám. Argumentuje za to vedieť, ktorú vrstvu pokrýva každý artefakt, pretože režim zlyhania čiastočnej obnovy je mätúcejší než pôvodný výpadok. Napíšte vrstvu vedľa každej zálohy do runbooku.
Kontrolný bod, aktualizácia, potom overenie zvonku
Zaznamenajte stav pred zmenou vo forme, ktorú môžete neskôr porovnať: nainštalované verzie, dotknuté jednotky služieb, načúvajúce sockety a aktuálny zoznam peer-ov. Štyri príkazy pokryjú väčšinu toho na linuxovom hostiteľovi.
systemctl list-units --type=service | grep -E 'openvpn|wg-quick'
ss -lunp | grep -E ':51820|:1194'
journalctl -u wg-quick@wg0 --since '-10 min'
Prvý ukazuje, ktoré jednotky existujú a či bežia, druhý potvrdzuje, že načúvač je skutočne viazaný, a tretí vám dáva vlastné hlásenie služby o posledných minútach. Žiadny z nich nedokazuje, že klient sa môže pripojiť, a preto sa ďalší krok odohráva mimo hostiteľa. Uchovajte tie čítania ako základ porovnania.
Overte zo siete, ktorá tunel nepoužíva: autentifikujte jedného autorizovaného klienta, vyriešte meno a dosiahnite jednu zamýšľanú aplikáciu. Miestny stavový riadok, ktorý hovorí, že rozhranie je hore, je tvrdenie o rozhraní, nie o smerovaní, kľúčoch alebo politike, ktorá pripúšťa peera.
Potom zámerne otestujte cestu opätovného pripojenia. Raz reštartujte službu a overte, že tunel sa vráti bez ručného zásahu, pretože služba, ktorá sa správne spúšťa len pri boote, je služba, ktorá vás prekvapí v najhoršej chvíli.
Keď to zlyhá, použite cestu, ktorú ste otestovali
Sekvencia obnovy nie je efektná a funguje: dostanete sa k hostiteľovi nezávislou cestou, prečítajte si vlastné logy služby a obnovte konkrétny kontrolný bod, ktorý zodpovedá zlyhaniu. Meňte jednu vec na pokus, aby ďalšie čítanie logu niečo znamenalo.
Odolajte nutkaniu urobiť niekoľko nezaznamenaných zmien, aby ste vrátili konektivitu. Stroj opravený piatimi súčasnými úpravami sa potom nedá vysvetliť a ďalšia aktualizácia vráti tú z nich, ktorá skutočne niesla záťaž.
Potom rozhodnite trvalú politiku s dôkazmi. Ak aktualizácia odhalila závislosť, ktorú nikto nezdokumentoval, opravou je dokumentácia a test, nie vypnutie aktualizácií. Ak odhalila službu, ktorá sa nevie čisto reštartovať, oprava je v jednotke, nie v pláne.
Porovnanie sa čisto vyrieši, len čo je podmienka pomenovaná. Nezávislá cesta robí z nespravovaných aktualizácií zvládnuteľné riziko. Jej neprítomnosť robí z tej istej politiky plánovaný výpadok s neznámym časom obnovy a žiadne množstvo automatizácie tú aritmetiku nezmení.