Portál AbcLinuxu, 10. května 2025 06:24
internet | | eth0 | router+firewall | | eth1 eth2 | | | | (DMZ ) (vnitrni sit, klienti, monitoring server) (web, ..)Z internetu router natuje provoz do vnitřní sítě přes eth2. Přes eth1 routuje do DMZ, kde je web, mail apod. Na web server byl několikaminutový SYN flood útok, provoz cca 60 Mbit/s (nevím přesně, většinu útoku byl router pro monitoring server nedostupný). Na web serveru se objevilo v logu:
Oct 6 15:19:00 web kernel: possible SYN flooding on port 80. Sending cookies. ...Jenže na routeru/firewallu, kde je několik pravidel typu max. počet spojení za minutu ze zdrojové IP adresy se objevilo toto:
Oct 6 15:19:10 r kernel: martian source ..... Oct 6 15:19:10 r kernel: ll header: .... Oct 6 15:19:15 r kernel: __ratelimit: 20252 callbacks suppressed Oct 6 15:19:15 r kernel: xt_hashlimit: max count of 65536 reached Oct 6 15:19:15 r kernel: xt_hashlimit: max count of 65536 reached ....Myslím si, že xt_hashlimit to hlásí z toho důvodu, že TCP syn flood byl z moc IP najednou a pravidla na omezení počtu spojení za minutu na zdrojovou adresu vytváří každé jedno záznam v hash tabulce a ta se prostě zaplnila. OK. Jenže jedna otázka je - jak ty tabulky defaultně zvětšit, druhá zásadnější - proč byly nedostupné všechny stroje v DMZ? Hash tabulky se vztahují ke konkrétnímu pravidlu na web tak proč to ovlivnilo i ostatní servery a zapříčinilo nedostupnost routeru?
sysctl -w net.core.message_cost=0
--hashlimit-htable-max XYZ
je vhodne take pak umerne navysit i --hashlimit-htable-size
sysctl net.ipv4.netfilter.ip_conntrack_max
defaultne cca 65k
60Mbit: 1024 * 1024 * 60 / 8 / 60 bajtu (cca velikost TCP SYN paketu) = 131 172 SYN paketu za sekundu := to je cca sakra hodne :) Pokud se dobre pomatuju, radove 30Mbit SYN znedostupnilo relativne nedavno docela velke zpravodajske weby.
zvlast, kdyz pro kazdy paket se musi divat do hashtabulky a hledat naky omezeni.
Muzes vyzkouset iptables -A XYZ -p tcp --syn -m limit --limit X/s
mohlo by se chovat lepe.
Ale obecne, pokud nemas hodne zeleza a casu experimentovat, tak se tomu brani dost tezko(pokud teda nepouzijes neco ve stylu https://www.cloudflare.com/
a podobne.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.