Testimi i ndryshimeve të firewall-it pa u mbyllur vetë jashtë
Rendit rrugët e tua të rikuperimit përpara se të hyjë rregulli, pastaj verifiko me një rrjedhë që politika e re duhet të vlerësojë, jo me sesionin që mbijetoi.
Rregulli hyn, terminali që ke tashmë vazhdon të përgjigjet, dhe hyrja tjetër refuzohet. Pikërisht ky hendek është e gjithë vështirësia e testimit të një ndryshimi të firewall-it përmes lidhjes që po ndryshon. Gjurmimi i lidhjeve vendos një herë dhe pastaj ndalon së shikuari, prandaj një rrjedhë e vendosur është prova e vetme që nuk mund ta shohë politikën e re. Ajo që vijon krahason tre rrugët e kthimit, dhe pastaj përcakton rendin në të cilin ndryshohen dhe kontrollohen rregullat.
Pse sesioni që mbijetoi është prova më e dobët
Një firewall me gjendje vlerëson paketën e parë të një rrjedhe dhe e mban atë verdikt për sa kohë jeton hyrja. Rregullat e shtuara më pas zbatohen për rrjedhat që nisin më vonë, prandaj dritarja ku po shkruan mbetet e përdorshme ndërsa të gjithë të tjerët refuzohen. Ajo që mëson prej saj përshkruan politikën që ishte në fuqi disa minuta më parë. Edhe një regjistrim i marrë në atë rrjedhë tregon një vendim që makina e ka marrë tashmë.
Trajto sesionin që funksionon si një dalje emergjence dhe jo si një matje. Çdo kontroll që ia vlen duhet të hapë një rrjedhë të re nga një burim që rregulli i ri do të vlerësojë, dhe kontrolli i parë duhet të jetë ai dështimi i të cilit do të dhembte më shumë. Kur ai sesion është e vetmja rrugë brenda, ndryshimi nuk është gati për t'u bërë.
Tre rrugë kthimi, të renditura sipas asaj nga varet secila
Rendit opsionet sipas asaj se sa varen nga pajisja në provë, sepse atij rendi i drejtohesh kur rregulli rezulton i gabuar. Një konsolë që nuk kalon kurrë nëpër firewall është e pavarur, një kthim i provuar është pothuajse i tillë, dhe sesioni tashmë i hapur nuk është.
| 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 |
Përpara ndryshimit, hyr përmes konsolës dhe provo se funksionon, sepse një rrugë jashtë brezit që nuk e ke përdorur kurrë është një skemë dhe jo një rezervë. Një kthim e fiton vendin e vet vetëm pas një provë në atë platformë, me atë grup rregullash, duke ndjekur procedurën e miratuar në vend të improvizimit në një makinë të gjallë. Shkruaj hapat dhe kërko nga dikush tjetër t'i lexojë. Nëse sekuenca ka nevojë për kujtesën tënde për t'u përfunduar, nuk është plan.
Një ndryshim, pastaj një lidhje që duhet vlerësuar
Ruaj grupin e rregullave që po ecën dhe skedarin që e zotëron, pastaj bëj një redaktim të vetëm të ngushtë. Një ndryshim për provë e mban rezultatin të atribueshëm; dy përnjëherë të lënë me një makinë që funksionon dhe pa asnjë ide se cili redaktim e bëri punën. Aty ku platforma mund të analizojë një konfigurim pa e ngarkuar, bëje atë së pari, që një gabim shtypi të dështojë kur asgjë nuk është në rrezik.
nft list ruleset > /root/ruleset.before
nft -c -f /etc/nftables.conf
Pastaj nis një sesion të re nga një burim që rregulli i ndryshuar do të përputhet, ndërsa konsola është ende e lidhur. Përsërite një herë nëse ka sukses, sepse përpjekja e parë mund të bjerë mbi një hyrje që tabela e kishte tashmë. Nëse dështon, ke ende një rrugë brenda dhe një vendim për ta zhbërë, dhe ky është rezultati i keq më i lirë që ekziston.
Numëruesit, gjendja dhe skedari përgjigjen për pyetje të ndryshme
Secili nga tre vëzhgimet mund të duket bindës më vete dhe të të mashtrojë për dy të tjerët. Numëruesit tregojnë nëse rrjedha që sapo krijove arriti rregullin që redaktove. Tabela e gjendjes tregon cilat rrjedha makina i konsideron tashmë të vendosura, dhe kështu një rregull i prishur mund të duket ende i shëndetshëm. Skedari i ruajtur tregon se çfarë do të bëjë pajisja pas ringarkimit të radhës, dhe kjo mund të mos jetë ajo që po bën grupi i rregullave që po ecën tani.
ss -tn state established
Lexo numëruesit si delta dhe jo si total, sepse numri i vetëm që ka rëndësi është ai që lëvizi rrjedha e provës. Një rregull numëruesi i të cilit nuk rritet kurrë nuk përputhet, sado i saktë të duket në letër. Konfirmo edhe rastin e refuzimit: një politikë që nuk ka refuzuar kurrë asgjë nuk ka provuar kurrë se refuzon atë që doje të bllokoje. Kalo nëpër një ndërfaqe në secilën familje që vendosja me të vërtetë mban, sepse një rregull v4 nuk thotë asgjë për një rrjedhë v6.
Rikthe nga grupi i rregullave i ruajtur, pastaj bëj që skedari të përputhet
Kur ndryshimi dështon, ngarko grupin e rregullave të ruajtur në vend që të shtosh rregulla lejuese derisa hyrjet të funksionojnë përsëri. Çdo leje shtesë e qetëson simptomën dhe lë një vrimë që mbijeton më gjatë se incidenti dhe kujtimi i tij. Rikthe, rilidhu, pastaj mbaj krahasimin e dështuar pranë regjistrit të asaj që provove.
Pas një ndryshimi të suksesshëm, bëj që skedari në disk të përshkruajë grupin e rregullave që po ecën, dhe konfirmo se një ringarkim e riprodhon atë. Një grup rregullash i gjallë që është shkëputur nga skedari i vetë konfigurimit është një kurth i vendosur për rinisjen e radhës.