Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
Niestety na moją stronę od kilku godzin ktoś przeprowadza ataki.
Nie są to jednak typowe ataki DOS czy DDOS.
Po prostu ktoś ma ustawione boty aby wchodziły pod link i wykonywały różnie akcje w bardzo krótkich odstępach czasu.
Próbowałem blokować zakres w IPtables ale i tak ten zakres działał.
Później zauważyłem że adresów IP z których przeprowadzane są ataki jest jeszcze więcej.
Co mogę zrobić w takiej sytuacji?
Wpadłem na pomysł aby blokować wszystkie IP które wygenerują za duży ruch w krótkim odstępie czasu jednak nie mam zielonego pojęcia jak się za to zabrać.
System jaki mam zainstalowany to Debian 8 Jessie.
Pozdrawiam.
Ostatnio edytowany przez Gruchol (2016-03-27 21:17:21)
Offline
Ipset + moduł SET do Firewalla potrafi w jednej regule Firewalla blokować nawet 200 tys adresów.
Do tego Apache w modułach Evasive i Mod-Security mają możliwość odpalania skrypta, który będzie dorzucał adresy do ipseta.
Oryginalna wersja nazywa się httpd-guardian, i dodaje reguły firewalla, co jest o tyle głupie, że kiedy doda sobie 10 czy 20 tys reguł, to sieć na serwerze praktycznie przestanie działać, a opóźnienie każdego pakietu będzie wynosić kilka sekund przy 100% obciążenia procka.
Do jednej tablicy Ipseta można pakować tysiące adresów bez ryzyka, że sieć stanie.
Przy okazji schowaj lepiej Apacha za Nginxem, albo w ogóle zrób przesiadkę na Nginxa, ten jest dużo odporniejszy na różne typy ataków, bo po prostu nie otwiera nowego wątku czy procesu dla każdego żądania.
EDIT:
Jak booty młócą stronę w krótkich odstępach czasu z tych samych IP, to wybawieniem oprócz Nginxa może być moduł hashlimit netfiltera.
NP:
iptables -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 30/min \ --hashlimit-burst 30 --hashlimit-mode srcip --hashlimit-name http -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j DROP
Musisz sobie tylko wartości ustawić empirycznie, żeby przeglądarki miały wystarczający limit.
RTFM:
iptables -m hashlimit --help iptables -m set --help iptables -j SET --help
Użycie ipseta?
Taka mała pułapka na skanery portów.
iptables -t raw -S | grep wypad -A PREROUTING -m set --match-set wypad src -j SET --add-set wypad src --exist --timeout 86400 -A PREROUTING ! -i lo -p tcp -m multiport --dports 22,113,445,1433,1512,2175,2176,3306,5432 -j SET --add-set wypad src --timeout 3600 -A PREROUTING -m set --match-set wypad src -j DROP
ipset list wypad Name: wypad Type: hash:net Revision: 6 Header: family inet hashsize 1024 maxelem 65535 timeout 3600 Size in memory: 1696 References: 4 Members: 54.193.86.82 timeout 81534 222.186.160.35 timeout 19 183.60.48.25 timeout 74060 59.174.111.76 timeout 2271 59.174.111.179 timeout 3164 71.113.7.144 timeout 2294
Jak widać, działa grzecznie.
Zobacz też to:
https://forum.dug.net.pl/viewtopic.php?id=25919
Użycie hashlimita? malutki serwerek XMPP (w domu), wszystko działało.
iptables -N XMPP iptables -A XMPP ! -i lo -p tcp -m set --match-set spamhaus src -j REJECT --reject-with tcp-reset iptables -A XMPP ! -i lo -p tcp -m set --match-set sblamdrop src -j REJECT --reject-with tcp-reset iptables -A XMPP ! -i lo -p tcp -m multiport --dports 5222,5223 -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -m hashlimit --hashlimit-upto 3/min --hashlimit-burst 3 --hashlimit-mode srcip --hashlimit-name xmpp -j ACCEPT iptables -A XMPP ! -i lo -p tcp -m multiport --dport 5269 -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -m hashlimit --hashlimit-upto 5/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name xmpp -j ACCEPT iptables -A INPUT ! -i lo -p tcp -m multiport --dports 5222,5223,5269 -j XMPP
Pozdro
Ostatnio edytowany przez Jacekalex (2016-03-27 23:03:11)
Offline