JohnyByk 1 Zgłoś post Napisano Luty 5, 2014 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
N0Name 48 Zgłoś post Napisano Luty 5, 2014 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
JohnyByk 1 Zgłoś post Napisano Luty 5, 2014 (edytowany) 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 Luty 5, 2014 przez JohnyByk (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach