Skocz do zawartości
xnn

Metoda obrony przed krótkimi Dosami?

Polecane posty

Witam,

 

Od pewnego czasu serwer gry, którym administruje, jest co chwile atakowany metodą, którą mógłbym nazwać "krótkimi floodami". Mianowicie polega ona na wystrzeleniu ogromnej ilości pakietów w kierunku serwera ( ok 30 MB ), ktore na kilka sek sieja spustoszenie na serwerze. ksoftirqd oraz syslogd skacza w tym momencie do 100%. Komunikacja z serwerem jest mocno utrudniona, polaczenie z graczami zostaje zerwane. Atak jest na tyle krotki iz bandwidthd nie jest w stanie go zanotowac u siebie. Podejrzewam jakis krotki syn-flood?

Jak sie bronic i wykrywac tego typu atak? Czy znacie moze jakies narzedzia do mierzenia oraz zapisywania peakow ilosci pakietow na sek na adres IP?

 

Pozdrawiam

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Pierw zorientuj sie jak dokladnie wyglada atak (tcpdump , iptraf lub cos innego ). Jesli podejrzewasz syn-flood to wlacz SYN cookies.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Syn Cookies wlaczone mam. Co do zorientowania sie, wlasnie pokladam wszystkie sily od rana w tym by dowiedziec sie co dokladnie sie dzieje. O tyle utrudnione jest to iz ataki sa bardzo nieregularne, trwaja kilka-kilkanascie sekund a podczas ich trwania nawiazanych jest ok 600 normalnych polaczen TCP. Czy znacie jakis program/skrypt, ktorym udaloby mi sie wychwicic adresy IP (oraz typ ataku) ktore w przeciagu kilku sek nawiazaly najwieksza ilosc polaczen, wyslaly najwieksza ilosc pakietow do serwera? Moge logowac wszystkie polaczenia tcpdump'em tylko.. Ile Giga logi zajma i jak to pozniej przetworzyc :P

 

Myslalem o limitowaniu, niestety kernel nie obsluguje LKM i brakuje mu niektorych modulow do obslugi limitowania (iplimit, ipconnlimit).. Czeka mnie najprawdopodobniej niedlugo rekompilacja ktorej tak naprawde jeszcze nie robilem i sie dosyc boje ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Moge logowac wszystkie polaczenia tcpdump'em tylko.. Ile Giga logi zajma i jak to pozniej przetworzyc :)

Możesz też logować same połączenia z flagą SYN: tcpdump -ne dst port 80 and 'tcp[13] & 2 == 2'

 

Możesz zmienić zachowanie stosu TCP/IP w kernelu tak,

aby serwer nie tylko nie odsyłał ACK niewiadomo ile razy,

ale i potem by szybko się pozbywał socketu aka zmniejsz timeouty.

 

Możesz wklepać również do iptables limit na inicjację połączeń.

 

Możesz markować pakiety z flagą SYN i ustawić QOS via tc.

 

Możesz użyć wspomianego deflate, którego ja osobiście nie lubię,

bo jak nawalają ile fabryka dała, to się ten skrypt wywoływany

z cron'a lubi zapętlać i wisieć w X kopiach.

 

Możesz postawić lighttpd jako reverse proxy jeśli masz jednego vhosta,

bo on coś a la deflate ma już on-board.

 

Opcji jest pełno. Do wyboru. Do koloru... Przy czym ja polecam starego, dobrego tcpdumpa ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jedno pytanko. Czy ktos moze potwierdzic, ze podana nizej regula dziala i zachowuje sie jak nalezy? (akceptacja 2 nowych polaczen z danego adresu IP na 5 minut, reszte odrzuca).

 

iptables -I INPUT -p tcp --dport JAKIS_PORT -i eth0 -m state --state NEW -m recent --update --seconds 300 --hitcount 2 -j DROP

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Nie działa na 100%... ( sorry, że tak krótko :) )

 

A powod? Niby skopiowane zywcem z jakiegos manuala na stronie :) To teraz pytanie o okrężną droge ;)

Czy jest jakas mozliwosc limitowania polaczen bez uzycia modulow iplimit/connlimit (ktorych niestety na tej maszynie nie ma a KLM nie sa wkompilowane w jadro :) )

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
A powod? Niby skopiowane zywcem z jakiegos manuala na stronie :) To teraz pytanie o okrężną droge :)

Bo to źle skonstruowana regułka jest i nie ma prawa działać.

Czy jest jakas mozliwosc limitowania polaczen bez uzycia modulow iplimit/connlimit (ktorych niestety na tej maszynie nie ma a KLM nie sa wkompilowane w jadro :D )

Ja bym na Twoim miejscu spróbował jakiegoś w miarę świeżego kernela, bo 2.6.23 connlimit jest committed do kernela. Tak będzie najprościej...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×