DDOS to rodzina ataków, które przytłaczają kluczowe systemy w centrum danych, w tym:
- Połączenie sieciowe centrum hostingowego z Internetem
- Sieć wewnętrzna i routery centrum hostingowego
- Twoja zapora i moduły równoważenia obciążenia
- Twoje serwery internetowe, serwery aplikacji i bazy danych.
Zanim zaczniesz budować swoją ochronę przed atakami DDOS, zastanów się, jaka jest najgorsza wartość zagrożona. W przypadku niekrytycznej, bezpłatnej usługi dla małej społeczności, łączna wartość ryzyka może wynosić orzeszki ziemne. W przypadku opłaconego, publicznego systemu o znaczeniu krytycznym dla firmy o ugruntowanej pozycji, wartej wiele miliardów dolarów, wartość może być wartością firmy. W tym drugim przypadku nie powinieneś używać StackExchange :) W każdym razie, aby bronić się przed DDOS, potrzebujesz dogłębnej obrony:
- Współpracuj z centrum hostingowym, aby poznać oferowane przez nie usługi, w tym filtrowanie adresów IP i portów na ich połączeniach sieciowych z Internetem i oferowanych przez nich usługach zapory. Jest to krytyczne: wiele witryn jest pobieranych z Internetu przez firmę hostingową, ponieważ firma hostingowa zajmuje się zakłóceniami w całym centrum danych spowodowanymi przez DDOS dla jednego klienta. Ponadto podczas ataku DDOS będziesz bardzo ściśle współpracować z personelem centrum hostingowego, więc poznaj ich numery alarmowe i bądź z nimi w dobrych stosunkach :) Powinni mieć możliwość blokowania całych regionów międzynarodowych, całkowitego blokowania określonych usług lub sieci protokoły i inne środki ochronne o szerokim spektrum lub alternatywnie zezwalaj tylko na adresy IP z białej listy (w zależności od modelu biznesowego)
- Będąc w centrum hostingowym - korzystaj z sieci dostarczania treści, aby rozpowszechniać (głównie statyczne) usługi blisko użytkowników końcowych i ukrywać swoje prawdziwe serwery przed architektami DDOS. Pełna sieć CDN jest zbyt duża, aby system DDOS mógł zająć wszystkie węzły we wszystkich krajach; jeśli DDOS koncentruje się na jednym kraju, przynajmniej inni użytkownicy są nadal w porządku.
Aktualizuj wszystkie swoje systemy i pakiety oprogramowania za pomocą najnowszych poprawek bezpieczeństwa - a mam na myśli je wszystkie:
- Przełączniki zarządzane - tak, te czasami wymagają aktualizacji
- Routery
- Firewalle
- Systemy równoważenia obciążenia
- System operacyjny
- Serwery WWW
- Języki i ich biblioteki
Upewnij się, że masz dobry firewall lub bezpieczeństwa urządzenie skonfigurować i regularnie sprawdzane przez wykwalifikowanego eksperta bezpieczeństwa . Silne reguły firewalla są dobrą obroną przed wieloma prostymi atakami. Przydatna jest również możliwość zarządzania przepustowością dostępną dla każdej otwartej usługi.
Miej dobre narzędzia do monitorowania sieci - pomoże ci to zrozumieć:
- Że jesteś atakowany, a nie po prostu pod dużym obciążeniem
- Skąd pochodzi atak (co może obejmować kraje, z którymi normalnie nie prowadzisz interesów) i
- Czym właściwie jest atak (porty, usługi, protokoły, adresy IP i zawartość pakietów)
Atak może po prostu polegać na intensywnym korzystaniu z legalnych usług witryn internetowych (np. Uderzaniu w „legalne” identyfikatory URI uruchamiające zapytania lub wstawianie / aktualizowanie / usuwanie danych) - tysiące lub miliony żądań pochodzących z dziesiątek do milionów różnych adresów IP doprowadzą witrynę do jej kolana. Alternatywnie, niektóre usługi mogą być tak drogie w obsłudze, że tylko kilka żądań wywołuje DOS - pomyśl o naprawdę drogim raporcie. Potrzebujesz więc dobrego monitorowania tego, co się dzieje na poziomie aplikacji :
- Które usługi zostały wywołane i jakie argumenty / dane są wysyłane (np. Logowanie do aplikacji)
- Którzy użytkownicy wywołują i z jakich adresów IP (tj. Logują się do Twojej aplikacji)
- Jakie zapytania i wstawia / aktualizuje / usuwa DB
- Średnie obciążenie, wykorzystanie procesora, operacje we / wy dysku, ruch sieciowy na wszystkich komputerach (i maszynach wirtualnych) w systemie
- Upewnij się, że wszystkie te informacje są łatwo dostępne i że możesz skorelować dzienniki z różnych komputerów i usług (tj. Upewnij się, że wszystkie komputery są zsynchronizowane w czasie przy użyciu protokołu ntp).
Rozsądne ograniczenia i ograniczenia w Twojej aplikacji . Na przykład możesz:
- Użyj funkcji QoS w module równoważenia obciążenia, aby wysłać wszystkie anonimowe sesje do oddzielnych serwerów aplikacji w klastrze, podczas gdy zalogowani użytkownicy używają innego zestawu. Dzięki temu anonimowe DDoS na poziomie aplikacji zabierają cennych klientów
- Używanie silnej CAPCHA do ochrony anonimowych usług
- Limity czasu sesji
- Ustaw limit sesji lub limit szybkości dla niektórych typów żądań, takich jak raporty. W razie potrzeby upewnij się, że możesz wyłączyć dostęp anonimowy
- Upewnij się, że użytkownik ma ograniczenie liczby jednoczesnych sesji (aby zapobiec milionowi razy włamaniu na konto)
- Mieć różnych użytkowników aplikacji bazodanowej dla różnych usług (np. Wykorzystanie transakcyjne a raportowanie) i korzystać z zarządzania zasobami bazy danych, aby zapobiec przytłaczaniu wszystkich innych żądań przez jeden typ
- Jeśli to możliwe, uczyń te ograniczenia dynamicznymi lub przynajmniej konfigurowalnymi. W ten sposób podczas ataku możesz ustawić agresywne tymczasowe ograniczenia („dławienie” ataku), takie jak tylko jedna sesja na użytkownika i brak dostępu anonimowego. Z pewnością nie jest to dobre dla Twoich klientów, ale o wiele lepsze niż brak jakiejkolwiek usługi.
Wreszcie, napisz dokument dotyczący planu reakcji DOS i poproś o jego wewnętrzną weryfikację przez wszystkie odpowiednie strony: biznes, kierownictwo, zespół programistów, zespół IT i eksperta ds. Bezpieczeństwa. Proces pisania dokumentu sprawi, że Ty i Twój zespół przemyślicie kwestie i pomoże wam przygotować się na najgorsze, które wydarzy się o 3 nad ranem w dzień wolny. Dokument powinien obejmować (między innymi):
- Co jest zagrożone i koszty dla firmy
- Środki podjęte w celu ochrony majątku
- Jak wykryto atak
- Planowana reakcja i procedura eskalacji
- Procesy zapewniające aktualność systemu i tego dokumentu
Tak więc, odkładając na bok, oto kilka konkretnych odpowiedzi:
DDOS są generalnie blokowane na poziomie serwera, prawda?
Niezupełnie - większość najgorszych ataków DDoS to ataki niskopoziomowe (na poziomie pakietów IP) i są obsługiwane przez reguły routingu, zapory ogniowe i urządzenia zabezpieczające opracowane do obsługi ataków DDOS.
Czy istnieje sposób na zablokowanie go na poziomie PHP lub przynajmniej zmniejszenie go?
Niektóre ataki DDOS są wymierzone w samą aplikację, wysyłając prawidłowe identyfikatory URI i żądania HTTP. Gdy liczba żądań rośnie, serwer (y) zaczynają walczyć i nastąpi awaria SLA. W takim przypadku są rzeczy, które możesz zrobić na poziomie PHP:
Monitorowanie na poziomie aplikacji: upewnij się, że każda usługa / strona rejestruje żądania w taki sposób, abyś mógł zobaczyć, co się dzieje (abyś mógł podjąć działania w celu złagodzenia ataku). Jakieś pomysły:
Miej format dziennika, który możesz łatwo załadować do narzędzia dziennika (lub Excela lub podobnego) i przeanalizuj za pomocą narzędzi wiersza poleceń (grep, sed, awk). Pamiętaj, że DDOS wygeneruje miliony wierszy dziennika. Prawdopodobnie będziesz musiał pokroić i uporządkować swoje dzienniki (szczególnie w odniesieniu do URI, czasu, adresu IP i użytkownika), aby dowiedzieć się, co się dzieje, i wygenerować takie dane, jak:
- Jakie identyfikatory URI są używane
- Jakie identyfikatory URI zawodzą z dużą częstotliwością (prawdopodobny wskaźnik określonych identyfikatorów URI atakowanych przez osoby atakujące)
- Którzy użytkownicy uzyskują dostęp do usługi
- Z ilu adresów IP każdy użytkownik uzyskuje dostęp do usługi
- Do jakich identyfikatorów URI mają dostęp anonimowi użytkownicy
- Jakie argumenty są używane dla danej usługi
- Przeprowadź audyt działań określonych użytkowników
Rejestruj adres IP każdego żądania. NIE odwracaj tego DNS - jak na ironię, koszt takiego działania ułatwia atakującym DDoS
- Zarejestruj całą metodę URI i HTTP, np. „GET http://example.com/path/to/service?arg1=ddos ”
- Zarejestruj identyfikator użytkownika, jeśli jest obecny
- Rejestruj ważne argumenty HTTP
Rozsądne limity szybkości: możesz wprowadzić ograniczenia dotyczące liczby żądań, które dany adres IP lub użytkownik może wykonać w danym okresie. Czy legalny klient może wysłać więcej niż 10 żądań na sekundę? Czy anonimowi użytkownicy mogą w ogóle uzyskać dostęp do drogich raportów?
CAPTCHA dla anonimowego dostępu: Zaimplementuj CAPTCHA dla wszystkich anonimowych żądań, aby zweryfikować, czy użytkownik jest osobą, a nie botem DDOS.
Jaki jest najszybszy i najczęstszy sposób na powstrzymanie ataków DDOS?
Najszybciej prawdopodobnie ulegnie szantażowi, chociaż może to być niepożądane.
W przeciwnym razie pierwszą rzeczą, którą musisz zrobić, jest skontaktowanie się z dostawcą hostingu i / lub CDN i podjęcie współpracy z nimi (jeśli nie skontaktowali się z tobą już z pytaniem, co się do cholery dzieje ...). Gdy wystąpi DDOS, prawdopodobnie wpłynie on ubocznie na innych klientów dostawcy usług hostingowych, a dostawca może być pod znaczną presją, aby zamknąć Twoją witrynę tylko po to, aby chronić swoje zasoby. Przygotuj się do udostępniania swoich dzienników (wszelkich informacji) dostawcy; dzienniki te, w połączeniu z monitorami sieci, mogą razem dostarczać informacji wystarczających do zablokowania / złagodzenia ataku.
Jeśli spodziewasz się DDOS, bardzo dobrym pomysłem jest zakwalifikowanie dostawcy usług hostingowych pod kątem poziomu ochrony, jaki może zapewnić. Powinni mieć doświadczenie w DDOS i narzędzia do jego łagodzenia - rozumieć ich narzędzia, procesy i procedury eskalacji. Zapytaj również, jakie wsparcie ma dostawca hostingu od swoich dostawców nadrzędnych. Usługi te mogą oznaczać większe koszty z góry lub miesięcznie, ale należy to traktować jako polisę ubezpieczeniową.
Podczas ataku będziesz musiał złapać swoje kłody i wydobyć je - spróbuj wypracować schemat ataku. Należy rozważyć wyłączenie anonimowego dostępu i dławienie atakowanych usług (tj. Zmniejszenie limitu szybkości aplikacji dla usługi).
Jeśli masz szczęście i masz małą, stałą bazę klientów, możesz być w stanie określić prawidłowe adresy IP klientów. W takim przypadku możesz na chwilę przełączyć się na podejście oparte na białej liście. Upewnij się, że wszyscy Twoi klienci wiedzą, że to się dzieje, aby mogli zadzwonić, jeśli chcą uzyskać dostęp z nowego adresu IP :)
Doug McClean ma świetne rady pod adresem : https://stackoverflow.com/a/1029613/1395668