Jak mogę zapobiec atakowi DDOS na Amazon EC2?

46

Jeden z serwerów, z których korzystam, jest hostowany w chmurze Amazon EC2. Co kilka miesięcy wydaje się, że mamy atak DDOS na tego serwera. To niesamowicie spowalnia serwer. Po około 30 minutach, a czasem później ponownym uruchomieniu, wszystko wraca do normy.

Amazon ma grupy zabezpieczeń i zaporę ogniową, ale co jeszcze powinienem mieć na serwerze EC2, aby złagodzić atak lub go zapobiec?

Z podobnych pytań nauczyłem się:

  • Ogranicz szybkość żądań / minutę (lub sekund) od określonego adresu IP za pomocą czegoś takiego jak tabele IP (a może UFW?)
  • Posiadaj wystarczające zasoby, aby przetrwać taki atak - lub -
  • Prawdopodobnie zbuduj aplikację internetową, aby była elastyczna / miała elastyczny moduł równoważenia obciążenia i mogła szybko skalować w celu spełnienia tak dużego zapotrzebowania)
  • Jeśli używasz mySql, skonfiguruj połączenia mySql, aby działały sekwencyjnie, aby wolne zapytania nie powodowały awarii systemu

Czego jeszcze mi brakuje? Chciałbym uzyskać informacje o konkretnych narzędziach i opcjach konfiguracji (ponownie, używając Linuxa tutaj) i / lub cokolwiek, co jest specyficzne dla Amazon EC2.

ps: Uwagi na temat monitorowania DDOS również byłyby mile widziane - może z nagios? ;)

cwd
źródło
Zapobieganie jest prawie niemożliwe, ale z pewnością możesz zmniejszyć swoją podatność.
Belmin Fernandez,
1
Bardzo prawdziwe. I byłbym zadowolony z odpowiedzi, które omawiają zmniejszanie się podatności :)
cwd
Aby wiedzieć, jak temu zapobiec, trzeba wiedzieć więcej o naturze ataku. Czy to była powódź synowska? Czy została uderzona strona internetowa, która była droga? czy to była jakaś inna usługa?
gulasz
Myślę, że to była strona internetowa, ale nie jestem pewien. Z zadowoleniem przyjmuję również wskazówki dotyczące monitorowania i badania tych. Niektóre dzienniki dostępu zostały już usunięte - czego jeszcze powinienem szukać?
cwd
a właściwie, jeśli ponowne uruchomienie rozwiązuje problem, to nie wiem, co to może być, z wyjątkiem tego, że twój serwer gdzieś ma wyciek zasobów. Ponowne uruchomienie z pewnością nie może samodzielnie powstrzymać DDoS. Skąd wiesz, że to w ogóle DDoS?
gulasz

Odpowiedzi:

36

DDOS (lub nawet DOS) w swej istocie jest wyczerpaniem zasobów. Nigdy nie będziesz w stanie wyeliminować wąskich gardeł, ponieważ możesz je tylko odepchnąć dalej.

Na AWS masz szczęście, ponieważ element sieci jest bardzo silny - byłoby bardzo zaskakujące, gdyby dowiedzieć się, że łącze upstream było nasycone. Jednak zarówno procesor, jak i dyski we / wy są znacznie łatwiejsze do zalania.

Najlepszym rozwiązaniem byłoby rozpoczęcie monitorowania (lokalne, takie jak SAR, zdalne z Nagios i / lub ScoutApp) oraz niektóre narzędzia zdalnego logowania (Syslog-ng). Dzięki takiej konfiguracji będziesz w stanie określić, które zasoby zostaną nasycone (gniazdo sieciowe z powodu zalania Syn; procesor z powodu złych zapytań SQL lub przeszukiwaczy; ram z powodu ...). Nie zapomnij mieć partycji dziennika (jeśli nie masz włączonego zdalnego rejestrowania) na woluminach EBS (aby później przestudiować dzienniki).

Jeśli atak przejdzie przez strony internetowe, dziennik dostępu (lub odpowiednik) może być bardzo przydatny.

CloudWeavers
źródło
Możesz sprawdzić sekcję „oparte na obciążeniu” serverfault.com/a/531942/87017
Pacerier,
24

Możesz także dodatkowo izolować instancje EC2, umieszczając je za modułem równoważenia obciążenia elastycznego i akceptując tylko ruch z instancji ELB. To kładzie większy nacisk na Amazon na zarządzanie atakami DDOS.

Zakładam, że nadal będziesz mieć SSH otwarte dla wszystkich, więc prawdopodobnie zobaczysz trochę nieuczciwego ruchu, chyba że możesz zablokować ten port do niektórych statycznych adresów IP. Możesz zmienić port SSHd na coś bardziej niejasnego (tj. Coś innego niż 22), aby dodatkowo zmniejszyć liczbę trafień DDOS (większość botów sprawdza tylko znane porty).

Wspomnę również o fail2ban, który może monitorować dzienniki i tymczasowo modyfikować tabele IP, aby blokować określone adresy IP (na przykład, jeśli wykonano 6 nieudanych prób SSH do twojego hosta z jednego adresu IP, może zablokować ten adres IP przez 30 kilka minut). Należy pamiętać, że (jak to skomentował Jordan) fail2ban prawdopodobnie nie jest odpowiedni do blokowania ruchu proxy (np. Z ELB), ponieważ blokuje adres IP serwera proxy, niekoniecznie pierwotny zdalny adres IP.

Nie korzystałem z niego, ale warto też zbadać mod_evasive Apache; może jednak mieć tę samą słabość co fail2ban, jeśli chodzi o blokowanie oparte na IP.

jstell
źródło
+1 dziękuję. faktycznie miałem ssh zamknięty;)
cwd
1
Zauważ, że jeśli jesteś za ELB, fail2ban nie będzie działał - ponieważ zazwyczaj działa poprzez blokowanie adresu IP w iptables. Ale adres IP zawsze będzie adresem twojego ELB. Uświadomiłem sobie, że po próbie dodania fail2ban do mojej konfiguracji. Nie działa, jeśli użytkownik uzyskuje dostęp tylko przez ELB.
Jordan Reiter
5

Jeśli używasz Apache, sugeruję użycie mod_security . Zestaw podstawowych zasad zapakowany przez większość dostawców wykonuje fantastyczną robotę.

Kolejnym etapem hartowania jest ograniczenie żądań na poziomie serwera WWW. Nginx ., Apache może dławić i ograniczać przychodzące żądania.

Shyam Sundar CS
źródło
super - dzięki temu wyglądają jak fantastyczne opcje!
cwd
2

Rozwiązaniem, którego używam do blokowania złej aktywności adresów IP wychodzących z AWS i innych jest to ... W mojej Zaporze CSF w konfiguracji list blokujących LFD używam listy znalezionej tutaj - http://myip.ms/browse/blacklist/ Blacklist_IP_Blacklist_IP_Addresses_Live_Database_Real-time

Pobierz Czarną listę dla Zapory CSF » http://myip.ms/files/blacklist/csf/latest_blacklist.txt

Nigdy więcej skandalicznie wstrętnego ruchu AWS.

UlyssesGrump
źródło
1
To nie odpowiada na pytanie.
kasperd
2

Jestem stronniczy, ponieważ pracuję w sieci dostarczania treści jako inżynier ds. Bezpieczeństwa w przedsprzedaży.

Jednak zastosowanie rozwiązania łagodzącego Ddos w sieci dostarczania treści gwarantuje, że nigdy nie zabraknie zasobów u źródła. Jest to podobne do umieszczania modułu równoważenia obciążenia F5 przed witryną, ale obejmuje tysiące lokalizacji na całym świecie.

Dobry cdn pozwoli ci zamaskować pochodzenie białą listą, którą zainstalujesz na zaporze aws. Kiedy atakujący przeprowadzą rozpoznanie na Amazon, Twój adres IP stanie się pusty, ponieważ wszystko zostanie zablokowane.

Dlatego ataki Ddos są blokowane, gdy ruch trafia do węzła tak blisko atakującego, jak to możliwe. Zapewnia to złagodzenie ataków Ddos tak daleko od zasobu, który próbujesz chronić.

Dobry cdn może również przeprowadzać kontrole kondycji i przełączanie awaryjne do innych lokalizacji, np. Inne ego włączone w dupę, platformę Azure, miejsce w szafie, miękką warstwę, fizyczny komputer stacjonarny itp. Powinien również mieć WAF, aby zapewnić blokowanie ataków wyczerpania warstwy aplikacji, takich jak RUDY, slowpost, slowloris, a także sqli, xss, rfi, lfi itp.

Domyślnie cdn blokuje również ataki warstwy sieci, takie jak teardrop, ataki icmp, synfloods itp. CDn jest w stanie złagodzić ataki Ddos, ponieważ trey mają ogromną pojemność do przyjmowania żądań, filtrowania złego ruchu i przekazywania dobrego ruchu. Tak więc ataki wolumetryczne typu ntp, DNS, ssdp, chargeen i snmp mogą być blokowane.

Największy atak, jaki do tej pory widziałem, to 321 gb / s w lipcu 2014 r. Podczas tego ataku nastąpił także atak protokołu DNS przy 20 gb / s. Musisz więc upewnić się, że infrastruktura DNS jest również odporna na wiele żądań.

Z podanego opisu wygląda na to, że zostałeś poddany atakowi wyczerpania, w którym atakujący otworzył wiele wątków, tak że wszystkie wątki zostały zużyte na serwerze WWW, serwerze aplikacji lub zaporze. Jest podobny do czegoś takiego jak slowpost, slowloris lub RUDY.

Aby zapobiec atakom polegającym na wyczerpaniu warstwy aplikacji, musisz uzyskać zaporę sieciową (WAF). Typowa zapora sieciowa (w tym zapora amazonów i zapory nowej generacji) nie będzie w stanie jej zablokować. Wysłane zapory robocze w tych dniach mogą blokować tylko około 30% wszystkich ataków w tych dniach (listopad 2014).

James
źródło
1

Oto narzędzie, które stworzyłem dla tych, którzy chcą korzystać z Fail2Ban na aws z apache, ELB i ACL: https://github.com/anthonymartin/aws-acl-fail2ban

Jest to przydatne do wykrywania i zapobiegania atakom DoS i nadużyciom instancji ec2.

Anthony Martin
źródło
0

Zapora serwera konfiguracji jest najlepsza, jaką widziałem w łagodzeniu DDoS w programowych maszynach wirtualnych w EC2. Połączenie funkcji syslog może zabezpieczyć ją przed środowiskiem z równoważeniem obciążenia.

http://configserver.com/cp/csf.html

Jeff
źródło
Witaj w Server Fault! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Scott Pack,