Skocz do zawartości
Zaloguj się, aby obserwować  
JohnyByk

zabezpieczenie przed "odświeżeniem strony" - mod_evasive?

Polecane posty

Witam

 

W jaki sposób można zabezpieczyć się przed zabiciem serwera przez trzymanie klawisza F5?

Użycie go przez kilkanaście sekund na dużym skrypcie PHP może zabić cały serwer.

 

Nawet na serwerach home.pl czy innych można dostać komunikat server overloaded (zakładam, że dotyczy to zasobów jednego konta, ale jednak).

 

Wiem, że jest mod_evasive.

 

Zainstalowałem go. Skrypt dołączony do archiwum pokazuje, że działa:

root@server:/usr/src/mod_evasive# ./test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden

Konfiguracja jest standardowa, czyli:

<IfModule mod_evasive20.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>

Pomimo to jak zastosuję F5 na jednym z cięższych (jeśli chodzi o PHP'a) skryptów to nic się nie dzieje. Load serwera wzrasta, a ja nie jestem w żaden sposób ograniczany. Strona generuje około 120 requestów.

 

Problemem jest sam config czy może powinienem poszukać jakiegoś innego rozwiązania?

 

Nakierujcie mnie co może być nie tak. Może powinienem coś pokombinować z konfiguracją?

Już kombinowałem, ale niewiele się zmieniło. Odświeżanie strony za każdym razem zapycha serwer i muszę odczekać aż apache przemieli wszystkie procesy.

 

Używam apache'a 2.4 z mod_ruid2 + DA.

 

Pozdrawiam

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przede wszystkim konfiguracja apache, ile on może przyjąć klientów, wszystko zależne od zasobów maszyny.

Plus coś jeszcze jest w apache2 ale nie moge sobie przypomnieć; (

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Na razie z braku pomysłu ustawiam RLimitNPROC tak żeby w razie czego strony odpalane z danego usera nie zapchały serwera, a tym samym innych stron.

 

Niestety rozwiązanie ma wadę ponieważ strona atakowana palcem zagłady leżącym na F5 nie działa. Dlatego szukam rozwiązania, które na chwilę odetnie psotnika i pozwoli na bezproblemowego działanie "atakowanej" strony.

 

Wydaje mi się, że właśnie do tego sluży mod_evasive, ale coś nie za bardzo działa.

 

Zauważyłem, że przy którejś próbie konfiguracji zaczęły pojawiać się wpisy:

[Wed Feb 05 21:03:48.840463 2014] [:error] [pid 4366] [client 72.14.199.36:38141] client denied by server configuration:

Niestety wpisy pojawiają się dopiero po tym jak odświeżane skrypty (np. w ilości 100 procesów) skończą się wykonywać.

 

Moja teoria jest taka, że wykonuje się PHP (najbardziej zasobożerna część całości) i dopiero wtedy oddawane są dane (requesty) i zliczane przez mod_evasive. Czyli szybkie wykonywanie skryptu powoduje zapchanie reszty i blokada nie załącza się pomiędzy odświeżeniami skryptu a dopiero po requestach, które lecą po wykonaniu logiki w PHP'ie.

 

Czy dobrze rozumuję i faktycznie może tak być?

A może jednak mam skopaną konfigurację? Nie wierzę, że nie da się tego rozwiązać.

 

Pozdrawiam

Edytowano przez JohnyByk (zobacz historię edycji)

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ę

Zaloguj się, aby obserwować  

×