it-swarm.com.de

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

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. Was sollte ich sonst noch auf einem EC2-Server einrichten, 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 IP-Tabellen (oder vielleicht UFW?).
  • Haben Sie genug Ressourcen, um einen solchen Angriff zu überleben - oder -
  • Erstellen Sie die Webanwendung möglicherweise so, dass sie elastisch ist/einen elastischen Lastausgleich hat 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 (auch hier unter Linux) und/oder über alles, was für Amazon EC2 spezifisch ist, erhalten.

ps: Hinweise zur Überwachung auf DDOS wären ebenfalls willkommen - vielleicht mit Nagios? ;)

47
cwd

Ein DDOS (oder sogar ein DOS) ist im Wesentlichen eine Ressourcenerschöpfung. Sie werden Engpässe niemals beseitigen können, 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 gesättigt war. Die CPU sowie die Festplatten-E/A lassen sich jedoch viel einfacher ü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 gesättigt sind (Netzwerksocket aufgrund von Syn-Flood; CPU aufgrund fehlerhafter SQL-Abfragen oder Crawler; 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 ein gleichwertiges Protokoll) sehr nützlich sein.

36
CloudWeavers

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 mehr in die Pflicht, DDOS-Angriffe zu verwalten.

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

Ich werde auch fail2ban erwähnen, das Protokolle überwachen und Ihre IP-Tabellen vorübergehend ändern kann, um bestimmte IPs 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). Beachten Sie, dass (wie Jordan scharfsinnig kommentierte) fail2ban wahrscheinlich nicht zum Blockieren von Proxy-Verkehr (z. B. von einem ELB) geeignet ist, da dadurch die IP des Proxys blockiert wird, nicht unbedingt die ursprüngliche Remote-IP.

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

24
jstell

Wenn Sie Apache verwenden, empfehle ich die Verwendung von mod_security . Von den meisten Anbietern gepackt, leistet der Kernregelsatz fantastische Arbeit.

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

5

Die Lösung, die ich zum Blockieren von IPs für schlechte Aktivitäten in Echtzeit verwende, die von AWS und anderen stammen, lautet wie folgt: In meiner CSF-Firewall in der Konfiguration für LFD-Blocklisten verwende ich eine Liste, die hier zu finden ist - http://myip.ms/) durchsuchen/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

Kein unverschämt widerlicher AWS-Verkehr mehr.

2
UlyssesGrump

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

Durch die Nutzung einer Ddos-Schadensbegrenzungslösung in einem Netzwerk für die Bereitstellung von Inhalten wird jedoch sichergestellt, dass Ihnen im Origin niemals die Ressourcen ausgehen. Es ähnelt dem Platzieren eines F5-Load-Balancers vor Ihrer Site, ist jedoch auf Tausende von Standorten auf der ganzen Welt verteilt.

Mit einer guten CDN können Sie den Origin mit einer Whitelist tarnen, die Sie auf der aws-Firewall installieren. Wenn Angreifer ihre Aufklärung bei Amazon durchführen, wird Ihre IP-Adresse leer, da alles blockiert wird.

Die Ddos-Angriffe werden also blockiert, wenn der Datenverkehr einen Knoten trifft, der dem Angreifer so nahe wie möglich kommt. Auf diese Weise stellen Sie 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-Datenverkehr zu anderen Orten durchführen, z. B. zu einem anderen Ego in Ass, Azure, Rack Space, Soft Layer, einem physischen DC usw. Es 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 Angriffe auf Netzwerkebene wie Teardrop, ICMP-Angriffe, Synfloods usw. Ein CDN kann Ddos-Angriffe abschwächen, da er über eine enorme Kapazität verfügt, um die Anforderungen zu akzeptieren, schlechten Datenverkehr herauszufiltern und den guten Datenverkehr weiterzuleiten. So können verstärkte Angriffe wie die volumetrischen Angriffe ntp, DNS, ssdp, chargen und snmp blockiert werden.

Der größte Angriff, den ich bisher gesehen habe, war im Juli 2014 321 Gbit/s. Während dieses Angriffs gab es auch einen DNS-Protokollangriff mit 20 Gbit/s. Sie müssen also sicherstellen, dass Ihre DNS-Infrastruktur auch stabil ist, um einer großen Anzahl von Anforderungen standzuhalten.

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 wurden. Es ähnelt so etwas wie einem Slowpost, Slowloris oder RUDY.

Um Angriffe auf Erschöpfung der Anwendungsebene abzuwehren, benötigen Sie eine Webanwendungs-Firewall (WAF). Eine typische Netzwerk-Firewall (einschließlich Amazon-Firewall und Firewalls der nächsten Generation) kann diese nicht blockieren. Gesendete Arbeitsfirewalls können heutzutage nur etwa 30% aller Angriffe dieser Tage blockieren (November 2014).

2
James

Hier ist ein Tool, das ich für diejenigen entwickelt 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-Angriffe und den Missbrauch von ec2-Instanzen zu erkennen und zu verhindern.

1
Anthony Martin

Die Konfigurationsserver-Firewall ist die beste, die ich für die DDoS-Minderung 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

0
Jeff