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 changedRestored by a configuration backupNeeds its own action
Service unit or startup orderingPartly, if the unit file was includedPackage state and enabled links
Kernel module or interface supportNoKernel or module rollback, or a boot-time decision
Peer or device authorizationOnly if the backup predates the revocationA deliberate decision about which peers return
Firewall rules applied outside the configOnly if they were capturedReplaying 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í.

Súvisiace články