Wie kann ich einen DDOS-Angriff auf Amazon EC2 verhindern?


46

Einer der von mir verwendeten Server wird in der Amazon EC2-Cloud gehostet. Alle paar Monate scheint es einen DDOS-Angriff auf diesen Server zu geben. Dies verlangsamt den Server unglaublich. Nach ungefähr 30 Minuten und manchmal einem Neustart später ist alles wieder normal.

Amazon verfügt über Sicherheitsgruppen und eine Firewall. Aber was sollte ich auf einem EC2-Server noch tun, um einen Angriff abzuschwächen oder zu verhindern?

Aus ähnlichen Fragen habe ich gelernt:

  • Begrenzen Sie die Rate von Anfragen / Minute (oder Sekunden) von einer bestimmten IP-Adresse über so etwas wie IP-Tabellen (oder vielleicht UFW?)
  • Haben Sie genügend Ressourcen, um einen solchen Angriff zu überstehen - oder -
  • Erstellen Sie die Webanwendung möglicherweise so, dass sie elastisch ist / über einen elastischen Lastenausgleich verfügt und schnell skaliert werden kann, um einer so hohen Nachfrage gerecht zu werden.
  • Wenn Sie mySql verwenden, richten Sie mySql-Verbindungen so ein, dass sie nacheinander ausgeführt werden, damit langsame Abfragen das System nicht blockieren

Was fehlt mir noch? Ich würde gerne Informationen über bestimmte Tools und Konfigurationsoptionen (hier wiederum unter Linux) und / oder über alles, was für Amazon EC2 spezifisch ist, erhalten.

ps: Hinweise zur Überwachung von DDOS wären auch zu begrüßen - vielleicht mit Nagios? ;)


Es ist fast unmöglich, dies zu verhindern, aber Sie könnten Ihre Verwundbarkeit auf jeden Fall verringern.
Belmin Fernandez

1
Sehr richtig. Und ich würde mich über Antworten freuen, in denen es um die Verringerung der Verwundbarkeit geht :)
cwd

Um es zu verhindern, müsste man mehr über die Art des Angriffs wissen. War es eine Syn-Flut? Gab es eine teure Webseite, die besucht wurde? War es ein anderer Dienst?
Eintopf

Ich denke, es war eine Webseite, bin mir aber nicht sicher. Ich würde mich auch über Tipps zum Überwachen und Untersuchen freuen. Einige der Zugriffsprotokolle wurden bereits gelöscht. Nach was soll ich sonst suchen?
KWD

und tatsächlich, wenn ein Neustart das Problem behebt, dann weiß ich nicht, woran es liegen könnte, außer vielleicht hat Ihr Server irgendwo ein Ressourcenleck. Ein Neustart kann ein DDoS nicht alleine stoppen. Woher wissen Sie, dass dies überhaupt ein DDoS ist?
Eintopf

Antworten:


36

Ein DDOS (oder sogar ein DOS) ist im Wesentlichen eine Ressourcenerschöpfung. Sie werden nie in der Lage sein, Engpässe zu beseitigen, da Sie sie nur weiter wegschieben können.

Unter AWS haben Sie Glück, weil die Netzwerkkomponente sehr stark ist - es wäre sehr überraschend zu erfahren, dass die Upstream-Verbindung überlastet war. Sowohl die CPU als auch die Festplatten-E / A sind jedoch viel einfacher zu überfluten.

Die beste Vorgehensweise wäre, eine Überwachung (lokal wie SAR, remote mit Nagios und / oder ScoutApp) und einige Remote-Protokollierungsfunktionen (Syslog-ng) zu starten. Mit einem solchen Setup können Sie feststellen, welche Ressourcen ausgelastet sind (Netzwerk-Socket aufgrund von Syn-Flood, CPU aufgrund von schlechten SQL-Abfragen oder Crawlern, RAM aufgrund von ...). Vergessen Sie nicht, Ihre Protokollpartition (wenn Sie die Remote-Protokollierung nicht aktiviert haben) auf einem EBS-Volume zu haben (um die Protokolle später zu untersuchen).

Wenn der Angriff über die Webseiten erfolgt, kann das Zugriffsprotokoll (oder das entsprechende Protokoll) sehr nützlich sein.


Sie können den Abschnitt " lastbasiert
Pacerier

24

Sie können Ihre EC2-Instanzen auch weiter isolieren, indem Sie sie hinter einen Elastic Load Balancer stellen und nur Datenverkehr von der ELB-Instanz akzeptieren. Dies stellt Amazon vor eine größere Aufgabe, DDOS-Angriffe zu verwalten.

Ich gehe davon aus, dass SSH weiterhin für alle offen ist, sodass wahrscheinlich immer noch unerwünschter Datenverkehr auftaucht, es sei denn, Sie können diesen Port auf statische IP-Adressen beschränken. Sie können den SSHd-Port in etwas Dunkleres (dh etwas anderes als 22) ändern, um die DDOS-Treffer weiter zu reduzieren (die meisten Bots überprüfen nur bekannte Ports).

Ich erwähne auch fail2ban, mit dem Sie Protokolle überwachen und Ihre IP-Tabellen vorübergehend ändern können, um bestimmte IP-Adressen zu blockieren. Wenn beispielsweise 6 Versuche fehlgeschlagen sind, SSH von einer einzelnen IP-Adresse auf Ihren Host zu übertragen, kann diese IP für 30 blockiert werden Minuten oder so). Denken Sie daran, dass fail2ban (wie Jordan scharfsinnig kommentiert) wahrscheinlich nicht zum Blockieren von Proxy-Verkehr (z. B. von einem ELB) geeignet ist, da es die IP des Proxy blockiert, nicht unbedingt die ursprüngliche Remote-IP.

Ich habe es nicht benutzt, aber Apache mod_evasive ist möglicherweise auch eine Untersuchung wert. es hat jedoch möglicherweise die gleiche Schwäche wie fail2ban, wenn es um IP-basiertes Blockieren geht.


+1 Danke. eigentlich hatte ich ssh geschlossen;)
cwd

1
Beachten Sie, dass fail2ban nicht funktioniert, wenn Sie sich hinter einem ELB befinden. In der Regel blockiert es eine IP-Adresse in iptables. Aber die IP wird immer die Ihrer ELB sein. Nachdem ich versucht hatte, fail2ban zu meinem Setup hinzuzufügen, wurde mir das klar. Es funktioniert nicht, wenn der Benutzer nur über die ELB zugreift.
Jordan Reiter

5

Wenn Sie Apache verwenden, empfehle ich die Verwendung von mod_security . Die Kernregeln, die von den meisten Anbietern bereitgestellt werden, leisten fantastische Arbeit.

Ein weiterer Härtungsschritt ist das Begrenzen der Anforderungen auf Webserverebene. Nginx ., Apache kann eingehende Anfragen drosseln und begrenzen.


Super - das sieht nach fantastischen Optionen aus, danke!
KWD

2

Die Lösung , die ich Verwendung für Echtzeit schlechte Aktivität blockiert IP-Adressen von AWS Coming Out und anderen ist dies ... In meinem CSF - Firewall in der Config für LFD Blocklist Ich verwende eine Liste hier - http://myip.ms/browse/blacklist/ Blacklist_IP_Blacklist_IP_Addresses_Live_Database_Real-Time

Laden Sie die Blacklist für die CSF-Firewall herunter » http://myip.ms/files/blacklist/csf/latest_blacklist.txt

Schluss mit unverschämt unerträglichem AWS-Verkehr.


1
Dies beantwortet die Frage nicht.
Kasperd

2

Ich bin voreingenommen, weil ich als Sicherheitstechniker im Vorverkauf für ein Content Delivery-Netzwerk arbeite.

Durch die Nutzung einer Ddos-Lösung zur Schadensbegrenzung in einem Content-Delivery-Netzwerk wird jedoch sichergestellt, dass Ihnen am Ursprung nie die Ressourcen ausgehen. Es ähnelt dem Platzieren eines F5-Lastenausgleichs vor Ihrer Site, ist jedoch auf Tausende von Standorten auf der ganzen Welt verteilt.

Mit einer guten CD können Sie den Ursprung mit einer Whitelist verschleiern, die Sie auf der aws-Firewall installieren. Wenn Angreifer ihre Erkundung bei Amazon durchführen, wird Ihre IP-Adresse leer, da alles blockiert wird.

Daher werden die Ddos-Angriffe blockiert, wenn der Datenverkehr einen Knoten erreicht, der dem Angreifer so nah wie möglich ist. Dies stellt sicher, dass Sie Ddos-Angriffe so weit wie möglich von dem zu schützenden Asset abwehren.

Ein guter CDN kann auch Integritätsprüfungen und Failover-Verkehr zu anderen Orten durchführen, z. B. zu einem anderen Ego in Ass, Azure, Rack Space, Soft Layer, einem physischen DC usw. Er sollte auch eine WAF haben, um sicherzustellen, dass Sie Erschöpfungsangriffe auf Anwendungsebene wie blockieren können RUDY, slowpost, slowloris sowie sqli, xss, rfi, lfi etc.

Standardmäßig blockiert der cdn auch Netzwerk-Layer-Angriffe wie Teardrop, ICMP-Angriffe, Synfloods usw. Ein cdn kann Ddos-Angriffe abschwächen, da er über eine enorme Kapazität verfügt, um Anfragen anzunehmen, schlechten Datenverkehr herauszufiltern und den guten Datenverkehr weiterzuleiten. So können verstärkende Angriffe wie NTP-, DNS-, SSDP-, Chargen- und SNMP-volumetrische Angriffe blockiert werden.

Der größte Angriff, den ich bisher gesehen habe, war im Juli 2014 mit 321 Gbit / s. Bei diesem Angriff gab es auch einen DNS-Protokoll-Angriff mit 20 Gbit / s. Sie müssen also sicherstellen, dass Ihre DNS-Infrastruktur auch für eine Vielzahl von Anforderungen geeignet ist.

Aus der von Ihnen angegebenen Beschreibung geht hervor, dass Sie einem Erschöpfungsangriff ausgesetzt waren, bei dem der Angreifer viele Threads geöffnet hat, sodass alle Threads auf dem Webserver, dem App-Server oder der Firewall verbraucht waren. Es ähnelt so etwas wie einem Slowpost, Slowloris oder RUDY.

Um Erschöpfungsangriffe auf Anwendungsebene abzuwehren, benötigen Sie eine Webanwendungs-Firewall (WAF). Eine typische Netzwerk-Firewall (einschließlich Amazon Firewall und Next Generation Firewalls) kann diese nicht blockieren. Heutzutage gesendete Firewalls können derzeit nur etwa 30% aller Angriffe blockieren (Nov. 2014).



0

Die Config Server-Firewall ist die beste, die ich für die DDoS-Reduzierung in softwarebasierten VMs in EC2 gesehen habe. Wenn Sie die Syslog-Funktion kombinieren, kann sie vor einer Umgebung mit Lastenausgleich schützen.

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


Willkommen bei Server Fault! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Scott Pack
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.