Nachtrag:
Layer 7 Angriffe dürften sich auch mit mehreren Servern in einem Netzwerk durchführen.
Die häufigen 502 Bad Gateway deuten darauf hin, dass der nginx noch in der Lage war den Request zu verarbeiten, aber den dahinter liegenden Apache nimmer erreicht hat. Durch den Einsatz mehrerer Server und 2 nginx LoadBalancern sollte sich das Problem recht gut aufteilen lassen. Wenn Geld da ist wäre es sogar eine Möglichkeit das ganze in 2 Netze aufzusplitten und dann weiterhin mit der Heartbeat bzw. Multiple A Record bzw. Cloudflare Variante zu verbinden und dann entsprechend eine Last- und Bandbreitenverteilende Balancing Strategy aufzubauen. Das dürfte dann für die Angreifer auch schwer werden mit dem DDoS, einfach weil der Aufwand, die IP von den Servern dahinter (die eigentlichen Server sollten nur interne IPs bekommen und nicht von extern erreichbar sein) zu bekommen bzw. der Aufwand die LoadBalancer (vorallem wenn man von 2 LB pro Netz ausgeht) unereichbar zu groß wird (man braucht entsprechend mehr Bots weil man mehr Angriffspunkte hätte).
Ganz ausschließen lässt sich ein DDoS aber nie. Dafür ist das Netz einfach nicht ausgelegt.
Was man auch versuchen könnte wäre noch ein 3. Netz, welches nur über IPv6 erreichbar ist einzurichten. In D geht IPv6 mittlerweile einigermaßen und könnte dadurch auch die Angreifer stören (man braucht erstmal einen IPv6 fähigen Bot).
Ziel ist es auf alle Fälle bei einem Angriff einfach auf ein anderes System zu switchen, so dass sich die Downtime (welche es geben könnte - aber nicht muss) für die User so gering wie möglich zu halten, für die Angreifer aber jedesmal arbeit verursacht um die Bots umzustellen.
Schutz über Layer 7 sollte dabei mit einer Firewall wie iptables (oder besser einer Hardware Firewall) gut machbar sein, wenn man die Rules sehr gut definiert. Auch wenn iptables dabei besser auf einem System läuft, was über genug Resourcen verfügt, einfach weil der Kernel auch Resourcen benötigt bevor die Pakete überhaupt bei iptables ankommen (daher ist auch eine Hardware Firewall am besten).
* Saij kramt mal weiter in seiner Netzwerk-Wissens-Kiste aus der Berufsschule
Nochmal ich (ich schreib einfach mal frei meine Gedanken runter in der Hoffnung das sie vlt. helfen )
Angriff auf Layer 4:
Hier wird von den Angreifern darauf abgezielt, dass Netzwerk an sich zu überlasten. Es werden recht schnell kleine Pakete verschickt die dann die Router und Bandbreite überlasten. Dabei ist es egal ob es sich um korrupte Pakete oder richtige Pakete handelt (wobei die Korrupten um längen kleiner sind). Das ganze kann einfach nur durch den Provider gefiltert werden (massiver Ausbau der Bandbreite im eigenen Netz und Filteranlagen). Macht OVH ja auch so. Dauert bei denen nur etwas wenn man nicht den DDoS Schutz Pro hat (im Normalfall bis zu 2 Minuten bis die Filterhardware anspringt). Aber auch hier gibt es die Möglichkeit durch gute Steuerung die Last auf Layer 4 so gering zu halten, dass die Filteranlagen nicht anspringen und dennoch das Netzwerk kurz vor dem Server ausgehebelt wird. Aber da arbeitet OVH afaik noch dran um die Einstellung zu perfektionieren.
Angriff auf Layer 7:
Hier werden korrekte Pakete an den Server geschickt. Deshalb ist auch das Netz hier meistens nicht ausgelastet und es wird kein Angriff erkannt.
Aber da die Server die Pakete dann verarbeiten (besonders wenn dahinter eine Applikation hängt) werden die Ressourcen auf den Servern komplett verbraucht (deswegen ist kein Ping möglich und SSH auch nicht - keine Ressourcen mehr verfügbar).
Hier lässt sich über ein einfaches Clustering mit LoadBalancing abhilfe schaffen.
Mal ein kleines Strukturbeispiel (mal als Text - im Büro kann ich schlecht ne Netzwerkstruktur zeichnen
)
Es gibt einen LoadBalancer (meist eine spezielle Hardware um Ressourcen zu schonen). Dieser nimmt die Requests an und verteilt sie nach einem bestimmten Verfahren (bspw. RoundRobin oder direkte Aktivierung) auf 2 weitere Server. Auf diesen weiteren Servern läuft je ein nginx. Dieser Webserver ist sehr sehr sehr Ressourcen schonend wenn er nur als eine Art Proxy LoadBalancer läuft.
Hier können nebenbei auch Firewall Regeln aufgestellt werden oder andere, ressourcensparende Techniken verfügbar gemacht werden (bspw. Auslieferung statischer Dateien wie Grafiken oder JS oder CSS - Dinge die nicht vom Server interpretiert werden müssen). Durch E-Tags und Caching wird es hier nochmal ressourcenfreundlicher.
Diese beiden nginx Server leiten die Anfragen dann an eine Reihe von Apache Servern weiter. Die Apache Server sind von außen direkt nicht wirklich zu erreichen (bzw. nur wenn man wirklich mal was auf EINEM Server machen muss um Fehler zu finden). Selbst wenn jetzt eine Reihe von attackierenden Anfragen ankommen, so wird die Last auf alle Apache Server verteilt. Zuviel Last kann auch nicht erzeugt werden, weil sonst die Bandbreite wieder ausgereizt wird was zum Einsatz der Filterhardware führt.
Man kann das ganze auch einen Schritt kleiner machen und ohne die LB Hardware arbeiten (sollte aber 2 nginx haben die entsprechend per Heartbeat oder andere Überwachungssoftware die Domain auf den anderen Server schalten können).
Für die nginx reicht es wenn 2 recht starke Maschinen (oder 2 virtuelle, aber starke Maschinen) vorhanden sind (geht ja nur um die Ressourcen - und die sind auch bei einer Aufteilung von reellen Ressourcen vorhanden). Für die Apache und DB Server kann man dann ohne Probs komplett auf virtuelle Maschinen zurück greifen. Dort sollten dann die Ressourcen aber komplett abgeschottet sein zwischen den vServern. Damit lässt sich zwar eine Maschine abschießen, aber die anderen juckt das nicht weil ihre Ressourcen nicht betroffen sind. Vorallem kommt man immer noch auf die Hostmaschine drauf wenn die auch noch ein paar Ressourcen über hat
Soviel erstmal zu meinen Gedanken aus einer Raucherpause
Wenn mir noch was einfällt melde ich mich wieder
(Ich biete übrigens an, das ganze gerne mit dem Techteam in einer Skype Runde oder whereever zu diskutieren und auch weiter zu helfen - Angebot steht - wenn es angenommen wird einfach melden
)