DDOS ist eine Familie von Angriffen, die wichtige Systeme im Rechenzentrum überfordern, darunter:
- Die Netzwerkverbindung des Hosting-Centers zum Internet
- Das interne Netzwerk und die Router des Hosting Centers
- Ihre Firewall und Load Balancer
- Ihre Webserver, Anwendungsserver und Datenbank.
Überlegen Sie sich vor dem Aufbau Ihrer DDOS-Verteidigung, wie hoch der Value-at-Risk im schlimmsten Fall ist. Für einen unkritischen, kostenlos nutzbaren Dienst für eine kleine Gemeinde kann der gesamte gefährdete Wert Erdnüsse sein. Für ein kostenpflichtiges, öffentlich zugängliches, unternehmenskritisches System für ein etabliertes Unternehmen mit mehreren Milliarden Dollar könnte der Wert der Wert des Unternehmens sein. In diesem letzteren Fall sollten Sie StackExchange nicht verwenden :) Um sich gegen DDOS zu verteidigen, benötigen Sie einen detaillierten Verteidigungsansatz:
- Arbeiten Sie mit Ihrem Hosting-Center zusammen , um die von ihnen angebotenen Dienste zu verstehen, einschließlich IP- und Port-Filterung bei ihren Netzwerkverbindungen zum Internet und den von ihnen angebotenen Firewall-Diensten. Dies ist von entscheidender Bedeutung: Viele Websites werden vom Hosting-Unternehmen aus dem Internet abgerufen, da das Hosting-Unternehmen die durch das DDOS verursachte Störung des Rechenzentrums für einen Kunden behandelt. Während eines DDOS-Angriffs arbeiten Sie außerdem sehr eng mit den Mitarbeitern des Hosting-Centers zusammen. Kennen Sie daher deren Notrufnummern und stehen Sie in einem guten Verhältnis zu ihnen :) Sie sollten in der Lage sein, ganze internationale Regionen zu blockieren, bestimmte Dienste oder Netzwerke vollständig zu blockieren Protokolle und andere Breitband-Abwehrmaßnahmen oder alternativ nur IPs auf der Whitelist (abhängig von Ihrem Geschäftsmodell)
- Verwenden Sie im Hosting Center ein Content Delivery Network , um (hauptsächlich statische) Dienste in der Nähe Ihrer Endbenutzer zu verteilen und Ihre realen Server vor den DDOS-Architekten zu verbergen. Das vollständige CDN ist zu groß, als dass ein DDOS alle Knoten in allen Ländern entfernen könnte. Wenn sich das DDOS auf ein Land konzentriert, sind zumindest andere Benutzer noch in Ordnung.
Halten Sie alle Ihre Systeme und Softwarepakete mit den neuesten Sicherheitspatches auf dem neuesten Stand - und ich meine alle:
- Verwaltete Switches - diese müssen manchmal aktualisiert werden
- Router
- Firewalls
- Load Balancer
- Betriebssysteme
- Webserver
- Sprachen und ihre Bibliotheken
Stellen Sie sicher, dass Sie eine gute Firewall oder Security Appliance eingerichtet und regelmäßig von einem qualifizierten Sicherheitsexperten überprüft haben . Starke Regeln für die Firewall sind eine gute Verteidigung gegen viele einfache Angriffe. Es ist auch nützlich, die für jeden offenen Dienst verfügbare Bandbreite verwalten zu können.
Verfügen Sie über gute Tools zur Netzwerküberwachung - dies kann Ihnen helfen, Folgendes zu verstehen:
- Dass Sie angegriffen werden und nicht nur unter schwerer Last stehen
- Woher der Angriff kommt (einschließlich Ländern, mit denen Sie normalerweise keine Geschäfte machen) und
- Was der Angriff tatsächlich ist (Ports, Dienste, Protokolle, IPs und Paketinhalte)
Der Angriff kann einfach darin bestehen, dass legitime Website-Dienste häufig verwendet werden (z. B. "legale" URIs, die Abfragen ausführen oder Daten einfügen / aktualisieren / löschen) - Tausende oder Millionen von Anfragen, die von zehn bis Millionen verschiedener IP-Adressen kommen, bringen eine Website auf ihre Website Knie. Alternativ kann die Ausführung einiger Dienste so teuer sein, dass nur wenige Anforderungen ein DOS verursachen - denken Sie an einen wirklich teuren Bericht. Sie benötigen also eine gute Überwachung auf Anwendungsebene, um zu sehen, was gerade passiert:
- Welche Dienste wurden aufgerufen und welche Argumente / Daten werden gesendet (dh Anmeldung in Ihrer Anwendung)?
- Welche Benutzer rufen auf und von welchen IPs (dh Sie melden sich in Ihrer Anwendung an)
- Welche Abfragen und Einfügungen / Aktualisierungen / Löschungen die Datenbank ausführt
- Lastdurchschnitt, CPU-Auslastung, Festplatten-E / A, Netzwerkverkehr auf allen Computern (und VMs) in Ihrem System
- Stellen Sie sicher, dass alle diese Informationen leicht abrufbar sind und dass Sie Protokolle von verschiedenen Computern und Diensten korrelieren können (dh stellen Sie sicher, dass alle Computer mit ntp zeitsynchronisiert sind).
Sinnvolle Einschränkungen und Grenzen in Ihrer Anwendung . Zum Beispiel könnten Sie:
- Verwenden Sie eine QoS-Funktion im Load Balancer, um alle anonymen Sitzungen an separate Anwendungsserver in Ihrem Cluster zu senden, während angemeldete Benutzer einen anderen Satz verwenden. Dies verhindert, dass ein anonymes DDOS auf Anwendungsebene wertvolle Kunden herausnimmt
- Verwendung eines starken CAPCHA zum Schutz anonymer Dienste
- Sitzungszeitlimits
- Haben Sie ein Sitzungs- oder Ratenlimit für bestimmte Arten von Anforderungen wie Berichte. Stellen Sie sicher, dass Sie den anonymen Zugriff bei Bedarf deaktivieren können
- Stellen Sie sicher, dass ein Benutzer die Anzahl der gleichzeitigen Sitzungen begrenzt hat (um zu verhindern, dass sich ein gehacktes Konto millionenfach anmeldet).
- Haben Sie unterschiedliche Benutzer von Datenbankanwendungen für unterschiedliche Dienste (z. B. Transaktionsnutzung oder Berichtsnutzung) und verwenden Sie die Datenbankressourcenverwaltung, um zu verhindern, dass eine Art von Webanforderung alle anderen überfordert
- Wenn möglich, machen Sie diese Einschränkungen dynamisch oder zumindest konfigurierbar. Auf diese Weise können Sie während eines Angriffs aggressive temporäre Grenzwerte festlegen (den Angriff drosseln), z. B. nur eine Sitzung pro Benutzer und keinen anonymen Zugriff. Dies ist sicherlich nicht gut für Ihre Kunden, aber viel besser, als überhaupt keinen Service zu haben.
Zu guter Letzt schreiben Sie ein DOS-Reaktionsplandokument und lassen es von allen relevanten Parteien intern überprüfen: Unternehmen, Management, dem SW-Entwicklerteam, dem IT-Team und einem Sicherheitsexperten. Der Prozess des Schreibens des Dokuments veranlasst Sie und Ihr Team, die Probleme zu durchdenken und sich darauf vorzubereiten, dass das Schlimmste an Ihrem freien Tag um 3 Uhr morgens eintreten sollte. Das Dokument sollte (unter anderem) Folgendes abdecken:
- Was ist gefährdet und die Kosten für das Unternehmen
- Maßnahmen zum Schutz der Vermögenswerte
- Wie ein Angriff erkannt wird
- Das geplante Reaktions- und Eskalationsverfahren
- Prozesse, um das System und dieses Dokument auf dem neuesten Stand zu halten
Abgesehen von der Präambel gibt es hier einige spezifische Antworten:
DDOS werden in der Regel auf Serverebene blockiert, oder?
Nicht wirklich - die meisten der schlimmsten DDOS-Angriffe sind auf niedriger Ebene (auf IP-Paketebene) und werden von Routing-Regeln, Firewalls und Sicherheitsgeräten behandelt, die für DDOS-Angriffe entwickelt wurden.
Gibt es eine Möglichkeit, es auf PHP-Ebene zu blockieren oder zumindest zu reduzieren?
Einige DDOS-Angriffe richten sich an die Anwendung selbst und senden gültige URIs und HTTP-Anforderungen. Wenn die Anzahl der Anforderungen steigt, haben Ihre Server Probleme und Sie haben einen SLA-Ausfall. In diesem Fall gibt es Dinge, die Sie auf PHP-Ebene tun können:
Überwachung auf Anwendungsebene: Stellen Sie sicher, dass jeder Dienst / jede Seite Anforderungen so protokolliert, dass Sie sehen können, was gerade passiert (damit Sie Maßnahmen ergreifen können, um den Angriff abzuwehren). Einige Ideen:
Verfügen Sie über ein Protokollformat, das Sie problemlos in ein Protokolltool (oder Excel oder ähnliches) laden und mit Befehlszeilentools (grep, sed, awk) analysieren können. Denken Sie daran, dass ein DDOS Millionen von Protokollzeilen generiert. Sie müssen wahrscheinlich Ihre Protokolle in Scheiben schneiden (insbesondere in Bezug auf URI, Zeit, IP und Benutzer), um herauszufinden, was vor sich geht, und müssen Daten generieren wie:
- Auf welche URIs wird zugegriffen?
- Welche URIs versagen mit hoher Rate (ein wahrscheinlicher Indikator für die spezifischen URIs, die die Angreifer angreifen)
- Welche Benutzer greifen auf den Dienst zu?
- Von wie vielen IPs greift jeder Benutzer auf den Dienst zu?
- Auf welche URIs greifen anonyme Benutzer zu?
- Welche Argumente werden für einen bestimmten Dienst verwendet?
- Überwachen Sie die Aktionen eines bestimmten Benutzers
Protokollieren Sie die IP-Adresse jeder Anforderung. Machen Sie DNS NICHT rückgängig - ironischerweise erleichtern die Kosten dafür ein DDOS für die Angreifer
- Protokollieren Sie die gesamte URI- und HTTP-Methode, z. B. "GET http://example.com/path/to/service?arg1=ddos ".
- Protokollieren Sie die Benutzer-ID, falls vorhanden
- Protokollieren Sie wichtige HTTP-Argumente
Sinnvolle Ratenbeschränkungen: Sie können Beschränkungen für die Anzahl der Anforderungen festlegen, die eine bestimmte IP oder ein bestimmter Benutzer in einem bestimmten Zeitraum stellen kann. Könnte ein legitimer Kunde mehr als 10 Anfragen pro Sekunde stellen? Können anonyme Benutzer überhaupt auf teure Berichte zugreifen?
CAPTCHA für anonymen Zugriff: Implementieren Sie ein CAPTCHA für alle anonymen Anforderungen, um zu überprüfen, ob der Benutzer eine Person und kein DDOS-Bot ist.
Was ist der schnellste und häufigste Weg, um DDOS-Angriffe zu stoppen?
Am schnellsten ist es wahrscheinlich, der Erpressung nachzugeben, obwohl dies möglicherweise nicht wünschenswert ist.
Andernfalls müssen Sie sich zuerst an Ihren Hosting- und / oder CDN-Anbieter wenden und mit ihm zusammenarbeiten (wenn er Sie nicht kontaktiert hat und Sie bereits gefragt hat, was zum Teufel los ist ...). Wenn ein DDOS auftritt, wirkt es sich wahrscheinlich auf andere Kunden des Hosting-Anbieters aus, und der Anbieter steht möglicherweise unter erheblichem Druck, Ihre Website einfach zum Schutz ihrer Ressourcen herunterzufahren. Seien Sie bereit, Ihre Protokolle (alle Informationen) mit dem Anbieter zu teilen. Diese Protokolle können zusammen mit ihren Netzwerkmonitoren zusammen genügend Informationen liefern, um den Angriff zu blockieren / abzuschwächen.
Wenn Sie ein DDOS erwarten, ist es eine sehr gute Idee, Ihren Hosting-Anbieter für das Schutzniveau zu qualifizieren, das er bieten kann. Sie sollten über DDOS-Erfahrung und Tools verfügen, um dies zu vermeiden. Verstehen Sie ihre Tools, Prozesse und Eskalationsverfahren. Fragen Sie auch, welche Unterstützung der Hosting-Anbieter von seinen Upstream-Anbietern hat. Diese Dienstleistungen können höhere Vorab- oder monatliche Kosten bedeuten, behandeln dies jedoch als Versicherungspolice.
Während Sie angegriffen werden, müssen Sie Ihre Protokolle greifen und abbauen - versuchen Sie, das Muster des Angriffs herauszufinden. Sie sollten in Betracht ziehen, den anonymen Zugriff auszuschalten und die angegriffenen Dienste zu drosseln (dh das Ratenlimit der Anwendung für den Dienst zu verringern).
Wenn Sie Glück haben und einen kleinen, festen Kundenstamm haben, können Sie möglicherweise die gültigen IP-Adressen Ihrer Kunden ermitteln. In diesem Fall können Sie für kurze Zeit zu einem White-List-Ansatz wechseln. Stellen Sie sicher, dass alle Ihre Kunden wissen, dass dies geschieht, damit sie anrufen können, wenn sie von einer neuen IP aus zugreifen müssen :)
Doug McClean hat einige gute Ratschläge unter: https://stackoverflow.com/a/1029613/1395668