Pochopení pravidla iptables

Josef

Pochopení pravidla iptables
« kdy: 10. 07. 2014, 17:42:06 »
Kód: [Vybrat]
iptables -I INPUT  -p tcp --dport 80 -m limit --limit 1/min --limit-burst 10 -j ACCEPT
Da se tohle pravidlo vylozit takto?
Vsechny pozadavky co jdou na 80 port, kterych je do deseti za minut povol ... vsechno co je nad zakaz... da se to tak vysvetlit?
« Poslední změna: 10. 07. 2014, 22:27:00 od Petr Krčmář »


Martin Volf

Re:IPTABLES - pochopeni pravidla
« Odpověď #1 kdy: 10. 07. 2014, 18:36:44 »
Myslím, že to znamená, že z paketů na tcp/dport/80 se na prvních 10 uplatní toto pravidlo, tj. ACCEPT, a pro další se toto pravidlo uplatní v průměru na jeden za minutu. Na ostatní tcp/dport/80 pakety se uplatní v pořadí následující pravidlo, případně výchozí politika chainu INPUT. Tam asi chcete mít DROP nebo REJECT.

Re:IPTABLES - pochopeni pravidla
« Odpověď #2 kdy: 10. 07. 2014, 19:16:53 »
A ještě by se slušilo dodat, že pokud je cílem omezovat počet spojení namísto počtu paketů, chce to ještě buď před toto pravidlo přidat obecné povolení paketů ve stavu ESTABLISHED, nebo k tomuto pravidlu přidat -m state --state NEW.

j

Re:IPTABLES - pochopeni pravidla
« Odpověď #3 kdy: 10. 07. 2014, 19:20:14 »
Funguje to nasledovne ...

limit urcuje jak casto se uplatni pravidlo
burst je defakto takova vyjimka z nej

=> rikas, ze se pravidlo uplatni 1x za minutu, ale ze kazdou minutu akceptujes 10paketu zcela bez omezeni. 11ctej to tudiz posle uz na dalsi pravidlo v rade, protoze to uz bude prekrocen ten 1/min

Kdybys tam mel limit 3/min ... tak to funguje tak, ze 3x za minutu akceptujes 10 paketu (respektive 1x kazdych 20s).

http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html

Jinak tohle pouzivat na cokoli jinyho nez omezeni logovani je hodne blbej napad.

Karlos

Re:IPTABLES - pochopeni pravidla
« Odpověď #4 kdy: 10. 07. 2014, 22:06:36 »
Kdybys tam mel limit 3/min ... tak to funguje tak, ze 3x za minutu akceptujes 10 paketu (respektive 1x kazdych 20s).
Ale tak to přeci není, je to i v tom odkazu: Also, every twenty minutes which passes without matching a packet, one of the burst will be regained; if no packets hit the rule for 100 minutes, the burst will be fully recharged; back where we started.
Tzn, že --limit-burst je zásobník či buffer. Po jeho zaplnění se nic nepřijme. --limit je pak pravidlo, které odmazává jeden paket ze zásobníku za daný čas (2/min - 2 za minutu)


j

Re:Pochopení pravidla iptables
« Odpověď #5 kdy: 10. 07. 2014, 22:50:21 »
Jop mas recht ... ja to necet cely ... ;D burst plati pro celej interval.

Kazdopadne to nic nemeni na tom, ze neni dobrej napad to pouzivat na nic jinyho nez logovani, aznto to zpusobuje nefunkcnost a defakto self dos.

Lol Phirae

Re:Pochopení pravidla iptables
« Odpověď #6 kdy: 10. 07. 2014, 23:00:27 »
Kazdopadne to nic nemeni na tom, ze neni dobrej napad to pouzivat na nic jinyho nez logovani, aznto to zpusobuje nefunkcnost a defakto self dos.

Jsou i rozumná využití, např.

Kód: [Vybrat]
iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT

Josef

Re:Pochopení pravidla iptables
« Odpověď #7 kdy: 11. 07. 2014, 10:25:59 »
Diky za vysvetleni. No rekneme, ze mam stranku, ktera nacita z 10 databazi hromadu dat a ted mi nkedo drzi F5 to je tak trosk DOS attack. ....
Jak tohle muzu pomoci iptables limitovat?

PCnity

  • *****
  • 706
    • Zobrazit profil
    • E-mail
Re:Pochopení pravidla iptables
« Odpověď #8 kdy: 11. 07. 2014, 11:09:41 »
Sice je to offtopic, ale nebolo by efektivnejsie blokovat to na strane aplikacie? Blokovat to cez FW je uplne netransparentne voci klientovi, ten nemusi vobec chapat v com je problem... Prejde ku konkurencii lebo "sluzba nie je stabilna".

Lol Phirae

Re:Pochopení pravidla iptables
« Odpověď #9 kdy: 11. 07. 2014, 11:25:46 »
Sice je to offtopic, ale nebolo by efektivnejsie blokovat to na strane aplikacie?

Jo, bingo!

Josef

Re:Pochopení pravidla iptables
« Odpověď #10 kdy: 11. 07. 2014, 11:39:39 »
Jasne ale rad bych pochopil iptables ... reknem, ze to nebude 80/443 ale 3389, 1723 atd...

Re:Pochopení pravidla iptables
« Odpověď #11 kdy: 11. 07. 2014, 13:43:58 »
Diky za vysvetleni. No rekneme, ze mam stranku, ktera nacita z 10 databazi hromadu dat a ted mi nkedo drzi F5 to je tak trosk DOS attack. ....
Jak tohle muzu pomoci iptables limitovat?
Takže především je potřeba bezpodmínečně povolit již navázaná spojení, protože zahazování jejich paketů může situaci jen zhoršit, nikdy zlepšit.
Kód: [Vybrat]
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTPak je potřeba povolit nová spojení s patřičným limitem. Asi bych v tomto případě volil limit per IP adresa, na což se náramně hodí modul hashlimit:
Kód: [Vybrat]
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m hashlimit --hashlimit-upto 1/min \
--hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name Muj_limit -j ACCEPT

A nakonec, aby to celé mělo nějaký smysl, musí být zajištěno zahození všeho, co není povoleno, třeba politikou chainu:
Kód: [Vybrat]
iptables -P INPUT DROPJá bych ale doporučil odmítnutá spojení specificky odmítat ICMP rejectem, ať má nebohý klient šanci se dozvědět, co je špatně:
Kód: [Vybrat]
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j REJECT

Re:Pochopení pravidla iptables
« Odpověď #12 kdy: 11. 07. 2014, 16:40:18 »
Diky za vysvetleni. No rekneme, ze mam stranku, ktera nacita z 10 databazi hromadu dat a ted mi nkedo drzi F5 to je tak trosk DOS attack. ....
Jak tohle muzu pomoci iptables limitovat?
Pomocí iptables nijak, protože iptables nevidí dovnitř komunikace a nevědí, že zrovna v tomhle spojení bude klient požadovat tu stránku s 10 databázemi. Navíc HTTP umožňuje jedním spojením posílat víc požadavků, takže vůbec není jisté, že držení F5 bude znamenat nová a nová spojení.
Limitovat to můžete jedině na straně aplikace, a ještě lepší je nelimitovat to, ale data kešovat, takže dotaz na nová data do databáze se provede jenom tak často, jak vy určíte.

Josef

Re:Pochopení pravidla iptables
« Odpověď #13 kdy: 14. 07. 2014, 10:22:06 »
Diky za vysvetleni. No rekneme, ze mam stranku, ktera nacita z 10 databazi hromadu dat a ted mi nkedo drzi F5 to je tak trosk DOS attack. ....
Jak tohle muzu pomoci iptables limitovat?
Takže především je potřeba bezpodmínečně povolit již navázaná spojení, protože zahazování jejich paketů může situaci jen zhoršit, nikdy zlepšit.
Kód: [Vybrat]
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTPak je potřeba povolit nová spojení s patřičným limitem. Asi bych v tomto případě volil limit per IP adresa, na což se náramně hodí modul hashlimit:
Kód: [Vybrat]
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m hashlimit --hashlimit-upto 1/min \
--hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name Muj_limit -j ACCEPT

A nakonec, aby to celé mělo nějaký smysl, musí být zajištěno zahození všeho, co není povoleno, třeba politikou chainu:
Kód: [Vybrat]
iptables -P INPUT DROPJá bych ale doporučil odmítnutá spojení specificky odmítat ICMP rejectem, ať má nebohý klient šanci se dozvědět, co je špatně:
Kód: [Vybrat]
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j REJECT


Jenom bych se potreboval jeste zeptat na tohle
Kód: [Vybrat]
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m hashlimit --hashlimit-upto 1/min \
--hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name Muj_limit -j ACCEPT

moc si nedovedu prelozit  tuhle cast " --hashlimit-upto 1/min  --hashlimit-burst 10" - pokud je za minutu prijmes vic jak  10 packetu s hlavickou NEW, pak reject?

Re:Pochopení pravidla iptables
« Odpověď #14 kdy: 14. 07. 2014, 13:22:00 »
V tomhle konkrétním případě budou zaříznuta nová spojení z dané zdrojové IP adresy, která přicházejí častěji než jednou za minutu. Přičemž počáteční zásoba je deset spojení. Tedy pokud do toho někdo bude neustále tlouct, podaří se mu nejdřív 10 spojení v řadě a pak jedno další každou minutu.