Testiranje promjena na firewallu bez zaključavanja sebe van
Poredajte svoje puteve oporavka prije nego što pravilo uđe, pa provjerite tokom koji nova politika mora ocijeniti, a ne sesijom koja je preživjela.
Pravilo uđe, terminal koji već imate nastavlja da odgovara, a sljedeća prijava bude odbijena. Ta praznina je cijela teškoća testiranja promjene firewalla preko veze koju mijenjate. Praćenje veza odluči jednom i onda prestane gledati, pa je uspostavljeni tok jedina sonda koja ne može vidjeti novu politiku. Ono što slijedi poredi tri načina povratka, a zatim utvrđuje redoslijed kojim se pravila mijenjaju i provjeravaju.
Zašto je preživjela sesija najslabiji dokaz
Stateful firewall ocjenjuje prvi paket toka i zadržava tu presudu dokle god zapis postoji. Pravila dodana poslije primjenjuju se na tokove koji počnu kasnije, zato prozor u koji kucate ostaje upotrebljiv dok su svi ostali odbijeni. Što god iz njega naučite, opisuje politiku koja je bila na snazi prije nekoliko minuta. Čak i snimak na tom toku pokazuje odluku koju je mašina već donijela.
Tretirajte radnu sesiju kao izlaz u nuždi, a ne kao mjerenje. Svaka provjera koja je vrijedna mora otvoriti novi tok sa izvora koji će novo pravilo ocijeniti, a prva provjera treba biti ona čiji bi neuspjeh najviše zaboli. Kada je ta sesija vaš jedini put unutra, promjena nije spremna.
Tri načina povratka, poredana po tome o čemu svaki zavisi
Poredajte opcije po tome koliko zavise od uređaja koji se testira, jer tom rasporedu posežete kada se pravilo pokaže pogrešnim. Konzola koja nikada ne prolazi kroz firewall je nezavisna, uvježbani rollback gotovo isto, a već otvorena sesija nije.
| Way back in | What it survives | Where it fails |
|---|---|---|
| out-of-band or hypervisor console | a policy that blocks new logins | needs separate access you have already tried |
| rollback rehearsed on that platform | a rule that breaks remote access | fails when nobody ever ran it |
| the session that is already open | the change itself | cannot show whether new flows work |
Prije promjene prijavite se preko konzole i dokažite da radi, jer vanpojasni put koji nikada niste koristili je dijagram, a ne rezerva. Rollback zaslužuje svoje mjesto tek poslije probe na toj platformi, s tim skupom pravila, po odobrenoj proceduri umjesto improvizacije na živoj mašini. Zapišite korake i neka vam ih neko drugi pročita. Ako slijedu treba vaše pamćenje da bi se dovršio, to nije plan.
Jedna promjena, pa veza koja se mora ocijeniti
Sačuvajte živi skup pravila i datoteku koja ga posjeduje, pa napravite jedno usko uređivanje. Jedna promjena po testu čini ishod pripisivim; dvije odjednom ostavljaju radnu mašinu i nikakvu ideju koje je uređivanje obavilo posao. Gdje platforma može raščlaniti konfiguraciju bez učitavanja, učinite to prvo, da tipfeler padne dok ništa nije uloženo.
nft list ruleset > /root/ruleset.before
nft -c -f /etc/nftables.conf
Zatim pokrenite novu sesiju sa izvora na koji će izmijenjeno pravilo odgovarati, dok je konzola još priključena. Ponovite jednom ako uspije, jer prvi pokušaj može sletjeti na zapis koji je tabela već držala. Ako ne uspije, još uvijek imate put unutra i odluku koju možete poništiti, a to je najjeftiniji loš ishod koji postoji.
Brojači, stanje i datoteka odgovaraju na različita pitanja
Svako od tri zapažanja može samo za sebe izgledati uvjerljivo i zavesti vas u pogledu druga dva. Brojači pokazuju da li je tok koji ste upravo stvorili stigao do pravila koje ste izmijenili. Tabela stanja pokazuje koje tokove mašina smatra već uspostavljenim, i tako pokvareno pravilo može i dalje izgledati zdravo. Sačuvana datoteka pokazuje šta će uređaj raditi poslije sljedećeg ponovnog učitavanja, a to možda nije ono što živi skup pravila radi sada.
ss -tn state established
Čitajte brojače kao razliku, a ne kao zbir, jer je jedini broj koji je važan onaj koji je pomjerio vaš testni tok. Pravilo čiji se brojač nikada ne povećava ne odgovara, koliko god ispravno izgledalo na papiru. Potvrdite i slučaj odbijanja: politika koja nikada ništa nije odbila nikada nije dokazala da odbija ono što ste namjeravali blokirati. Prođite kroz jedan interfejs u svakoj familiji koju implementacija zaista nosi, jer pravilo v4 ne govori ništa o toku v6.
Vratite iz sačuvanog skupa pravila, pa uskladite datoteku
Kada promjena ne uspije, učitajte sačuvani skup pravila umjesto dodavanja dopuštajućih pravila dok prijave ponovo ne prorade. Svako dodatno dopuštenje stišava simptom i ostavlja rupu koja nadživi incident i sjećanje na njega. Vratite, ponovo se povežite, pa držite neuspjelo poređenje uz zapis onoga što ste pokušali.
Poslije uspješne promjene natjerajte datoteku na disku da opisuje skup pravila koji radi i potvrdite da ga ponovno učitavanje reprodukuje. Živi skup pravila koji se odvojio od vlastite konfiguracijske datoteke je zamka postavljena za sljedeće podizanje.