Fórum Root.cz

Hlavní témata => Sítě => Téma založeno: Josef 10. 07. 2014, 17:42:06

Název: Pochopení pravidla iptables
Přispěvatel: Josef 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?
Název: Re:IPTABLES - pochopeni pravidla
Přispěvatel: Martin Volf 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.
Název: Re:IPTABLES - pochopeni pravidla
Přispěvatel: Ondřej Caletka 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.
Název: Re:IPTABLES - pochopeni pravidla
Přispěvatel: j 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.
Název: Re:IPTABLES - pochopeni pravidla
Přispěvatel: Karlos 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)
Název: Re:Pochopení pravidla iptables
Přispěvatel: j 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.
Název: Re:Pochopení pravidla iptables
Přispěvatel: Lol Phirae 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
Název: Re:Pochopení pravidla iptables
Přispěvatel: Josef 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?
Název: Re:Pochopení pravidla iptables
Přispěvatel: PCnity 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".
Název: Re:Pochopení pravidla iptables
Přispěvatel: Lol Phirae 11. 07. 2014, 11:25:46
Sice je to offtopic, ale nebolo by efektivnejsie blokovat to na strane aplikacie?

Jo, bingo!
Název: Re:Pochopení pravidla iptables
Přispěvatel: Josef 11. 07. 2014, 11:39:39
Jasne ale rad bych pochopil iptables ... reknem, ze to nebude 80/443 ale 3389, 1723 atd...
Název: Re:Pochopení pravidla iptables
Přispěvatel: Ondřej Caletka 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
Název: Re:Pochopení pravidla iptables
Přispěvatel: Filip Jirsák 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.
Název: Re:Pochopení pravidla iptables
Přispěvatel: Josef 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?
Název: Re:Pochopení pravidla iptables
Přispěvatel: Ondřej Caletka 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.
Název: Re:Pochopení pravidla iptables
Přispěvatel: Josef 14. 07. 2014, 15:29:12
A nelze to spis nastavit tak, ze pokud to za minutu tukne 10x tak do uplynuti 60 sec, nova spojeni zahazuje a po uplynuti toho casu se to obnovi zpet na tech 10?
Název: Re:Pochopení pravidla iptables
Přispěvatel: j 14. 07. 2014, 20:13:20
A nelze to spis nastavit tak, ze pokud to za minutu tukne 10x tak do uplynuti 60 sec, nova spojeni zahazuje a po uplynuti toho casu se to obnovi zpet na tech 10?

Da se nastavit cokoli ... nastavis interval na vic minut pripadne v ramci intervalu definujes vic "regulernich" pokusu. Samo muzes prosacovat rosireni iptables, ruznych nastroju najdes habakuk ... a v nejhorsim muzes pouzit zcela obecny filtry (to ale bude pomaly).

Jen bacha na vec, nektery veci generujou tak nejak "od prirody" vic new paketu (nejspis pro sychr ...), trebas RDP vpohode 3 (na jeden login). Ja sem trebas resil to, ze uzasny M$ vytvor (terminal server) byl temer dokonale odrovnan (100% zatizeni 4 jader) nekolika malo (neuspesnymi) pokusy o login/minuta (nebylo to vic nez 10, asi vic ani nestiha ... ;D). Takze sem tam nastavil 5x NEW/15 minut/ip (sem si tak rek, ze na kratsi dobu se nikdo pripojovat nebude - z logu) ... a pak resil, proc jim nejde login, kdyz 1x zvorou heslo.