Jeden z moich serwerów LAMP został niedawno wyłączony przez jakiegoś bota skryptowego szukającego exploitów. Wygląda na to, że robił tak wiele żądań na sekundę, że przeciążał pamięć RAM na serwerze i sprowadził całą witrynę na godzinę. To „attacK” pochodziło z jednego adresu IP.
Jak więc mogę automatycznie i tymczasowo zablokować adres IP, który powoduje zbyt wiele trafień na moim serwerze LAMP w krótkim czasie? Jakie jest najlepsze narzędzie do tego zadania i czy powinienem to rozwiązywać na poziomie systemu operacyjnego czy poprzez PHP?
Powinieneś unikać prób robienia tego z PHP. Zanim PHP się zaangażuje, jest już za późno - pamięć została już przydzielona.
Możesz zablokować adresy IP na dowolnej warstwie, ale najniższym poziomem, który zużywa najmniej zasobów, jest trasa, którą chcesz wybrać. Zazwyczaj jest to zapora ogniowa. Przynajmniej iptables (firewall linux) jest tym, czego chcesz użyć. Istnieją narzędzia, o których wspominali inni, takie jak Fail2Ban, które mogą zautomatyzować to za Ciebie. Zewnętrzna zapora sieciowa byłaby lepsza.
Oprócz próby zakazania obrażania adresów IP, powinieneś spróbować lepiej wykorzystać swoje zasoby. Jeśli żądanie zajmie mniej zasobów, atak będzie trwał dłużej.
Apache wykorzystuje również dużo pamięci. Jeśli używasz mod_php, jest nawet gorzej, ponieważ PHP jest ładowane w każdym procesie potomnym Apache. Oznacza to, że nawet żądania do treści statycznych (css / js / images) ładują PHP, nawet jeśli PHP nie jest używane. Możesz rozwiązać ten problem, używając zamiast tego FastCGI. mod_fcgid to dobra opcja.
Istnieją również inne serwery WWW, które są bardziej zasobooszczędne. Nginx jest moim ulubionym. Jest też Lighttpd. Wiele osób lubi Litespeed (spadek w zamian za Apache).
Jeśli chcesz pozostać przy Apache, zastanów się nad jego optymalizacją. Rozważ wyłączenie .htaccess. Oto dobre wyjaśnienie, dlaczego .
źródło
Aby kontrolować lub blokować ruch HTTP, możesz użyć:
Należy jednak pamiętać, że te narzędzia mogą również blokować / spowalniać roboty internetowe, a tym samym wpływać na SEO.
źródło
ossec może robić tego typu rzeczy automatycznie i transparentnie na podstawie syslogs.
źródło
man iptables
i zobaczenia, co oznacza każda flaga i jak one działają razem.NoooBS,
--- powódź ---
iptables -N logdrop iptables -A logdrop -m niedawna --set - nazwa czarna lista
iptables -A logdrop -m limit --limit 1 / s --limit-burst 1 -j LOG - przedrostek dziennika „Flood:”
iptables -A logdrop -j DROP
iptables -N ddos iptables -A ddos -m ostatnie --rcheck - nazwa czarna lista - sekundy 300 --hitcount 1 -j logdrop iptables -A ddos -m ostatnie --set - nazwa ponownie iptables -A ddos -m ostatnie --update - nazwa ponownie - sekundy 60 --hitcount 2 -j logdrop iptables -A ddos -j POWRÓT
źródło