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