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


Einer der Server, die ich verwende, wird in der Amazon EC2 Cloud gehostet. Alle paar Monate haben wir einen DDoS-Angriff auf diesen Server. Das verlangsamt den Server unglaublich. Nach ungefähr 30 Minuten und manchmal einem Neustart später ist alles wieder normal.

Amazon hat Sicherheitsgruppen und eine Firewall, aber was sollte ich noch auf einem EC2-Server haben, um einen Angriff zu mildern oder zu verhindern?

Aus ähnlichen Fragen habe ich gelernt:

  • Beschränken Sie die Rate der Anfragen / Minute (oder Sekunden) von einer bestimmten IP-Adresse über etwas wie IP-Tabellen (oder vielleicht UFW?)
  • Habe genug Ressourcen, um einen solchen Angriff zu überleben - oder -
  • Möglicherweise wird die Webanwendung so aufgebaut, dass sie elastisch ist / einen elastischen Lastausgleicher aufweist und schnell skaliert werden kann, um eine so hohe Nachfrage zu erfüllen.
  • Wenn Sie mySql verwenden, richten Sie mySql-Verbindungen so ein, dass sie sequenziell ausgeführt werden, sodass langsame Abfragen das System nicht beeinträchtigen

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

PS: Anmerkungen zur Überwachung von DDOS wären auch willkommen - vielleicht mit Nagios? ;)


46
2017-12-13 01:08


Ursprung


Es zu verhindern, ist fast unmöglich, aber Sie könnten Ihre Anfälligkeit verringern. - Belmin Fernandez
Sehr richtig. Und ich wäre glücklich mit Antworten, die die abnehmende Schwachstelle diskutieren :) - cwd
Um zu wissen, wie man es verhindern kann, müsste man mehr über die Art des Angriffs wissen. War es eine Syn-Flut? Gab es eine Webseite, die teuer ist, die getroffen wurde? War es ein anderer Dienst? - stew
Ich denke, es war eine Webseite, bin mir aber nicht sicher. Ich würde auch gerne Tipps zum Monitor bekommen und diese untersuchen. Einige Zugriffsprotokolle wurden bereits gelöscht. Was sollte ich sonst noch suchen? - cwd
und tatsächlich, wenn ein Neustart das Problem behebt, dann weiß ich nicht, was es sein könnte, außer vielleicht Ihr Server hat irgendwo ein Ressourcenleck. Ein Neustart kann einen DDoS nicht alleine stoppen. Woher weißt du, dass das überhaupt ein DDoS ist? - stew


Antworten:


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

Bei AWS haben Sie Glück, weil die Netzwerkkomponente sehr stark ist - es wäre sehr überraschend zu erfahren, dass die Upstream-Verbindung gesättigt ist. Die CPU und die Festplatten-I / O sind jedoch viel einfacher zu fluten.

Am besten wäre es, ein Monitoring (lokal wie SAR, Remote mit Nagios und / oder ScoutApp) und einige Remote-Logging-Einrichtungen (Syslog-ng) zu starten. Mit diesem Setup können Sie feststellen, welche Ressourcen gesättigt sind (Netzwerk-Socket aufgrund von Syn-Flood; CPU aufgrund schlechter SQL-Abfragen oder Crawler; RAM aufgrund ...). Vergessen Sie nicht, Ihre Protokollpartition (wenn Sie keine Remote-Protokollierung aktiviert haben) auf einem EBS-Volume zu haben (um später die Protokolle zu untersuchen).

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


36
2017-12-13 02:20



Vielleicht möchten Sie den "lastbasierten" Abschnitt von serverfault.com/a/531942/87017 - Pacerier


Sie können Ihre EC2-Instanzen weiter isolieren, indem Sie sie hinter einem Elastic Load Balancer platzieren und nur Datenverkehr von der ELB-Instanz akzeptieren. Dies bringt Amazon dazu, DDOS-Angriffe zu verwalten.

Ich nehme an, dass Sie immer noch SSH für alle offen haben, so dass Sie wahrscheinlich immer noch etwas Rogue-Traffic sehen werden, es sei denn, Sie können diesen Port für einige statische IPs sperren. Sie könnten den SSHd-Port in etwas dunkleres (d. H. Etwas anderes als 22) ändern, um DDOS-Treffer weiter zu reduzieren (die meisten Bots überprüfen nur bekannte Ports).

Ich erwähne auch fail2ban, das Protokolle überwachen und vorübergehend Ihre IP-Tabellen modifizieren kann, um bestimmte IPs zu blockieren (zum Beispiel, wenn es 6 fehlgeschlagene Versuche von einer einzigen IP-Adresse zu SSH in Ihren Host gab, kann es diese IP für 30 blockieren) Minuten oder so). Denken Sie daran, dass (wie Jordan scharfsinnig kommentierte) fail2ban wahrscheinlich nicht geeignet ist, um proxied Verkehr zu blockieren (z. B. das von einem ELB), weil es die IP des Proxys blockiert, nicht unbedingt die ursprüngliche Remote IP.

Ich habe es nicht benutzt, aber Apache mod_evasive könnte auch eine Untersuchung wert sein; Es kann jedoch dieselbe Schwäche wie fail2ban haben, wenn es um IP-basierte Blockierung geht.


24
2017-12-13 19:52



+1 danke. eigentlich habe ich ssh geschlossen;) - cwd
Beachten Sie, dass fail2ban nicht funktioniert, wenn Sie sich hinter einem ELB befinden - weil es normalerweise funktioniert, indem Sie eine IP in iptables blockieren. Aber das IP wird immer das deines ELB sein. Das habe ich gemerkt, nachdem ich versucht habe, fail2ban zu meinem Setup hinzuzufügen. Es funktioniert nicht, wenn der Benutzer nur über das ELB zugreift. - Jordan Reiter


Wenn Sie Apache verwenden, empfehle ich die Verwendung mod_sicherheit. Die von den meisten Anbietern verpackten Kernregeln machen fantastische Arbeit.

Ein weiterer Härtungsschritt beschränkt die Anfragen auf der Webserver-Ebene. Nginx., Apache kann eingehende Anfragen drosseln und begrenzen.


5
2018-03-07 19:57



genial - diese sehen wie fantastische Optionen aus danke! - cwd


Die Lösung, die ich zum Blockieren von schlechten IPs in Echtzeit verwende, die aus AWS und anderen kommen, ist dies ... In meiner CSF Firewall in der Config für LFD Blocklists verwende ich eine Liste hier - http://myip.ms/browse/blacklist/Blacklist_IP_Blacklist_IP_Addresses_Live_Database_Real-time

Download Blacklist für CSF Firewall » http://myip.ms/files/blacklist/csf/latest_blacklist.txt

Kein unverschämt anstößiger AWS-Verkehr mehr.


2
2017-08-14 06:05



Dies beantwortet die Frage nicht. - kasperd


Ich bin voreingenommen, da ich für ein Content-Delivery-Netzwerk als Sicherheitsvorarbeiter arbeite.

Die Verwendung einer Ddos-Mitigationslösung in einem Content-Delivery-Netzwerk stellt jedoch sicher, dass Ihnen am Ursprungsort nie die Ressourcen ausgehen. Es ist vergleichbar mit dem Einsatz eines F5-Lastenausgleichs vor Ihrer Website, aber verteilt auf Tausende von Standorten auf der ganzen Welt.

Eine gute CDN erlaubt es Ihnen, den Ursprung mit einer Whitelist zu tarnen, die Sie auf der aws-Firewall installieren. Wenn also Angreifer bei Amazon ihre Aufklärung durchführen, wird Ihre IP-Adresse leer angezeigt, da alles blockiert wird.

Daher werden die Ddos-Angriffe blockiert, wenn der Verkehr einen Knoten so nahe wie möglich am Angreifer erreicht. Auf diese Weise können Sie Ddos-Angriffe so weit wie möglich von dem zu schützenden Asset abwehren.

Ein gutes cdn kann auch Health Checks und Failover-Datenverkehr an andere Stellen wie zB ein anderes Ego auf Ass, Azure, Rack-Space, Soft-Layer, Physical Dc etc. durchführen. Es sollte auch eine WAF haben, um Application-Layer-Erschöpfungsangriffe zu blockieren RUDY, slowpost, slowloris sowie sqli, xss, rfi, lfi usw.

Standardmäßig blockiert das cdn auch Netzwerk-Layer-Attacken wie Teardrop, ICMP-Attacken, Synfloods etc. Ein cdn ist in der Lage, Ddos-Angriffe zu mildern, da trey große Mengen an Kapazität hat, um die Anfragen zu akzeptieren, schlechten Verkehr herauszufiltern und den guten Verkehr weiterzugeben. So können Angriffe wie ntp, DNS, ssdp, ladende und snmp volumetrische Angriffe blockiert werden.

Der größte Angriff, den ich bis jetzt gesehen habe, war 321gbps im Juli 2014. Während dieses Angriffs gab es auch einen DNS-Protokollangriff bei 20gbps. Sie müssen also sicherstellen, dass Ihre DNS-Infrastruktur auch einer großen Anzahl von Anforderungen standhält.

Aus der Beschreibung, die Sie zur Verfügung gestellt haben, ist ersichtlich, dass Sie einem Erschöpfungsangriff ausgesetzt waren, bei dem der Angreifer viele Threads geöffnet hat, so dass alle Threads auf dem Webserver, dem App-Server oder der Firewall aufgebraucht waren. Es ist ähnlich wie ein Slowpost, Slowloris oder RUDY.

Um Angriffe auf die Ausnutzung der Anwendungsschicht zu verhindern, benötigen Sie eine Webanwendungsfirewall (WAF). Eine typische Netzwerkfirewall (einschließlich Amazon Firewall und Firewall der nächsten Generation) kann diese nicht blockieren. Gesendete Arbeitsfirewalls können heutzutage nur etwa 30% aller Angriffe blockieren (November 2014).


2
2017-11-12 12:12





Hier ist ein Tool, das ich für diejenigen erstellt habe, die Fail2Ban auf aws mit Apache, ELB und ACL verwenden möchten: https://github.com/anthonymartin/aws-acl-fail2ban

Es ist nützlich, um DoS-Attacken und den Missbrauch von ec2-Instanzen zu erkennen und zu verhindern.


1
2017-09-19 16:20





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

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


0
2017-10-10 16:27



Willkommen bei Serverfehler! Während dies theoretisch die Frage beantworten könnte, es wäre vorzuziehen um die wesentlichen Teile der Antwort hier einzubeziehen und den Link als Referenz bereitzustellen. - Scott Pack