Sven Rautenberg: 'kleinen' Denial of Service abfangen in PHP

Beitrag lesen

Moin!

Nicht wirklich. Dein Artikel ist a) veraltet, b) in technischen Details inkorrekt und c) an zentralen Stellen sachlich falsch.

könntest Du mir Verbesserungsvorschläge geben?

Aber sicher.

a) Siehe Erstellungsdatum des Artikels. Vielleicht sollte ich den Leser noch darauf aufmerksam machen.

Der Artikel ist ein Jahr alt. Dennoch liest er sich so, als wäre er aus dem letzten Jahrhundert, zumindest in einigen Passagen.

b) Wie äußert sich das?
c) Und wie äußert sich das?

Ich gehe mal von oben nach unten durch.

"Die Weiterentwicklung der Netzwerktechnologie führt automatisch zu Sicherheitslücken in den Systemen und Protokollen."

Ist das so? Allgemeinplatzalarm!

"Leider werden diese Lücken gerne von bösartig gesinnten "Benutzern" genutzt, um großflächigen Schaden anzurichten."

Es braucht keine Lücke irgendwo, um einen DoS-Angriff zu erleiden.

"Leider sind bestimmte DoS-Attacken, wie z.B. die SYN-Flood, auf welche wir weiter unten eingehen werden, nahezu unbezwingbar bzw. man kann sich nicht vor ihnen schützen."

SYN-Flood sollte jedem aktuellen IP-Stack lediglich ein müdes Lächeln abringen. Dieser Angriff ist heutzutage (und das auch bereits seit 1996, also bereits seit zehn Jahren) mit absolut simplen Mitteln problemlos abwehrbar (Stichwort: SYN-Cookies). An Sätzen wie diesem demonstrierst du deine Uninformiertheit und gibst veraltete und inkorrekte Information wider.

Natürlich gibt es DoS-Angriffe, gegen die man sich nicht so einfach wehren kann - aber SYN-Flooding ist ein ganz schlechtes Beispiel an dieser Stelle, weil es für das Gegenteil steht.

"Jeder Router kann nur eine endliche Datenmenge gleichzeitig bewältigen. Dies hängt von Equipment und Produktivität des Geräts ab."

Den zweiten Satz bitte streichen. Was ist denn bitte das "Equipment des Geräts"? Und die "Produktivität des Geräts"? Wenn schon, dann bitte von "Ausstattung und Leistungsfähigkeit" sprechen.

"Die Bandbreitenkapazitäten eines Netzwerks beginnen bei einer normalen LAN-Topologie bei dem 10BASE-T-Standard und gehen bis zum 100BASE-T-Standard (10Mbit/s und 100Mbit/s)."

Deine zwei genannten Standards sind bei weitem nicht die einzigen für LAN. Erstens gibts neben diesen zwei Twisted-Pair-Standards auch noch 10Base-2 mit ebenfalls 10MBit/s, zweitens heißt der schnellere Standard 100Base-Tx (es gibt auch noch Abarten wie 100Base-T4 und die Glasfaserstandards 100Base-Fx und -Sx), drittens gibt es mittlerweile auch Gigabit-Ethernet, und viertens läßt du das ganze Thema WLAN komplett außen vor, obwohl es selbstverständlich auch in das Obergebiet "LAN" gehört.

"Ein DoS wird hier herbeigeführt, indem das angreifende Programm die komplette Bandbreitenkapazität in Anspruch nimmt, dabei nutzt es Fehlkonfigurationen der Soft- und Hardware aus. Solange dieses Programm läuft, kann der Router keine weiteren Verbindungen mehr akzeptieren und friert demnach ein. Ein Systemadministrator kann diesen Vorgang durch Korrektur der jeweiligen Konfiguration beheben."

Dieser Abschnitt ist komplett falsch. Belegt wird die komplette Bandbreite einer Netzwerkverbindung oder einer Kollisionsdomain. Hierbei kommen natürlich "angreifende Programme" zum Einsatz (was ich aber so nicht formulieren würde), diese nutzen aber lediglich die ganz normale Netzwerkkonnektivität des Hosts, und KEINERLEI Fehlkonfigurationen von Soft- oder Hardware.

Betroffen ist von so einer Attacke auch nicht der Router, sondern eine oder mehrere der am Router angeschlossenen Netzwerkverbindungen, die den entstehenden Datenverkehr nicht schnell genug transportieren kann. Der Router friert NICHT ein, er ist lediglich gezwungen, Datenpakete unverarbeitet zu löschen und nach Möglichkeit den Sender darüber zu informieren.

Ein Systemadministrator kann gegen Bandbreitenflutung ohne Analyse des Angriffs NICHTS tun, er muß den Router oder eine vorgeschaltete Firewall so konfigurieren, dass alle Datenpakete, die dem Angriff zugeordnet werden können, unverarbeitet gelöscht werden, damit alle anderen Datenpakete, die dem regulären Betrieb zuzuordnen sind, wieder ohne Stau passieren können.

"Die Ressourcensättigung funktioniert auf ähnliche Weise, ist jedoch die beliebtere Methode und kommt häufiger zum Einsatz."

Das sehe ich anders. Bandbreitenflutung benötigt lediglich eine hinreichend große Zahl an Bots, die man auf das Ziel ansetzen kann, ohne dass man in irgendeiner Weise weitergehende Informationen über das Ziel besitzen muß. Typische Angriffsformen wären beispielsweise auch Distributed Reflected DoS.

Um per Ressourcensättigung erfolgreich anzugreifen, ist eine intensivere Analyse des Ziels notwendig. Der angesprochene SYN-Flood beispielsweise würde heute nur noch bei anfälligen Hosts zum Erfolg führen - und die sind selten. Und auch das Auffinden von CPU-lastigen oder speicherhungrigen Skripten auf dem Webserver ist keine simple Aufgabe, sondern erfordert Beschäftigung mit dem Ziel.

Der "Lohn" ist dann andererseits, dass ein Angriff vermutlich mit viel weniger Bot-Einsatz viel größeren Effekt auslösen kann (ohne Bots geht's so oder so nicht, wenn man nicht zurückverfolgt werden will).

"Die am simpelsten zu realisierende DoS-Attacke ist die Herbeiführung von System- und Anwendungsabstürzen. Bei diesen werden allseits bekannte Programmierfehler der Hard- und Software ausgenutzt, um so z.B. eine Endlosschleife im Programm auszulösen."

Wenn man weiß, dass das Zielsystem anfällig ist, stimmt diese Aussage. Das Problem ist nur, in einem ersten Schritt das System hinreichend exakt zu identifizieren und im zweiten Schritt passende Programmfehler aufzuspüren, um sie dann im dritten (und in der Tat nach diesen ganzen Vorarbeiten recht simplen) Schritt auszunutzen.

"Leider liegt dem Erfolg einer DoS-Attacke immer ein fehlerhaft konfiguriertes System zugrunde."

Wie ich oben schon ausführte: Diese Aussage ist falsch.

"Die einzige Möglichkeit, sich gegen eine solche Attacke zu schützen ist folglich, die Konfiguration der Geräte und Software kontinuierlich zu überwachen und mit aktuellen Patches der Anbieter zu aktualisieren."

Es ist sicher keine schlechte Idee, Updates einzuspielen. Hilft aber nicht gegen DoS.

"Wenn Sie wissen, dass ein Programm fehlerhaft programmiert wurde, können Sie dieses schlecht umprogrammieren, allerdings können Sie dies dem Entwickler mitteilen, damit sich dieser darum kümmern kann und das Problem mit dem nächsten Patch behoben wird."

Allgemeinplatzalarm! Wie soll man bitte wissen, dass ein Programm fehlerhaft programmiert wurde, um es dem Entwickler mitzuteilen? Das erfordert hohe Sachkenntnis, insbesondere bei der Analyse des Angriffs, und in der Regel auch das Vorliegen des Quelltextes des Programms, bzw. zumindest von dekompiliertem Objektcode. Wer das analysieren kann, kann das Programm dann wahrscheinlich auch selbst patchen oder umprogrammieren.

"Sie selbst können lediglich die Priorität der Prozesse verwalten. Dies können Sie sich zunutze machen, indem Sie die Priorität des Programms so niedrig stellen, dass es bei einem Absturz oder einer Endlosschleife nicht die Ressourcen aller anderen Prozesse in Anspruch nimmt."

Ein Programm, dass 200% des installierten virtuellen Speichers anfordert, wird für Speicherknappheit sorgen, egal mit welcher geringen Priorität es ausgeführt wird. Ein Programm, welches komplexe DB-Abfragen mit geringer Priorität ausführt - sowohl für den Angreifer, als auch für den legitimen Rest der Welt - ist de facto unerreichbar und daher geDoSt.

Überhaupt konzentrierst du dich in deinem Artikel viel zu sehr auf die These "DoS wird durch Programmfehler ermöglicht" - das ist durch die Praxis nicht gestützt.

"Die beste Erfahrung erhalten Sie zweifelsohne, wenn Sie selbst solche Angriffe programmieren, denn dann kennen Sie auch alle Tricks der Hacker und wissen um die Schwachstellen."

Allgemeinplatzalarm! Die Witwe Bolte, die es satt hat, dass Max und Moritz ihr ihre Hühner durch den Schornstein klauen, wird nicht dadurch besser in der Abwehr von Max und Moritz, indem sie selbst dem Lehrer Hempel seine Hühner klaut.

Und logischerweise lernt man auch nicht alle Tricks der Hacker kennen, indem man selbst mal etwas hackt. Alle Tricks lernt man kennen, indem man sich mit anderen Hackern austauscht, also "in der Szene" verkehrt. Oder eben generell gute Fachkenntnisse hat und reale Angriffe analysiert. Beides erfordert einen hohen Zeitaufwand und gutes, spezialisiertes Fachwissen - also etwas, was der gewöhnliche Systemadministrator in der Regel nicht hat.

"Stellen Sie jedoch niemals das System ab, denn dann hat der Hacker genau das, was er wollte - den vollständigen Absturz. Auch ein Neustart wird Sie nicht vor dem Hacker schützen."

Schon wieder so ein sinnloser und falscher Ratschlag. Wenn der DoS-Angriff Erfolg hat, dann IST der Server offline. Wenn man immerhin viel Traffic sparen kann, indem man den Server temporär vom Netz nimmt, weil er sowieso unerreichbar ist, und erforderliche fachkundige Hilfe in absehbarer Zeit nicht verfügbar ist, dann ist das lediglich eine simple und jederzeit durchführbare Maßnahme, die man auf jeden Fall ergreifen sollte.

Und selbstverständlich kann auch ein Neustart des Servers die Situation bereinigen helfen, mindestens für eine gewisse Zeit - das ist abhängig von der Art und Hartnäckigkeit des Angriffs.

Was man auf jeden Fall konstatieren muß: Wer Opfer eines DoS-Angriffs wird, sollte in jedem Fall darauf eingestellt sein, dass er der Gewalt weichen muß. Einen Kampf gegen möglicherweise sehr hohe Bandbreiten kann man nur gewinnen, indem man noch mehr Bandbreite (und passend konfigurierte Filter) aufbieten kann - für Geld ist alles zu kriegen, aber es ist die Sache möglicherweise nicht wert.

"Viele Hacker erstellen so genannte „Mutationen“ aus vorhandenen Programmen und ändern oft lediglich die Signatur oder das Ziel-Betriebssystem des Programms, und erhalten so ein völlig neues DoS-Programm, wogegen sich anschließend alle Systemadministratoren neu einrichten müssen."

DoS-Attacken gegen Programmfehler lassen sich nicht modifizieren, wie Viren oder Würmer. In diesem Sinnzusammenhang (insbesondere in der Einleitung zu den diversen Programmfehler-Angriffen wie SYN-Flooding) ist diese Aussage schlichtweg falsch. Zumal eine "Signatur" eines Angriffsprogramms bedeutungslos ist, entscheidend ist der übertragene Datenverkehr im Netzwerk, denn nur der richtet den Schaden an. Und dieser kann nicht beliebig modifiziert werden, sondern muß exakt auf die Lücke passen.

Ich nehme Deine kostbare Zeit nur ungern für so etwas in Kauf, aber wenn man sich schon dermaßen äußert, dann sollten gleich Erläuterungen folgen. Achte jedoch auf das "Zielgruppe: Fortgeschrittene". Ich wäre Dir sehr verbunden für die Hilfestellung :~)

Ich spare mir mal Kommentare zu den restlichen Detailabschnitten des Artikels. Unter dem Strich bleibt schon vom allgemeinen Teil nicht viel übrig (was mich selbst jetzt auch überrascht hat). Einstampfen, neuschreiben - würde ich jetzt sagen.

- Sven Rautenberg

--
My sssignature, my preciousssss!