Nenadzirana ažuriranja VPN servera zahtevaju ispitan put oporavka
Ažuriranje može ponovo pokrenuti upravo onu uslugu kojom dolazite do servera. Uporedite vanpojasnu konzolu sa planom oporavka samo preko tunela pre nego što automatizujete.
Nenadzirana ažuriranja su razumna politika za server kojem pristupate preko njegovog sopstvenog VPN-a i istovremeno su jedna tačka samonanesenog kvara. Operacija paketa ponovo pokreće uslugu, tunel pada i administrativni put koji ste koristili nestaje zajedno s njim. Postoje dva modela oporavka, a izbor između njih zavisi od jednog uslova: da li imate put pristupa koji ne prolazi kroz ono što se ažurira.
Dva modela oporavka, jedan odlučujući uslov
Prvi model veruje ažuriranju i pretpostavlja da ćete posle moći ponovo da se povežete. Deluje kada je VPN jedan od nekoliko načina da dođete do hosta i kada kvar tunela ne uklanja vašu mogućnost da ga dijagnostikujete. Drugi model unapred postavlja nezavisan put, obično konzolu provajdera hostinga, i tretira tunel kao ono što će održavanje najverovatnije pokvariti. Oba modela su odbranjiva, a samo jedan od njih zahteva rad unapred.
Odlučujući uslov je lako izgovoriti i lako preskočiti. Ako svaki administrativni put do mašine ide kroz uslugu koja se ažurira, nemate nikakav model oporavka, samo očekivanje. Recite to naglas u pregledu promene.
Provera tog uslova traje deset minuta i mora se dogoditi pre prvog nenadziranog ažuriranja, a ne tokom incidenta. Otvorite konzolu dok sve radi, potvrdite da su akreditivi aktuelni i zatvorite je ponovo. Potvrdite da se konzola otvara na hostu na koji mislite. Zatim potvrdite da prijava koju biste zaista koristili u 3 sata ujutru još radi.
Poslednji deo je važniji nego što zvuči. Konzolni nalog čija je lozinka rotirana pre šest meseci i nikada proverena nije put oporavka; to je dokument koji opisuje takav put.
Šta sigurnosna kopija ne vraća
Arhiva konfiguracije je zapis o datotekama, a ažuriranje menja više od datoteka. Stanje paketa, kernel moduli, omogućene veze unit-a i pravila vatrozida primenjena zasebnim alatom žive izvan konfiguracionog direktorijuma, a vraćanje koje ih zanemari proizvodi mašinu koja izgleda konfigurisano i ne prosleđuje saobraćaj.
| 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 |
Autorizacija zaslužuje svoj red. Kopija napravljena pre uklanjanja kompromitovanog uređaja rado će vratiti pristup tog uređaja. Vraćanje na nju tokom prekida je način da jedan incident postane dva, a odluka o vraćanju treba da se donese o peer-ovima jednako eksplicitno kao o datotekama.
Mehanizam vraćanja je takođe važan. Kopiranje starijeg izvršnog programa preko onog kojim upravlja paket nije podržano poništavanje promene paketa i ostavlja bazu paketa da opisuje stanje s kojim se datotečni sistem ne poklapa. Koristite sopstveni put za downgrade upravitelja paketa ili snimku koju nudi provajder. Downgrade koji baza paketa zabeleži je onaj koji možete ponoviti.
Ništa od ovoga ne govori protiv sigurnosnih kopija. Govori u prilog tome da znate koji sloj pokriva svaki artefakt, jer je način kvara delimičnog vraćanja zbunjujući više od izvornog prekida. Upišite sloj uz svaku kopiju u runbook.
Kontrolna tačka, ažuriranje, pa provera spolja
Zabeležite stanje pre promene u obliku koji možete kasnije uporediti: instalirane verzije, uključene servisne unit-e, socket-e koji slušaju i trenutni spisak peer-ova. Četiri naredbe pokrivaju većinu toga na Linux hostu.
systemctl list-units --type=service | grep -E 'openvpn|wg-quick'
ss -lunp | grep -E ':51820|:1194'
journalctl -u wg-quick@wg0 --since '-10 min'
Prva pokazuje koje unit-e postoje i rade li, druga potvrđuje da je slušalac zaista vezan, a treća vam daje sopstveni izveštaj usluge o poslednjih nekoliko minuta. Nijedna od njih ne dokazuje da se klijent može povezati, zato se sledeći korak odvija izvan hosta. Sačuvajte ta očitanja kao svoju osnovu za poređenje.
Proverite sa mreže koja ne koristi tunel: autentifikujte jednog ovlašćenog klijenta, razrešite ime i dosegnite jednu predviđenu aplikaciju. Lokalna statusna linija koja kaže da je interfejs podignut izjava je o interfejsu, ne o rutiranju, ključevima ili politici koja prima peer.
Zatim namerno ispitajte put ponovnog povezivanja. Ponovo pokrenite uslugu jednom i potvrdite da se tunel vraća bez ručne intervencije, jer usluga koja ispravno startuje samo pri podizanju sistema je usluga koja će vas iznenaditi u najgorem trenutku.
Kada ne uspe, koristite put koji ste ispitali
Sled oporavka nije glamurozan i deluje: dođite do hosta nezavisnim putem, pročitajte sopstvene logove usluge i vratite konkretnu kontrolnu tačku koja odgovara kvaru. Menjajte jednu stvar po pokušaju da bi sledeće čitanje loga nešto značilo.
Oduprite se porivu da napravite nekoliko nezabeleženih promena kako biste vratili povezanost. Mašina popravljena sa pet istovremenih izmena ne može se posle objasniti, a sledeće ažuriranje ponovo će uvesti onu koja je zaista nosila opterećenje.
Zatim odlučite trajnu politiku s dokazima. Ako je ažuriranje otkrilo zavisnost koju niko nije dokumentovao, popravka je dokumentacija i test, a ne isključivanje ažuriranja. Ako je otkrilo uslugu koja ne može čisto ponovo da se pokrene, popravka je u unit-u, a ne u rasporedu.
Poređenje se čisto rešava kada se uslov imenuje. Nezavisan put čini nenadzirana ažuriranja upravljivim rizikom. Njegovo odsustvo čini istu politiku planiranim prekidom s nepoznatim vremenom oporavka, i nikakva količina automatizacije ne menja tu aritmetiku.