Jestem pod DDoS. Co mogę zrobić?

179

To jest pytanie kanoniczne dotyczące ograniczania DoS i DDoS.

Znalazłem ogromny wzrost ruchu na stronie, którą dziś hostuję; Otrzymuję tysiące połączeń na sekundę i widzę, że używam wszystkich 100 Mb / s mojej dostępnej przepustowości. Nikt nie może uzyskać dostępu do mojej witryny, ponieważ upłynęły limity czasu wszystkich żądań, a ja nie mogę nawet zalogować się na serwerze, ponieważ upłynął limit czasu SSH! Zdarzyło się to kilka razy wcześniej i za każdym razem trwało to kilka godzin i samo zniknęło.

Czasami na mojej stronie internetowej występuje inny wyraźny, ale powiązany problem: średnie obciążenie mojego serwera (zwykle około .25) rośnie do 20 lub więcej i nikt nie może uzyskać dostępu do mojej witryny tak samo jak w innym przypadku. Znika również po kilku godzinach.

Ponowne uruchomienie mojego serwera nie pomaga; co mogę zrobić, aby moja strona była ponownie dostępna i co się dzieje?

Podobnie, raz odkryłem, że przez dzień lub dwa, za każdym razem, gdy zaczynałem usługę, otrzymywało połączenie z określonego adresu IP, a następnie ulegało awarii. Gdy tylko ponownie go uruchomiłem, stało się to ponownie i znowu się zawiesił. Jak to jest podobne i co mogę z tym zrobić?

Falcon Momot
źródło
Zobacz także security.stackexchange.com/a/792/2379
Pacerier

Odpowiedzi:

191

Występuje atak typu „odmowa usługi”. Jeśli widzisz ruch przychodzący z wielu sieci (różne adresy IP w różnych podsieciach), masz rozproszoną odmowę usługi (DDoS); jeśli wszystko pochodzi z tego samego miejsca, masz zwykły stary DoS. Pomocne może być sprawdzenie, czy możesz; użyj netstat do sprawdzenia. Jednak może to być trudne.

Odmowa usługi zwykle dzieli się na kilka kategorii: na podstawie ruchu i obciążenia. Ostatni element (z usługą awarii) to DoS oparty na exploitach i jest zupełnie inny.

Jeśli próbujesz ustalić, jaki typ ataku ma miejsce, możesz chcieć przechwycić pewien ruch (za pomocą wireshark, tcpdump lub libpcap). Powinieneś, jeśli to możliwe, ale także pamiętać, że prawdopodobnie będziesz w stanie przechwycić całkiem duży ruch.

Jak często nie będą one pochodzić z botnetów (sieci zainfekowanych hostów pod centralną kontrolą jakiegoś atakującego, którego licytacja zrobią). Jest to dobry sposób, aby atakujący (bardzo tanio) uzyskał przepustowość wielu różnych hostów w różnych sieciach, aby cię zaatakować, jednocześnie pokrywając swoje ślady. Niskiej orbicie jonowego jest przykładem botnetem (mimo dobrowolne zamiast złośliwe-pochodnych); Zeus jest bardziej typowy.

Na podstawie ruchu

Jeśli korzystasz z DoS opartego na ruchu, okazuje się, że do twojego serwera dociera tyle ruchu , że jego połączenie z Internetem jest całkowicie nasycone. Podczas pingowania serwera z innego miejsca występuje wysoki wskaźnik utraty pakietów, a czasami (w zależności od używanych metod routingu) czasami widać naprawdę duże opóźnienia (ping jest wysoki). Ten rodzaj ataku jest zwykle DDoS.

Chociaż jest to naprawdę „głośny” atak i jest oczywiste, co się dzieje, administratorowi serwera jest trudne do złagodzenia (i zasadniczo niemożliwe jest złagodzenie przez użytkownika hostingu współdzielonego). Będziesz potrzebować pomocy od swojego dostawcy usług internetowych; daj im znać, że korzystasz z DDoS, a oni mogą pomóc.

Jednak większość dostawców usług internetowych i dostawców usług tranzytowych aktywnie zdaje sobie sprawę z tego, co się dzieje i publikuje trasę blackhole dla Twojego serwera. Oznacza to, że publikują trasę do twojego serwera przy możliwie jak 0.0.0.0najniższych kosztach, poprzez : sprawiają, że ruch do twojego serwera nie jest już możliwy do trasowania w Internecie. Te trasy to zazwyczaj / 32s i ostatecznie są usuwane. To wcale ci nie pomaga; celem jest ochrona sieci dostawcy usług internetowych przed potopem. W tym czasie serwer skutecznie utraci dostęp do Internetu.

Jedynym sposobem, w jaki Twój dostawca usług internetowych (lub ty, jeśli masz własny AS) będzie w stanie Ci pomóc, będzie korzystał z inteligentnych mechanizmów kształtowania ruchu, które mogą wykrywać i ograniczać prawdopodobny ruch DDoS. Nie każdy ma tę technologię. Jeśli jednak ruch pochodzi z jednej lub dwóch sieci lub jednego hosta, mogą być w stanie zablokować ruch przed tobą.

Krótko mówiąc, niewiele można zrobić z tym problemem. Najlepszym długoterminowym rozwiązaniem jest hostowanie twoich usług w wielu różnych lokalizacjach w Internecie, które musiałyby być DDoSed indywidualnie i jednocześnie, co czyni DDoS znacznie droższym. Strategie tego zależą od usługi, którą musisz chronić; DNS można chronić za pomocą wielu autorytatywnych serwerów nazw, SMTP z zapasowymi rekordami MX i wymiennikami poczty oraz HTTP za pomocą round-robin DNS lub multihoming (ale i tak może wystąpić zauważalna degradacja na czas trwania).

Usługi równoważenia obciążenia rzadko stanowią skuteczne rozwiązanie tego problemu, ponieważ sam moduł równoważenia obciążenia jest narażony na ten sam problem i po prostu tworzy wąskie gardło. IPTables lub inne reguły zapory nie pomogą, ponieważ problem polega na tym, że rura jest nasycona. Gdy zapora rozpozna połączenia, jest już za późno ; przepustowość Twojej witryny została zużyta. Nie ma znaczenia, co robisz z połączeniami; atak zostaje złagodzony lub zakończony, gdy ilość ruchu przychodzącego wróci do normy.

Jeśli możesz to zrobić, rozważ użycie sieci dystrybucji treści (CDN), takiej jak Akamai, Limelight i CDN77, lub skorzystaj z usługi czyszczenia DDoS, takiej jak CloudFlare lub Prolexic. Usługi te podejmują aktywne działania w celu złagodzenia tego rodzaju ataków, a także mają tak dużą dostępną przepustowość w tak wielu różnych miejscach, że ich zalanie nie jest ogólnie możliwe.

Jeśli zdecydujesz się użyć CloudFlare (lub innego CDN / proxy), pamiętaj, aby ukryć adres IP swojego serwera. Jeśli atakujący dowie się o adresie IP, może ponownie wykonać DDoS bezpośrednio na serwerze, omijając CloudFlare. Aby ukryć adres IP, twój serwer nigdy nie powinien komunikować się bezpośrednio z innymi serwerami / użytkownikami, chyba że są bezpieczne. Na przykład twój serwer nie powinien wysyłać wiadomości e-mail bezpośrednio do użytkowników. Nie dotyczy to sytuacji, gdy hostujesz całą swoją zawartość w sieci CDN i nie masz własnego serwera.

Ponadto niektórzy dostawcy VPS i dostawcy hostingu lepiej łagodzą te ataki niż inni. Ogólnie rzecz biorąc, im większe, tym lepiej będą w tym; dostawca, który jest bardzo dobrze sprawdzony i ma dużą przepustowość, będzie naturalnie bardziej odporny, a ten z aktywnym iw pełni obsadzonym zespołem operacyjnym sieci będzie mógł szybciej reagować.

Na podstawie obciążenia

Gdy doświadczasz DDoS opartego na obciążeniu, zauważasz, że średnie obciążenie jest nienormalnie wysokie (lub użycie procesora, pamięci RAM lub dysku, w zależności od platformy i specyfiki). Chociaż wydaje się, że serwer nie robi nic użytecznego, jest bardzo zajęty. Często w dziennikach będzie mnóstwo wpisów wskazujących na nietypowe warunki. Najczęściej pochodzi to z wielu różnych miejsc i jest DDoS, ale niekoniecznie tak jest. Nie musi być nawet wielu różnych gospodarzy .

Ten atak polega na zmuszeniu twojej usługi do wykonywania wielu kosztownych rzeczy. Może to być coś takiego jak otwarcie ogromnej liczby połączeń TCP i zmuszenie do utrzymania stanu dla nich, lub przesłanie zbyt dużych lub licznych plików do usługi, lub może wykonanie naprawdę drogich wyszukiwań lub naprawdę zrobienie wszystkiego, co jest drogie w obsłudze. Ruch mieści się w granicach planowanych i może zostać przyjęty, ale typy wysyłanych żądań są zbyt drogie, aby obsłużyć tak wiele .

Po pierwsze, że ten rodzaj ataku jest możliwy, często wskazuje na problem z konfiguracją lub błądw twoich usługach. Na przykład może być włączone zbyt szczegółowe rejestrowanie i może być zapisywane dzienniki na czymś, na co bardzo wolno pisać. Jeśli ktoś zda sobie z tego sprawę i zrobi wiele rzeczy, które powodują zapisanie dużej ilości dzienników na dysku, serwer zwolni do indeksowania. Twoje oprogramowanie może również robić coś wyjątkowo nieefektywnego w niektórych przypadkach wejściowych; przyczyny są tak liczne, jak istnieją programy, ale dwa przykłady to sytuacja, w której usługa nie zamyka sesji, która w innym przypadku została zakończona, oraz sytuacja, która powoduje, że spawnuje proces potomny i opuszcza go. Jeśli skończysz z dziesiątkami tysięcy otwartych połączeń ze stanem do śledzenia lub dziesiątkami tysięcy procesów potomnych, wpadniesz w kłopoty.

Pierwszą rzeczą, jaką możesz zrobić, jest użycie zapory ogniowej w celu zmniejszenia ruchu . Nie zawsze jest to możliwe, ale jeśli w ruchu przychodzącym można znaleźć jakąś cechę (tcpdump może być do tego przydatny, jeśli ruch jest niewielki), możesz upuścić go na zaporze ogniowej i nie będzie już powodować problemów. Inną rzeczą do zrobienia jest usunięcie błędu w swoim serwisie (skontaktuj się ze sprzedawcą i przygotuj się na długą obsługę).

Jednak, jeśli jest to kwestia konfiguracji, zacznij tutaj . Wyłącz rejestrowanie w systemach produkcyjnych do rozsądnego poziomu (w zależności od programu jest to zazwyczaj ustawienie domyślne i zwykle wymaga upewnienia się, że poziomy rejestrowania „debugowania” i „pełnego” są wyłączone; jeśli wszystko, co robi użytkownik, jest logowane dokładnie i drobne szczegóły, twoje logowanie jest zbyt szczegółowe). Dodatkowo sprawdź limity procesów potomnych i żądań , ewentualnie ograniczaj przychodzące żądania, połączenia na adres IP oraz liczbę dozwolonych procesów potomnych, zależnie od przypadku.

Oczywiste jest, że im lepiej skonfigurowany i lepiej zabezpieczony serwer, tym trudniejszy będzie ten rodzaj ataku. Unikaj skąpstwa, szczególnie w przypadku pamięci RAM i procesora. Upewnij się, że Twoje połączenia z takimi bazami danych jak baza danych i pamięć dyskowa są szybkie i niezawodne.

Oparte na wykorzystaniu

Jeśli Twoja usługa w tajemniczy sposób ulega awarii bardzo szybko po uruchomieniu, szczególnie jeśli możesz ustalić wzorzec żądań poprzedzających awarię, a żądanie jest nietypowe lub nie odpowiada oczekiwanym wzorcom użytkowania, możesz mieć do czynienia z DoS opartą na exploitach. Może to pochodzić z zaledwie jednego hosta (z praktycznie dowolnym rodzajem połączenia internetowego) lub wielu hostów.

Pod wieloma względami jest to podobne do DoS opartego na obciążeniu i ma w zasadzie te same przyczyny i ograniczenia. Różnica polega tylko na tym, że w tym przypadku błąd nie powoduje marnotrawstwa serwera, ale śmierć. Osoba atakująca zwykle wykorzystuje lukę w zabezpieczeniach umożliwiającą zdalną awarię, taką jak zniekształcone dane wejściowe, które powodują zerowe odwołanie lub coś w Twojej usłudze.

Traktuj to podobnie jak nieautoryzowany atak dostępu zdalnego. Zapora sieciowa przeciwko hostom źródłowym i typowi ruchu, jeśli można je zablokować. W razie potrzeby użyj sprawdzania poprawności odwrotnych serwerów proxy . Zbierz dowody sądowe (spróbuj uchwycić część ruchu), złóż zgłoszenie o błędzie u sprzedawcy i rozważ złożenie skargi dotyczącej nadużycia (lub skargi prawnej) również na pochodzenie.

Ataki te są dość tanie w montażu, jeśli można znaleźć exploita, i mogą być bardzo silne, ale także stosunkowo łatwe do wyśledzenia i zatrzymania. Jednak techniki przydatne w przypadku DDoS opartego na ruchu są generalnie bezużyteczne w przypadku DoS opartego na wykorzystaniu.

Falcon Momot
źródło
1
Co do twojego ostatniego akapitu, a co jeśli otrzymasz D DoS oparty na exploitach ? Jak możesz go wyśledzić i zatrzymać?
Pacerier
8

Jeśli jesteś przedsiębiorstwem, masz wiele opcji. Jeśli jesteś małym facetem, takim jak ja, wynajmując VPS lub serwer dedykowany do obsługi małej witryny, koszty mogą szybko stać się wygórowane.

Z mojego doświadczenia wierzę, że większość oddanych i dostawców VPS nie skonfiguruje specjalnych reguł zapory tylko dla twojego serwera. Ale obecnie masz kilka opcji.

CDN

Jeśli korzystasz z serwera internetowego, rozważ umieszczenie go za CDN, takim jak CloudFlare lub Amazon CloudFront.

Sieci CDN są drogie. Aby kontrolować koszty, podawaj duże pliki (duże obrazy, audio, wideo) bezpośrednio z serwera zamiast z CDN. Może to jednak narazić adres IP twojego serwera na ataki.

Prywatna chmura

Prywatne chmury są zwykle drogimi rozwiązaniami dla przedsiębiorstw, ale konfiguracja Amazon VPC kosztuje prawie nic. Jednak ogólnie przepustowość Amazon jest droga. Jeśli możesz sobie na to pozwolić, możesz skonfigurować Grupę zabezpieczeń i ACL sieci Amazon VPC, aby blokować ruch, zanim dotrze on do Twojej instancji. Powinieneś zablokować wszystkie porty oprócz portu serwera TCP.

Zauważ, że osoba atakująca może nadal atakować port serwera TCP. Jeśli jest to serwer WWW, rozważ użycie czegoś takiego jak nginx, który używa nieblokującego We / Wy i może obsłużyć dużą liczbę połączeń. Poza tym nie można wiele zrobić poza zapewnieniem uruchomienia najnowszej wersji oprogramowania serwera.

Gdy twój port TCP zostanie zaatakowany i wszystkie inne zawiodą

Jest to opracowane przeze mnie rozwiązanie, które dotyczy serwerów innych niż sieciowe, które nie mogą się schować za CDN, takich jak WebSocket, serwery treści multimedialnych / serwery strumieniowe. CloudFlare obsługuje WebSocket, ale obecnie tylko dla przedsiębiorstw.

Celem jest zmiana portu nasłuchiwania TCP na tyle szybko, aby botnet nie nadążał, powiedzmy co 10 sekund. Odbywa się to za pomocą prostego programu proxy, który wykonuje roaming portów. Sekwencja portów jest pseudolosowa, ale musi być oparta na czasie serwera. Algorytm obliczania czasu i portu serwera musi być ukryty w javascript / kodzie flash klienta. Program powinien również zmodyfikować zaporę, ponieważ zmienia port nasłuchiwania, a zapora musi być stanowa. Jeśli ktoś jest zainteresowany, prześlę mój skrypt node.js, który współpracuje z Amazon, do GitHub.

Hai Phan
źródło
4

Zmień domenę, aby przejść do czarnej dziury, takiej jak 0.0.0.0, na krótki okres.

Porozmawiaj ze swoim serwerem i sprawdź, czy może on dać ci inny adres IP jako tymczasowy sposób na dostęp do serwera lub sprawdź, czy serwer ma zdalny dostęp do konsoli (tak jakbyś siedział przed nim). Stąd możesz sprawdzić, czy jest to pojedynczy adres IP i zablokować go z witryny lub ataku rozproszonego.

John Fox
źródło
3
Taka zmiana DNS może przynieść więcej szkody niż pożytku. Na początku zmniejszyłem TTL rekordu A, ale pozostawiłem adres IP bez zmian - dopóki nie będę miał nowego adresu IP, na który mógłbym go wskazać.
kasperd
1

Gdy jesteś pod atakiem DDoS, twój dostawca usług internetowych może ci najbardziej pomóc, ale jeśli nie mają ochrony przed DDoS, jest bardzo prawdopodobne, że będziesz nieczynny do momentu zatrzymania ataku. Zwykle widzą zaatakowany adres IP i zerują sieć na swoim routerze nadrzędnym. Jeśli nie masz dużego ruchu, istnieje wiele usług online do ochrony DDoS, w których ruch jest przekierowywany, filtrowany i wysyłany z powrotem na serwer.

Damjan Nikołowski
źródło
-1

Wcześniej mieliśmy podobną sytuację. Poniżej znajduje się to, co zrobiliśmy.

Najpierw podłącz kabel sieciowy z serwera. Teraz sprawdź, czy usługi serwera wróciły do ​​normalnego działania, patrząc na monitor wydajności i menedżera zadań. Jeśli nie, przeskanuj swój serwer za pomocą oprogramowania malwarebytes, aby upewnić się, że serwer został wyczyszczony. Ten krok zazwyczaj zapewnia powrót odłączonego serwera do normy.

Następnie, czy masz zaporę ogniową? Jeśli tak, czy odnowiłeś subskrypcję? Upewnij się, że włączono funkcję wtargnięcia IPS w zaporze. Właśnie odnowienie subskrypcji zapory rozwiązało nasz atak DDOS.

Dowiedzieliśmy się, że powinniśmy odnowić subskrypcję zabezpieczeń (np. Firwall lub antywirus) i nie potraktować jej pochopnie. Atak DDOS ma miejsce codziennie i może się zdarzyć także małym firmom. Mam nadzieję że to pomoże.

entrycare
źródło