Czyli błąd 503 na serwerze współdzielonym.

W tym artykule opiszę problem który pojawiał się nagminnie od pół roku na jednym z for internetowych jednego z moich klientów. Mianowicie klient borykał się z nagminnym wyczerpywaniem limitu ruchu na serwerze współdzielonym, co powodowało blokadę ze strony serwera i brak dostępności portalu co przekładało się na spadek zainteresowania forum oraz utratę wiarygodności u reklamodawców.

Problemem nie było jednak samo wyczerpywanie limitu ale również obciążenie procesów CPU które powodowało automatyczną blokadę spowodowaną obciążeniem przydzielonego miejsca na serwerze.

Aby zapobiec ciągłemu blokowaniu połączeń należało na samym początku znaleźć przyczynę która powodowała owe obciążanie serwera. Klient twierdził że konkurencja stosuje wobec jego strony atak DDOS co miało sens gdyż w przeszłości „walka” pomiędzy konkurencją przybrała na sile w momencie gdy admin z forum klienta publicznie obrażał konkurencję na ich forum jak i na klienta który miał teraz problem z serwerem. W przeszłości doszło nawet do włamania się konkurencji na forum klienta które jest postawione na silniku IPS – używając hasła admina który założył konto u konkurencji nie zmieniając go. Skasowane zostały wówczas konta wszystkich adminów oraz moderatorów oraz usunięto sklep który był reklamowany na stronie. Wtedy pomogły zmiany i tworzenie konto administratorów bezpośrednio w bazie danych. Wiedząc o tej przygodzie pamiętałem że wtedy strona została zabezpieczona od strony backendu oraz zmienione zostało również IP i włączono firewall na Cloudflare aby uniknąć ataków DDOS tak więc nie pasowała mi opowieść klienta o tym że ktoś prowadzi ataki używając adresu IP gdyż to było zamaskowane.

limit procesów CPU były w całości wykorzystane

Pierwszym krokiem jaki podjąłem i należało podjąć było sprawdzenie ruchu na stronie. Jako że nie było zainstalowane żadne zaawansowane narzędzie, trzeba było wyśledzić skąd pochodził ruch za pomocą wbudowanych wtyczek w CPanel. Po wejściu w Awstat zauważyłem że bandwitch oraz wejścia są wykorzystywane przez IP z Rumunii – kraju na którym był postawiony serwer współdzielony forum. Pozostało mi jedynie w zakładkę Visitors aby odszukać powtarzające się IP i przeanalizować jakie mają wejścia. Okazało się że większość odwiedzin pochodziło nie z ataku DDOS ale z prawdziwego adresu IP serwera na którym jest forum!

Po sprawdzeniu jeszcze rodzaju połączenia okazało się że ścieżka wywołuje zapytanie Serf/1.3.9 (mod_pagespeed/1.13.35.2-0) czyli w skrócie strona sama siebie odwiedza 🙂 Oznaczało to, że jakiś proces nie działa prawidłowo, pomyślałem że być może po aktualizacji platformy IPS coś poszło nie tak jednakże po prześledzeniu google nie spotkałem się z takim przypadkiem w obecnej wersji. Druga opcją były skrypty które nie są standardowe a zostały zaimplementowane do forum – tak jak wspomniany sklep który działa na dodatkowej wtyczce. Po zrestartowaniu serwera z pomocą supportu hostingu, zalogowałem się na stronę jako admin w poszukiwaniu wtyczek i… przeraziłem się tym co zobaczyłem. W panelu wtyczek nie było 5 czy nawet 10 dodatkowych pluginów ale ponad 40! Które działały w tle i pobierały zasoby transferu. Po wyłączeniu liczba procesów przestała rosnąc i zaczęła maleć osiągając 0. Po chwili zrobiłem szybką selekcję i okazało się że niektóre z wtyczek były pobrane z dziwnych stron oraz jako pirackie wersje z neta. Najprawdopodobniej admin chciał ‚ulepszyć’ serwis instalując wtyczki nie wiedząc, że pobierając wersję nulled wiąże się z ryzykiem że taki moduł będzie z niespodzianką 🙂

Podsumowując źródłem nadmiernego wyczerpywania limitu były zainstalowane wtyczki z niepewnego źródła, nie aktualizowane i z błędami w kodzie nie korespondujące z aktualną wersją forum IPS. Akcją korygującą jest poinformowanie wszystkich adminów oraz moderatorów aby nie instalowali niczego bez wiedzy właściciela strony oraz przeszkolenie personelu w tym zakresie. Kolejnym możliwym krokiem jest zablokowanie dostępu do tego działu z panelu admina. Od strony technicznej został zmieniony hosting na lepsze parametry aby zapewnić zaps procesów CPU.

zwiększono parametry hostingu e by zapewnić zapas

A może znasz jeszcze inne przyczyny nadmiernego pobierania bandwith i sposoby radzenia sobie z nimi?