Ich bin unter DDoS. Was kann ich machen?


179

Dies ist eine kanonische Frage zur Minderung von DoS und DDoS.

Ich habe auf einer Website, die ich heute hoste, einen massiven Traffic-Anstieg festgestellt. Ich erhalte Tausende von Verbindungen pro Sekunde und sehe, dass ich alle 100 Mbit / s meiner verfügbaren Bandbreite verwende. Niemand kann auf meine Site zugreifen, da alle Anforderungen abgelaufen sind, und ich kann mich nicht einmal beim Server anmelden, da SSH ebenfalls abgelaufen ist! Dies ist schon ein paar Mal vorgekommen und jedes Mal hat es ein paar Stunden gedauert und ist von alleine verschwunden.

Gelegentlich hat meine Website ein anderes bestimmtes, aber damit verbundenes Problem: Die durchschnittliche Auslastung meines Servers (die normalerweise bei 0,25 liegt) erreicht 20 oder mehr Raketen, und niemand kann auf meine Website zugreifen, genau wie im anderen Fall. Es verschwindet auch nach ein paar Stunden.

Ein Neustart meines Servers hilft nicht. Was kann ich tun, um meine Website wieder zugänglich zu machen und was passiert gerade?

Entsprechend habe ich einmal festgestellt, dass ein oder zwei Tage lang jedes Mal, wenn ich meinen Dienst startete, eine Verbindung von einer bestimmten IP-Adresse hergestellt wurde und dann abgestürzt ist. Sobald ich es wieder in Betrieb nahm, passierte dies erneut und es stürzte erneut ab. Wie ist das ähnlich und was kann ich dagegen tun?


Antworten:


191

Es kommt zu einem Denial-of-Service-Angriff. Wenn Sie feststellen, dass der Datenverkehr von mehreren Netzwerken kommt (unterschiedliche IP-Adressen in unterschiedlichen Subnetzen), liegt ein Distributed Denial of Service (DDoS) vor. Wenn alles vom selben Ort kommt, hast du ein einfaches altes DoS. Es kann hilfreich sein, zu überprüfen, ob Sie in der Lage sind; benutze netstat um das zu überprüfen. Dies könnte jedoch schwierig sein.

Denial-of-Service fällt normalerweise in zwei Kategorien: verkehrsbasiert und lastbasiert. Das letzte Element (mit dem Absturzdienst) ist ein auf Exploits basierendes DoS und ist ganz anders.

Wenn Sie versuchen, die Art des Angriffs genau zu bestimmen, möchten Sie möglicherweise Datenverkehr erfassen (mit Wireshark, tcpdump oder libpcap). Sie sollten sich nach Möglichkeit aber auch darüber im Klaren sein, dass Sie wahrscheinlich ziemlich viel Verkehr erfassen werden.

So oft wie nicht, werden diese von Botnetzen stammen (Netzwerke kompromittierter Hosts, die unter der zentralen Kontrolle eines Angreifers stehen, dessen Gebot sie abgeben). Auf diese Weise kann der Angreifer (sehr kostengünstig) die Upstream-Bandbreite vieler verschiedener Hosts in verschiedenen Netzwerken abrufen, mit denen er Sie angreifen kann, während er deren Spuren verwischt. Die Low Orbit Ion Cannon ist ein Beispiel für ein Botnetz (obwohl es freiwillig und nicht von Malware abgeleitet ist). Zeus ist typischer.

Verkehrsbasiert

Wenn Sie sich in einem DoS befinden, das auf Datenverkehr basiert, wird auf Ihrem Server nur so viel Datenverkehr übertragen , dass die Verbindung zum Internet vollständig ausgelastet ist. Es gibt eine hohe Paketverlustrate, wenn Sie Ihren Server von einem anderen Ort aus anpingen, und (abhängig von den verwendeten Routing-Methoden) stellen Sie manchmal auch eine sehr hohe Latenz fest (der Ping ist hoch). Diese Art von Angriff ist normalerweise ein DDoS.

Dies ist zwar ein sehr "lauter" Angriff, und es ist offensichtlich, was vor sich geht, aber für einen Serveradministrator ist es schwierig, ihn zu mildern (und für einen Benutzer von Shared Hosting ist es im Grunde unmöglich, ihn zu mildern). Sie werden Hilfe von Ihrem ISP benötigen. Lassen Sie sie wissen, dass Sie unter einem DDoS-System stehen, und sie können möglicherweise helfen.

Die meisten ISPs und Transitanbieter werden jedoch proaktiv erkennen, was gerade passiert, und eine Blackhole-Route für Ihren Server veröffentlichen. Dies bedeutet, dass sie eine Route zu Ihrem Server mit möglichst geringen Kosten veröffentlichen, indem 0.0.0.0sie den Datenverkehr zu Ihrem Server über das Internet nicht mehr routingfähig machen. Diese Routen sind in der Regel / 32s und werden schließlich entfernt. Das hilft dir überhaupt nicht; Ziel ist es, das Netzwerk des Internetdienstanbieters vor der Flut zu schützen. Während dieser Zeit verliert Ihr Server effektiv den Internetzugang.

Der einzige Weg, wie Ihr ISP (oder Sie, wenn Sie über einen eigenen AS verfügen) helfen kann, ist die Verwendung intelligenter Traffic Shaper, die den wahrscheinlichen DDoS-Verkehr erkennen und dessen Rate begrenzen können. Nicht jeder hat diese Technologie. Wenn der Datenverkehr jedoch von einem oder zwei Netzwerken oder einem Host stammt, kann er möglicherweise auch den vor Ihnen liegenden Datenverkehr blockieren.

Kurz gesagt, es gibt sehr wenig, was Sie gegen dieses Problem tun können . Die beste langfristige Lösung besteht darin, Ihre Dienste an vielen verschiedenen Orten im Internet zu hosten, die einzeln und gleichzeitig DDoS-fähig sein müssten, was das DDoS erheblich verteuert. Die Strategien hierfür hängen von dem Service ab, den Sie schützen müssen. DNS kann mit mehreren autorisierenden Nameservern, SMTP mit MX-Datensicherungsdatensätzen und E-Mail-Austauschern sowie HTTP mit Round-Robin-DNS oder Multihoming geschützt werden.

Lastverteiler sind selten eine effektive Lösung für dieses Problem, da der Lastverteiler selbst dem gleichen Problem unterliegt und lediglich einen Engpass erzeugt. IPTables oder andere Firewall-Regeln helfen nicht, da das Problem darin besteht, dass Ihre Pipe gesättigt ist. Sobald die Verbindungen von Ihrer Firewall erkannt wurden, ist es bereits zu spät . Die Bandbreite in Ihrer Site wurde verbraucht. Es ist egal, was Sie mit den Verbindungen machen. Der Angriff wird abgeschwächt oder beendet, wenn der eingehende Datenverkehr wieder normalisiert wird.

Wenn Sie dazu in der Lage sind, können Sie ein Content Distribution Network (CDN) wie Akamai, Limelight und CDN77 oder einen DDoS-Scrubbing-Service wie CloudFlare oder Prolexic verwenden. Diese Dienste ergreifen aktive Maßnahmen, um diese Arten von Angriffen abzuwehren, und verfügen außerdem über eine so große Bandbreite an so vielen verschiedenen Orten, dass eine Überflutung im Allgemeinen nicht möglich ist.

Wenn Sie sich für CloudFlare (oder einen anderen CDN / Proxy) entscheiden, denken Sie daran, die IP Ihres Servers zu verbergen. Wenn ein Angreifer die IP herausfindet, kann er Ihren Server unter Umgehung von CloudFlare erneut direkt einer DDoS-Operation unterziehen. Um die IP zu verbergen, sollte Ihr Server niemals direkt mit anderen Servern / Benutzern kommunizieren, es sei denn, diese sind sicher. Zum Beispiel sollte Ihr Server keine E-Mails direkt an Benutzer senden. Dies gilt nicht, wenn Sie alle Ihre Inhalte auf dem CDN hosten und keinen eigenen Server haben.

Außerdem können einige VPS- und Hosting-Anbieter diese Angriffe besser abwehren als andere. Je größer sie sind, desto besser werden sie im Allgemeinen darin sein. Ein Anbieter, der sehr gut informiert ist und über eine große Bandbreite verfügt, ist von Natur aus widerstandsfähiger, und ein Anbieter mit einem aktiven und voll besetzten Netzwerkbetriebsteam kann schneller reagieren.

Lastbasiert

Bei einem lastbasierten DDoS stellen Sie fest, dass der Lastdurchschnitt ungewöhnlich hoch ist (oder die CPU-, RAM- oder Datenträgerverwendung, abhängig von Ihrer Plattform und den Besonderheiten). Obwohl der Server anscheinend nichts Nützliches tut, ist er sehr beschäftigt. In den Protokollen befinden sich häufig zahlreiche Einträge, die auf ungewöhnliche Bedingungen hinweisen. Meistens kommt dies von vielen verschiedenen Orten und ist ein DDoS, aber das ist nicht unbedingt der Fall. Es muss nicht einmal viele verschiedene Hosts geben .

Dieser Angriff basiert darauf, dass Ihr Service viele teure Dinge erledigt. Dies könnte so etwas wie das Öffnen einer riesigen Anzahl von TCP-Verbindungen und das Erzwingen des Status für sie sein, oder das Hochladen übermäßig großer oder zahlreicher Dateien zu Ihrem Dienst, oder möglicherweise das Durchführen wirklich teurer Suchen oder das Ausführen von allem, was in der Handhabung teuer ist. Der Datenverkehr liegt innerhalb der von Ihnen geplanten und möglichen Grenzen, aber die Art der gestellten Anfragen ist zu teuer, um so viele Anfragen zu bearbeiten .

Erstens weist diese Art von Angriff häufig auf ein Konfigurationsproblem oder einen Fehler hinin deinem Dienst. Möglicherweise haben Sie die ausführliche Protokollierung übermäßig aktiviert und speichern Protokolle auf etwas, auf das nur sehr langsam geschrieben werden kann. Wenn dies jemand merkt und viel unternimmt, was Sie dazu veranlasst, viele Protokolle auf die Festplatte zu schreiben, wird Ihr Server langsam kriechen. Ihre Software kann in bestimmten Eingabefällen auch eine äußerst ineffiziente Aktion ausführen. Die Ursachen sind so zahlreich wie es Programme gibt, aber zwei Beispiele wären eine Situation, die dazu führt, dass Ihr Dienst eine Sitzung, die ansonsten beendet wird, nicht schließt, und eine Situation, die dazu führt, dass ein untergeordneter Prozess erzeugt und verlassen wird. Wenn Sie am Ende Zehntausende von offenen Verbindungen mit state haben, um den Überblick zu behalten, oder Zehntausende von untergeordneten Prozessen, werden Sie in Schwierigkeiten geraten.

Das erste, was Sie möglicherweise tun können, ist die Verwendung einer Firewall, um den Datenverkehr zu reduzieren . Dies ist nicht immer möglich, aber wenn es eine Eigenschaft gibt, die Sie im eingehenden Datenverkehr finden können (tcpdump kann hilfreich sein, wenn der Datenverkehr schwach ist), können Sie es an der Firewall ablegen und es verursacht keine Probleme mehr. Die andere Sache, die Sie tun müssen, ist, den Fehler in Ihrem Service zu beheben (setzen Sie sich mit dem Anbieter in Verbindung und seien Sie auf eine lange Supporterfahrung vorbereitet).

Allerdings , wenn es sich um ein Konfigurationsproblem ist, starten Sie es . Reduzieren Sie die Protokollierung auf Produktionssystemen auf ein angemessenes Maß (je nach Programm ist dies normalerweise die Standardeinstellung) und stellen Sie in der Regel sicher, dass die Protokollierungsstufen "Debug" und "Verbose" deaktiviert sind feine Details, Ihre Protokollierung ist zu ausführlich). Darüber hinaus überprüfen Grenzen Kind - Prozess und Anforderung , möglicherweise Drossel eingehende Anfragen, Verbindungen pro IP, und die Anzahl der erlaubten Kindprozesse, wie anwendbar.

Es versteht sich von selbst, dass diese Art von Angriff umso schwerer ist, je besser konfiguriert und bereitgestellt Ihr Server ist. Vermeiden Sie es, besonders mit RAM und CPU zurechtzukommen. Stellen Sie sicher, dass Ihre Verbindungen zu Back-End-Datenbanken und zum Festplattenspeicher schnell und zuverlässig sind.

Exploit-basiert

Wenn Ihr Dienst nach dem Aufrufen auf mysteriöse Weise sehr schnell abstürzt , insbesondere wenn Sie ein Muster von Anforderungen erstellen können, das dem Absturz vorausgeht, und die Anforderung untypisch ist oder nicht mit den erwarteten Verwendungsmustern übereinstimmt, liegt möglicherweise ein DoS auf Exploit-Basis vor. Dies kann von nur einem Host (mit so ziemlich jeder Art von Internetverbindung) oder von vielen Hosts kommen.

Dies ähnelt in vielerlei Hinsicht einem lastbasierten DoS und hat im Grunde die gleichen Ursachen und Abhilfemaßnahmen. Der Unterschied besteht lediglich darin, dass in diesem Fall der Fehler nicht dazu führt, dass Ihr Server verschwenderisch ist, sondern dass er stirbt. Der Angreifer nutzt normalerweise eine Sicherheitsanfälligkeit bezüglich eines Remoteabsturzes aus, z. B. eine verstümmelte Eingabe, die eine Null-Dereferenzierung oder etwas in Ihrem Dienst verursacht.

Behandeln Sie dies ähnlich wie einen nicht autorisierten RAS-Angriff. Firewall gegen die Ursprungs-Hosts und die Art des Datenverkehrs, wenn diese festgehalten werden können. Verwenden Sie ggf. validierende Reverse-Proxies . Sammeln Sie forensische Beweise (versuchen Sie, einen Teil des Datenverkehrs zu erfassen), reichen Sie ein Fehlerticket beim Anbieter ein und erwägen Sie, eine Missbrauchsbeschwerde (oder rechtliche Beschwerde) auch gegen den Ursprung einzureichen.

Diese Angriffe sind relativ kostengünstig, wenn ein Exploit gefunden werden kann, und sie können sehr effektiv sein, lassen sich aber auch relativ leicht aufspüren und stoppen. Techniken, die gegen verkehrsbasiertes DDoS nützlich sind, sind jedoch im Allgemeinen gegen DoS auf Exploit-Basis nutzlos.


1
In Bezug auf Ihren letzten Absatz: Und wenn Sie ein Exploit-basiertes D- DoS erhalten? Wie könnten Sie es aufspüren und stoppen?
Pacerier

8

Wenn Sie ein Unternehmen sind, haben Sie viele Möglichkeiten. Wenn Sie ein kleiner Typ wie ich sind und einen VPS oder einen dedizierten Server für eine kleine Website mieten, können die Kosten schnell untragbar werden.

Aus meiner Erfahrung glaube ich, dass die meisten dedizierten und VPS-Anbieter keine speziellen Firewall-Regeln nur für Ihren Server einrichten. Aber heutzutage haben Sie ein paar Möglichkeiten.

CDN

Wenn Sie einen Webserver ausführen, können Sie ihn hinter ein CDN wie CloudFlare oder Amazon CloudFront stellen.

CDNs sind teuer. Um die Kosten unter Kontrolle zu halten, können Sie große Dateien (große Bilder, Audio- und Videodateien) direkt von Ihrem Server aus statt über das CDN bereitstellen. Dadurch kann Ihre Server-IP-Adresse jedoch Angreifern zugänglich gemacht werden.

Private Wolke

Private Clouds sind normalerweise teure Unternehmenslösungen, aber die Einrichtung von Amazon VPC kostet so gut wie nichts. Die Bandbreite von Amazon ist jedoch im Allgemeinen teuer. Wenn Sie sich das leisten können, können Sie die Sicherheitsgruppe und die Netzwerk-ACL von Amazon VPC so einrichten, dass der Datenverkehr blockiert wird, bevor er auf Ihrer Instanz eintrifft. Sie sollten alle Ports außer Ihrem TCP-Server-Port blockieren.

Beachten Sie, dass ein Angreifer weiterhin Ihren TCP-Server-Port angreifen kann. Wenn es sich um einen Webserver handelt, sollten Sie einen Server wie nginx verwenden, der nicht blockierende E / A-Vorgänge verwendet und eine große Anzahl von Verbindungen verarbeiten kann. Darüber hinaus können Sie nur sicherstellen, dass Sie die neueste Version der Serversoftware ausführen.

Wenn Ihr TCP-Port angegriffen wird und alles andere fehlschlägt

Dies ist eine von mir entwickelte Lösung, die für Nicht-Webserver gilt, die sich nicht hinter einem CDN verstecken können, z. B. WebSocket, Medieninhalts- / Streaming-Server. CloudFlare unterstützt derzeit nur WebSocket für Unternehmen.

Das Ziel ist es, Ihren TCP-Abhörport so schnell zu ändern, dass ein Botnetz nicht mehr mithalten kann, etwa alle 10 Sekunden. Dies geschieht mit einem einfachen Proxy-Programm, das das Port-Roaming durchführt. Die Reihenfolge der Ports ist pseudozufällig, muss jedoch auf der Serverzeit basieren. Der Algorithmus zur Berechnung der Serverzeit und des Ports muss in Ihrem Client-Javascript / Flash-Code verborgen sein. Das Programm sollte auch die Firewall ändern, da sie den Überwachungsport ändert, und die Firewall muss statusbehaftet sein. Wenn jemand interessiert ist, lade ich mein node.js-Skript, das mit Amazon funktioniert, auf GitHub hoch.


4

Ändern Sie Ihre Domain, um für einen kurzen Zeitraum zu einem Schwarzen Loch wie 0.0.0.0 zu wechseln.

Wenden Sie sich an Ihren Server und prüfen Sie, ob er Ihnen vorübergehend eine andere IP-Adresse für den Zugriff auf den Server zuweisen kann oder ob der Server über Remotekonsolenzugriff verfügt (als würden Sie davor sitzen). Von hier aus können Sie sehen, ob es sich um eine einzelne IP-Adresse handelt, und die Site oder einen verteilten Angriff blockieren.


3
Eine solche Änderung des DNS kann eher schaden als nützen. Zuerst würde ich die TTL des A-Datensatzes reduzieren, aber die IP-Adresse unverändert lassen - bis ich eine neue IP habe, auf die ich sie verweisen kann.
Kasperd

1

Wenn Sie DDoS-Angriffen ausgesetzt sind, kann dies Ihrem ISP am meisten helfen. Wenn der ISP jedoch keinen DDoS-Schutz bietet, ist es sehr wahrscheinlich, dass Sie bis zum Ende des Angriffs außer Betrieb sind. Normalerweise sehen sie die angegriffene IP-Adresse und machen das Netzwerk auf ihrem Upstream-Router ungültig. Wenn Sie nicht viel Verkehr haben, gibt es viele Online-Dienste für den DDoS-Schutz, bei denen Ihr Verkehr umgeleitet, gefiltert und an Ihren Server zurückgesendet wird.


-1

Wir haben die gleiche ähnliche Situation vor. Nachfolgend sehen Sie, was wir getan haben.

Stecken Sie zuerst das Netzwerkkabel von Ihrem Server aus. Überprüfen Sie jetzt, ob Ihre Serverdienste wieder normal funktionieren, indem Sie den Systemmonitor und den Task-Manager anzeigen. Wenn nicht, scannen Sie Ihren Server mit Malwarebytes-Software, um sicherzustellen, dass Ihr Server gereinigt wird. Dieser Schritt stellt normalerweise sicher, dass der Server, von dem die Verbindung getrennt wurde, wieder normal ist.

Haben Sie eine Firewall installiert? Wenn ja, haben Sie das Abonnement verlängert? Stellen Sie sicher, dass Sie die IPS-Aufschaltungsfunktion in der Firewall aktivieren. Allein durch die Erneuerung des Firewall-Abonnements löste sich unser DDOS-Angriff.

Wir haben erfahren, dass wir das Sicherheitsabonnement erneuern sollten (z. B. Firwall oder Antivirus) und es nicht leicht nehmen sollten. DDOS-Angriffe finden täglich statt und können auch kleinen Unternehmen passieren. Hoffe das hilft.

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.