Portál AbcLinuxu, 5. května 2025 09:18
Řešení dotazu:
No mě třeba pomohlo opačné řešení při útoku na web server apache. Se zapnutým syncookies a firewall nastavený na maximální počet navázání spojení z nějaké zdrojové adresy za jednotku času + maximální počet současných spojení z nějaké ip. To mi docela zabralo v první linii oproti DDOS útoku vedenému z několika zemí najednou (minimálně zdrojové IP takové byly), protože z každé z daných IP bylo vždy několik pokusů v podstatě najednou. Tím podstatným ale bylo řešit vyčerpání zdrojů na web serveru kvůli zpracovávání velkého množství requestů na dynamické weby v PHP a tím pádem 100% CPU využití pro běh php skriptů. Díky mod_qos a různým cachím v php byl server během útoku alespoň částečně dostupný i když reagoval strašně pomalu. V podstatě vše jsem vyřešil nasazením varnish cache před apache s vynucením cachování prakticky všeho.
Nicméně v případě opravdu pořádného DDOS se podle mně prakticky nelze bránit ničím (teda pokud člověk nemá tolik serverů jako třeba Google apod. a nemůže rozložit zátěž).
[root@mail ~]# tcpdump -X -l -w - port 25 | strings -a tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 2DO~ 220 mujserver.cz ESMTP Sendmail 8.13.1/8.13.1; 2DO~ 220 mujserver.cz ESMTP Sendmail 8.13.1/8.13.1; 220 mujserver.cz ESMTP Sendmail 8.13.1/8.13.1; 500 5.5.1 Command unrecognized: ",Z'C~D/ 2D](\ 220 mujserver.cz ESMTP Sendmail 8.13.1/8.13.1; f<fG f<fG 220 mujserver.cz ESMTP Sendmail 8.13.1/8.13.1; 2D<K 500 5.5.1 Command unrecognized: " (T7@ _e\gO 2DK( 2D\gO K(} uL _b\gO 2DK( z} uMP [`\gO 2DK( z} uMP {#RHi[Y fpm_qw 2D\gO K(} uM 2D<K (j}@ 2D]= ?rGa ]?*P ]=}{: 500 5.5.1 Command unrecognized: "bc[ ]=}{; 2D]= 500 5.5.1 Command unrecognized: " 500 5.5.1 Command unrecognized: " 2D<K 500 5.5.1 Command unrecognized: " \bF2 2D\bF2 2D\gO K(} uM 220 mujserver.cz ESMTP Sendmail 8.13.1/8.13.1; \bF2 \bF2 2D\bF2 2DK( z} x8P X%}P X%}P @)e{ h}Wv O0tn 0R%@ (R+@ (R,@
[root@mail ~]# tcpdump -ni eth0 'dst 192.168.50.68' |head -n 30 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 17:45:38.218437 IP 192.168.50.55.45795 > 192.168.50.68.ssh: . ack 200739613 win 1323 <nop,nop,timestamp 144251835 171133595> 17:45:38.218507 IP 192.168.50.55.45795 > 192.168.50.68.ssh: . ack 113 win 1323 <nop,nop,timestamp 144251835 171133595> 17:45:38.453184 IP 190.239.157.188.59769 > 192.168.50.68.smtp: F 578564534:578564534(0) ack 2511328731 win 16616 17:45:38.692882 IP 190.239.157.188.59769 > 192.168.50.68.smtp: R 1:1(0) ack 160 win 0 17:45:39.331688 IP 178.248.39.10.60333 > 192.168.50.68.smtp: R 706985253:706985253(0) ack 2520855258 win 16384 17:45:39.455043 IP 122.164.190.40.29535 > 192.168.50.68.smtp: R 2077333757:2077333757(0) ack 2514071860 win 16384 17:45:39.539647 IP 81.93.6.152.14054 > 192.168.50.68.smtp: F 120277023:120277023(0) ack 2510789905 win 65202 17:45:39.616262 IP 81.93.6.152.14054 > 192.168.50.68.smtp: R 1:1(0) ack 38 win 0 17:45:40.079257 arp who-has 192.168.50.68 tell 192.168.50.1 17:45:40.395685 IP 86.64.144.172.53573 > 192.168.50.68.smtp: F 1520487877:1520487877(0) ack 2515604318 win 2920 <nop,nop,timestamp 925174499 171133420> 17:45:40.398128 IP 192.168.50.55.45795 > 192.168.50.68.ssh: . ack 1185 win 1323 <nop,nop,timestamp 144254014 171134140> 17:45:41.491866 IP 82.71.5.240.34948 > 192.168.50.68.smtp: F 289190999:289190999(0) ack 2519538730 win 254 17:45:41.626310 IP 82.71.5.240.34948 > 192.168.50.68.smtp: R 1:1(0) ack 79 win 0 17:45:41.650807 IP 181.66.39.65.54786 > 192.168.50.68.smtp: F 3796169060:3796169060(0) ack 2514954746 win 16938 17:45:41.878169 IP 181.66.39.65.54786 > 192.168.50.68.smtp: R 1:1(0) ack 240 win 0 17:45:41.880095 IP 181.66.39.65.54786 > 192.168.50.68.smtp: R 3796169061:3796169061(0) win 0 17:45:42.528168 IP 86.64.144.172.53573 > 192.168.50.68.smtp: R 1520487878:1520487878(0) win 0 17:45:42.528632 IP 86.64.144.172.53573 > 192.168.50.68.smtp: R 1520487878:1520487878(0) win 0 17:45:42.808445 IP 72.8.1.186.33348 > 192.168.50.68.smtp: F 15125237:15125237(0) ack 2507305667 win 16296 17:45:42.979094 IP 72.8.1.186.33348 > 192.168.50.68.smtp: R 1:1(0) ack 187 win 0 17:45:43.268603 IP 181.165.69.204.2047 > 192.168.50.68.smtp: S 1437914439:1437914439(0) win 65535 <mss 1460,nop,wscale 1,nop,nop,sackOK> 17:45:43.271060 IP 192.168.50.55.45795 > 192.168.50.68.ssh: . ack 2257 win 1323 <nop,nop,timestamp 144256887 171134858> 17:45:43.396337 IP 176.249.19.176.64706 > 192.168.50.68.smtp: S 1686973645:1686973645(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK> 17:45:43.457368 IP 176.249.19.176.64706 > 192.168.50.68.smtp: . ack 2529639876 win 16425 17:45:43.471707 IP 176.249.19.176.64706 > 192.168.50.68.smtp: P 0:1024(1024) ack 1 win 16425 17:45:43.500534 IP 90.207.238.101.domain > 192.168.50.68.32768: 4458 NXDomain*- 0/1/1 (103) 17:45:43.552884 IP 181.165.69.204.2047 > 192.168.50.68.smtp: . ack 2516948740 win 64000 17:45:43.561819 IP 181.165.69.204.2047 > 192.168.50.68.smtp: P 0:1024(1024) ack 1 win 64000 17:45:45.438570 IP 81.20.147.34.1839 > 192.168.50.68.smtp: S 2628082629:2628082629(0) win 65535 <mss 1460,nop,nop,sackOK> 17:45:45.498282 IP 81.20.147.34.1839 > 192.168.50.68.smtp: . ack 2530633455 win 65535 49 packets captured 49 packets received by filter 0 packets dropped by kernel
Dobry den.
DDOS s 5 packety za sekundu je opravdu "masivni".
Podobne chovani jsem zazil u adslmodemu, ktery natoval-routoval.
Ono se dost setri - takze dokazal udrzet jen asi 256 spojeni.
Vzhledem k tomu, ze utocnik spojeni nezavira, tak vam to i pri jednom utoku za sekundu do peti minut vycerpa.
Marek
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.