ipfw (was: Re: Upgrade programu z portu)
Dan Lukes
dan at obluda.cz
Wed Mar 4 11:43:59 CET 2009
Miroslav Prýmek napsal/wrote, On 03/04/09 07:53:
> BTW, kdyz uz jsme u toho, zlobi me treba ipfw s jednou veci:
> mam X pravidel s "setup keep-state" a predposledni pravidlo by melo byt
> (muze byt) podle handbooku
> deny tcp from any to any established
> cili "zahodit vsechno, co se tvari jako established ale pritom se
> nenamatchovalo na check-state"
>
> No ale ma to tu (docela blbou) nevyhodu, ze pri restartu firewallu se
> vyhazou pravidla
> a timpadem vsechna existujici spojeni spadnou prave diky tomu predtim
> popsanymu
> pravidlu, protoze se nenamatchuji a zaroven jsou established.
>
> Tak si rikam, co je vetsi zlo - jestli to pravidlo zmenit z "deny" na
> "allow" (hodne firewallu
> na linuxu se tak dela, tak co?) a nebo radsi pocitat s tim, ze restart
> firewallu umrtvi existujici spojeni
Nejsem priznivcem stavoveho firewallu v ipfw. Prilis snadno muze byt
cilem uspesneho DoS utoku. Snazim se vnitrni sit mit v takovem stavu,
abych tento typ filtru na hranicnim routeru vubec nepotreboval.
Kdyz uz bych se ale do podobneho problemu dostal, resil bych ho pomoci
rulesetu. Dynamicka pravidla zanikaji expiraci nebo tehdy, kdyz zanikne
"generujic pravidlo" (to, ktere je vytvorilo). Takze pokud je chci
zachovat, je treba aby generujic pravidlo nezaniklo.
To jde nastesti celkem trivialne - ten "restart" firewallu se proste
udela jako presunuti rulesetu 0 do nejakeho jineho cisla, jeho
zneaktivneni (pravidla neaktivniho rulesetu se neuplatnuji ale stale
existuji a tudiz jimy generovana dynamicka pravidla take nezaniknou).
Smazani neaktivniho rulesetu udelam az o nejakou dobu pozdeji.
To nezarucuje, ze i tak nestrihnu nejaka navazana spojeni, ale jejich
pocet bude vyrazne nizsi.
Me to pripada trivialni reseni, ale pripoustim, ze to muze byt i proto,
ze uz rulesety tak jako tak pouzivan. To, co ty nazyvas "resetem
firewallu" a delas to patrne smazanim vsech ruli a naplnenim novymi je
mi nesympaticke, protoze existuje doba, kdy je firewall v
nekonzistentnim stavu (jen castecne naplneny) - a co hur - pokud v
prubehu plneni firewallu dojde k jakekoliv chybe, skoncis s neuplnym
firewallem.
Takze ja delam reload zasadne jinak. Misto "bezneho" ipfw -f flush mam:
${fwcmd} delete set 1
${fwcmd} set move 0 to 1
${fwcmd} set enable 1 disable 0
${fwcmd} delete set 0
pak mam "bezne naplneni firewallu"
a kdyz se to bez problemu povede, tak koncim sekvenci
${fwcmd} set enable 0 disable 1
${fwcmd} delete set 1
Je to vlastne presne to, co potrebujes, jen bys ten zaverecny "delete
set 1" musel opozdit. A pripadne rozmyslet co se stane, kdyz se pokusis
firewall reloadovat nekolikrat rychle po sobe.
Ja bych to nejspis resil takhle nejak.
A jeste bych si dovolil poznamenat (a rovnou rikam, ze to je
kontroverzni nazor a neocekavam, ze s nim budou vsichni souhlasit), ze
akce "deny" do firewallu patri jen ve velmi vyjimecnych situacich. V
beznych povazuju za samozrejme pouzit "unreach filter-prohib".
Az budes jednou hledat, proc se nemuzes spojit z mista A na hodne
vzdalene misto B a vsechno co zjistis je, ze kdesi po ceste (kterou
nemas pod kontrolou) ti proste pakety mizi, ale ty nevis kde, tak
pochopis proc je to dulezite.
Dan
More information about the Users-l
mailing list