DDoS abgewehrt… mit Varnish und nerviger Musik

Die Schachburg wurde in der Nacht zum 23. Juni zum Opfer eines DDoS-Angriffs, siehe hier. Als ich meine Hilfe anbot und als ersten Schritt die Sperrseite von DomainFactory durch diese Seite ersetzte, zog ich die Aufmerksamkeit des Angreifers auf mich. Mit dem übermütigen Ziel, mir zu beweisen, dass er nicht nur Shared-Hosting-Angebote, sondern auch einzeln genutzte Server lahmlegen könne, griff er daraufhin das Freiwuppertal-Forum an…

Lächerlich.

…scheiterte allerdings am Varnish-Cache, der den Apache-Server zwar durchaus an seine Leistungsgrenze brachte, aber irgendwelche Folgen oder Abstürze verhinderte. Statische Ressourcen, die den Großteil jeder Seite ausmachen, werden hier sowieso von nginx geliefert.

Ein Blick auf die Ausgabe von „varnishlog“ und „varnishtop“… die „Angriffe“ waren eigentlich recht simpel. Der Möchtegern-Botnetbesitzer hatte auf einer international besuchten und anscheinend recht beliebten Erotikwebseite 1-Pixel-iframes von Forenbeiträgen aus der Schachburg und dem Freiwuppertal-Forum eingebaut. Daher wiesen alle Anfragen denselben Referer auf – eben diese Seite. Eine Zeile VCL genügte, um das Problem loszuwerden.

Wieder ein Blick ins varnishlog: Noch immer kamen unglaublich viele Anfragen an, wurden aber direkt am Cache mit einer Fehlermeldung abgewiesen. Wie langweilig. Irgendwie wollte ich das Problem an der Quelle lösen, nicht mit simplen Fehlermeldungen. Der Angreifer sollte einen Anlass dazu bekommen, die iframes wieder auszubauen; der idiotisch ignorante Hoster, bei dem die Seite registriert ist, war nicht als Anlaufpunkt geeignet.

Also ging es darum, die Besucher zu verärgern, Kunden zu vergraulen. Wenn niemand mehr die Seite besucht, ist die Gefahr gebannt; wenn der Admin die iframes ausbaut, um das zu verhindern, ist für mich ebenfalls alles in Ordnung. Was wäre da besser geeignet, als nervige Musik abzuspielen? Sicherlich nicht das, was die Konsumenten in diesem Moment hören wollten.

Nach einer Weiterleitung aller ungewünschten Gäste auf eine Webseite voller Bilder (auch durch lange Ladezeiten wird man Besucher los), die noch dazu automatisch „Never Gonna Give You Up“ von Rick Astley abspielte, in älteren Browsern durch JavaScript-Tricks das Fenster auf dem Bildschirm herumspringen ließ und ein Schließen der Seite durch andauernde Dialogmeldungen mit dem Liedtext verhinderte, war ziemlich schnell Ruhe. 😉


Update/Anmerkung: Eine andere Methode, um solche Angriffe recht effizient zu stoppen, ist der „X-Frame-Options“-HTTP-Header. Das funktioniert allerdings nur, wenn die unfreiwilligen Angreifer einen aktuellen Browser installiert haben; in unserem Fall kamen auch einige Zugriffe von Smartphones und wahrscheinlich ein paar veralteten Browsern. Es sollte aber kein Problem sein, veraltete Browser am User-Agent zu erkennen und auszusortieren.