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? ;)
Antworten:
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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).
quelle
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-Angriffe und den Missbrauch von ec2-Instanzen zu erkennen und zu verhindern.
quelle
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
quelle