Atak DDoS na stronę - jak się bronić?
DDoS nie włamuje się do witryny. Zasypuje ją ruchem, aż serwer przestaje odpowiadać prawdziwym użytkownikom. Dane zostają nietknięte, ale strona jest niedostępna, a przy sklepie to prosty rachunek: minuta przestoju to utracone zamówienia. Obrona polega na tym, żeby odfiltrować ruch, zanim dojdzie do Twojego serwera. Samo wzmacnianie serwera prawie nigdy nie wystarcza, bo atakujący ma po swojej stronie tysiące maszyn.
Czy to na pewno DDoS?
Trzy różne sytuacje wyglądają tak samo: strona nie odpowiada.
| Sygnał | DDoS | Awaria techniczna | Skok popularności |
|---|---|---|---|
| Wykres ruchu | pionowy skok, tysiące żądań na sekundę | brak wzrostu | wzrost łagodny |
| Źródła | wiele krajów, powtarzalne wzorce żądań | bez znaczenia | zgodne z grupą odbiorców |
| Logi serwera | te same adresy w kółko, dziwne nagłówki | błędy aplikacji | normalne wejścia |
| Po restarcie | wraca natychmiast | zwykle mija | utrzymuje się |
Zajrzyj do statystyk ruchu w panelu hostingu i do logów. Jeśli w tej samej sekundzie widzisz setki żądań o ten sam adres z różnych adresów IP, to atak, a nie awaria.
Co zrobić w pierwszej godzinie
1. Powiadom hosting. Przy współdzielonym serwerze to oni mają narzędzia do filtrowania i to oni pierwsi zauważą obciążenie.
2. Włącz tryb ochrony w panelu CDN. W Cloudflare jest to tryb podwyższonego bezpieczeństwa, który stawia przed witryną test przeglądarki.
3. Zablokuj ruch, którego nie obsługujesz. Jeśli sprzedajesz tylko w Polsce, ograniczenie geograficzne odcina znaczną część ataku.
4. Wyłącz zasobożerne funkcje: wyszukiwarkę wewnętrzną, filtrowanie produktów, generowanie raportów. To one najszybciej wykładają serwer.
5. Zbierz materiał: logi, wykresy, godziny. Przyda się przy zgłoszeniu i przy ustawianiu stałej ochrony.
Czego nie robić: nie restartuj serwera w kółko i nie podnoszaj limitów w nieskończoność. Przy trwającym ataku to kupowanie kilku minut za każdym razem.
Jak działa ochrona przed DDoS?
Sens ochrony polega na tym, żeby ruch przechodził najpierw przez sieć, która ma wielokrotnie większą przepustowość niż Twój serwer, i dopiero przefiltrowany trafiał do witryny.
Warstwa sieciowa
Odrzuca zalew pakietów, zanim dotrą do serwera. Tym zajmuje się dostawca CDN albo operator, a Ty tego nie konfigurujesz.
Warstwa aplikacji
Tu filtruje się żądania, które wyglądają jak ruch użytkownika, ale nim nie są: setki wejść na koszyk, próby logowania, zapytania do wyszukiwarki. Służą do tego reguły limitu żądań i testy przeglądarki.
Ukrycie adresu serwera
Jeśli atakujący zna prawdziwy adres IP Twojego serwera, może ominąć CDN i uderzyć bezpośrednio. Po wdrożeniu ochrony warto zmienić adres i zablokować ruch spoza sieci filtrującej.
Najczęstszy błąd po wdrożeniu Cloudflare to zostawienie starego adresu IP dostępnego z internetu. Ochrona stoi wtedy przy drzwiach, a atak wchodzi oknem.
Krzysztof Czapnik, KC Mobile
Trzy rodzaje ataków i dlaczego to ma znaczenie
Nazwa DDoS obejmuje kilka mechanizmów, a każdy blokuje się inaczej.
Atak wolumetryczny. Zalewa łącze samą ilością danych. Nie da się go zatrzymać na serwerze, bo problem powstaje wcześniej, w sieci operatora. Obronę zapewnia wyłącznie dostawca z odpowiednio dużą przepustowością.
Atak na warstwę aplikacji. Wygląda jak zwykły ruch: wejścia na stronę, wyszukiwania, próby logowania. Jest go stosunkowo mało, ale każde żądanie kosztuje serwer sporo pracy. To najczęstszy rodzaj przy małych i średnich witrynach, bo wystarczy do niego kilkaset maszyn.
Wyczerpanie stanu połączeń. Otwiera połączenia i nie kończy ich, aż serwer nie ma wolnych miejsc dla prawdziwych użytkowników. Objaw jest mylący: obciążenie procesora niskie, a strona nie odpowiada.
Rozpoznanie rodzaju decyduje o działaniu. Przy ataku wolumetrycznym reguły w panelu nic nie dadzą, przy ataku aplikacyjnym są całym rozwiązaniem.
Jak ustawić ochronę w Cloudflare?
Kolejność, która działa dla typowej witryny firmowej i sklepu.
1. Przenieś obsługę DNS domeny do Cloudflare i włącz proxy dla rekordów strony. Bez włączonego proxy ruch omija filtr.
2. Ustaw minimalny poziom bezpieczeństwa na średni, a w czasie ataku przełącz na tryb podwyższonej ochrony.
3. Dodaj reguły limitu żądań dla adresów najbardziej kosztownych: logowanie, wyszukiwarka, koszyk, formularze.
4. Ogranicz geograficznie ruch do krajów, w których działasz, jeśli nie prowadzisz sprzedaży zagranicznej.
5. Zmień adres IP serwera po wdrożeniu i zablokuj połączenia spoza sieci Cloudflare, żeby ochrony nie dało się ominąć.
Po każdej zmianie sprawdź witrynę z zewnątrz, najlepiej w sieci komórkowej. Zbyt ostre reguły potrafią zablokować także prawdziwych klientów, a przy sklepie to strata porównywalna z samym atakiem.
Ile kosztuje ochrona i czy trzeba płacić?
Dla większości witryn firmowych bezpłatny plan Cloudflare wystarcza, bo obejmuje podstawową ochronę sieciową i pozwala włączyć tryb podwyższonego bezpieczeństwa w czasie ataku.
Według cennika Cloudflare plan Pro kosztuje 20 dolarów miesięcznie, czyli około 80 zł w przeliczeniu, i dokłada reguły zapory aplikacyjnej oraz limity żądań, czyli to, co realnie odróżnia bota od klienta. Przy sklepie z ruchem to sensowna inwestycja.
Rozwiązania klasy korporacyjnej kosztują setki i tysiące dolarów miesięcznie i mają sens wtedy, gdy przestój liczy się w dziesiątkach tysięcy złotych na godzinę.
Według ofert popularnych hostingów pakiety za 20-30 zł miesięcznie nie zawierają praktycznie żadnej ochrony przed DDoS, więc przy witrynie zarabiającej warto liczyć koszt ochrony osobno, a nie zakładać, że jest w cenie serwera.
Kiedy to nie jest atak, tylko własny sukces
Nagły skok ruchu po publikacji w mediach, po kampanii albo po wejściu produktu do porównywarki wygląda w statystykach podobnie do ataku. Różnica jest w strukturze: przy prawdziwym ruchu odwiedzający wchodzą na różne podstrony, mają zróżnicowane przeglądarki i zostają dłużej niż ułamek sekundy.
Zanim zablokujesz cokolwiek, sprawdź w statystykach źródła wejść. Zablokowanie ruchu z kampanii, za którą zapłaciłeś, jest kosztowniejsze niż sam przestój.
Jeśli to rzeczywiście skok popularności, rozwiązaniem nie jest filtrowanie, tylko cache i wydajność. Statyczna wersja strony serwowana z pamięci podręcznej wytrzymuje ruch, przy którym dynamiczne generowanie każdej podstrony wykłada serwer. Opisujemy to w poradniku jak przyspieszyć stronę.
Co zrobić po ataku?
Atak się kończy, ale zostawia ślady, które warto uprzątnąć.
Sprawdź, czy w czasie przeciążenia baza danych nie została uszkodzona. Przerwane zapytania potrafią zostawić tabele w stanie wymagającym naprawy.
Zajrzyj do Search Console w raport Statystyki indeksowania. Jeśli Googlebot w czasie ataku dostawał błędy serwera, zobaczysz tam skok odpowiedzi 5xx. Krótka awaria nie szkodzi, kilkudniowa oznacza wypadanie adresów z indeksu.
Na koniec ustaw monitoring dostępności z powiadomieniem. Przy kolejnym ataku liczy się to, czy dowiesz się o nim w pięć minut, czy od klienta następnego dnia.
Jak przygotować się na następny raz
- Stała ochrona przed witryną, nie włączana dopiero w czasie ataku
- Ukryty prawdziwy adres serwera i ruch przyjmowany wyłącznie z sieci filtrującej
- Limity żądań na adresy najbardziej kosztowne: logowanie, wyszukiwarka, koszyk
- Monitoring dostępności z powiadomieniem na telefon
- Kopia zapasowa poza serwerem, bo atak bywa zasłoną dla włamania
Konfigurujemy to w ramach opieki nad stroną WordPress, razem z monitoringiem i kopiami. Jeśli atak trwa teraz, napisz przez formularz na stronie kontakt - reagujemy w ciągu 30 minut, także w nocy.
Korzyści
- Odróżniamy atak od awarii i od zwykłego skoku ruchu, zanim zaczniemy cokolwiek zmieniać
- Filtrowanie ruchu przed witryną, nie wzmacnianie serwera w nieskończoność
- Ukrycie prawdziwego adresu serwera, żeby ochrony nie dało się ominąć
- Reakcja w ciągu 30 minut, także w nocy i w weekend