PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Smarter Web: DDoS-/Web-Protection und Beschleunigung deiner Seite mit myracloud.com

with 18 comments

Gastartikel von Sebastian Bruckner

Hallo *, kurz zu meiner Person, meine Name ist Sebastian Bruckner, ich wohne in München und  beschäftige mich seit 7 Jahren mit dem Web- und PHP-Umfeld. Dies ist mein erster Blog-Artikel, bitte seht mir etwaige Anfängerfehler nach :-).

Wir (Soprado) haben das Produkt myracloud.com, entwickelt und sind am 01.11.2012 damit in die Beta-Phase gestartet. Ich stelle euch heute vor was myracloud bietet, wie es das umsetzt und wie myracloud.com euch das Leben leichter machen kann.

Was ist myracloud und bei welchen Problemen hilft es mir?

myracloud ist ein System, das deine Webseite vor Angriffen schützt und sie zusätzlich auch noch deutlich beschleunigt.

myracloud löst eine Vielzahl deiner alltäglichen Probleme als Programmierer bzw. Sysadmin, unter anderem:

  • Schutz vor DDoS-Attacken (smarte Filterung des Traffics)
  • Schutz der DNS-Server
  • Web Application Firewall (Schutz vor SQL-Injection, XSS und CSRF/XSRF uvm.)
  • Caching und CDN-Funktionalität
  • Sehr viel Bandbreite (dreistelliger GBit/s Bereich)
  • Übersetzung IPv6 <-> IPv4 in alle Richtungen und Konstellationen
  • Minimierung der Latenz durch AnyCast-Netzwerk, dadurch sehr hohe Ausfallsicherheit (komplett redundant in mehreren Rechenzentren)
  • Automatisierte OnPage  Optimierung (CSS-Compression, JS-Compression und Nachladen, Bilder verlustfrei optimieren)

Wie schützt myracloud meine Webseite?

myracloud implementiert eine Vielzahl von Schutzmechanismen um dein System zu schützen. Auf zwei gehe ich genauer ein und erkläre wie wir damit umgehen.

DDoS Protection am Beispiel einer DNS Amplification Attack:

Die derzeit häufigste DDoS-Attacke ist die DNS Amplification Attack. Hierbei wird mit relativ wenig Bandbreite des Angreifers sehr viel Bandbreite beim Opfer verbraucht und damit die Leitung „verstopft“, so dass das Opfer nicht mehr erreichbar ist. Ein Bot-Netz sendet kleine Anfragen an DNS-Server mit der IP des Opfers als Absender-Adresse. Die DNS-Server schicken somit die Antwort an die IP des Opfers mit einem 30 bis 50-fach größerem Datenpaket. Das bedeutet beispielsweise im optimalen Fall 100 MBit/s aus einem Bot-Netz erzeugen 5 GBit/s beim Opfer, was selbst Server, die mit 1 GBit/s angebunden sind, schnell überfordert.

Diese Angriffe sind für die meisten Webseiten-Betreiber sehr schwer abzuwehren, da sie nicht über die nötige Bandbreite und Hardware verfügen.

myracloud schütz indem wir den angreifenden Traffic bereits an den Border-Routern unserer Rechenzentren, welche mit einer Bandbreite im dreistelligen GBit/s Bereich angebunden sind, herausfiltern. Das bedeutet, der böse Traffic kommt erst gar nicht in das Netz des Rechenzentrums hinein und somit auch nicht zu euren Webservern.

Durch diese Architektur können wir alle bekannten DNS Amplification Angriffe abwehren und haben immer noch viel Kapazität für legitimen Traffic.

WAF (Web Application Firewall – Schutz vor SQL-Injection, XSS und CSRF/XSRF uvm.):

Sowohl bei SQL-Injection als auch bei XSS ist die Ursache des Problems Input ungefiltert zu verwenden. Obwohl die meisten Entwickler natürlich bereits penibel Input validieren, gibt es immer wieder Lücken bei welchen die Prüfung fehlt. Eine dieser Lücken zu finden reicht aus, um erheblichen Schaden anzurichten. Die sicherste Lösung dieses Problems ist HTTP-Requests mit versuchten Angriffen direkt abzulehnen und nicht zu verarbeiten.

myracloud untersucht optional jeden Request mit mod_security auf bekannte Angriffsarten und blockt den Request bei positivem Befund. Außergewöhnliche Byte-Sequenzen können mit mod_security auch geblockt werden. Testen kann man das ganz einfach mit z.B. http://soprado.com:

Beispiel SQL-Injection:
http://soprado.com?q=‘;delete from user;

Beispiel XSS:
http://soprado.com?q=</script><script>alert(‚foo‘);</script>

Warum wird meine Webseite schneller?

Optimierung des Latenz durch Anycast-Netzwerk

Anycast bedeutet, dass geografisch verteilte Server über ein- und dieselbe IP-Adresse angesprochen werden. Vereinfacht gesehen wird ein Datenpaket von den Routern per BGP-Protokoll an den netzwerktopologisch am günstigsten zu erreichenden Server geroutet und von diesem bearbeitet. Sollte ein Server oder Rechenzentrum nicht erreichbar sein, werden die Datenpakete automatisch über die nächstbeste Route an einen verfügbaren Server geleitet.

Durch dieses Verfahren erhöht man die Ausfallsicherheit, verteilt Lasten und optimiert die Latenz. Da myracloud vollkommen redundant funktioniert, ist die Ausfallsicherheit sehr hoch.

Caching

Das Cache-Modul von myracloud wertet bei jedem Request die HTTP-Header wie Expires und Cache-Control aus. Wenn ein Objekt gecached werden kann, speichern wir es und liefern es bei der nächsten Anfrage in wenigen Millisekunden beschleunigt aus, ohne dass der Nutzer dazu etwas konfigurieren muss. So kommt Content deutlich schneller beim Besucher an.

Zusätzlich können im myracloud-Interface weitere Caching-Regeln hinterlegt werden. Z.B.: Alle Responses mit den Pfad /images/* sollen immer eine Stunde gecached werden.

Über unseren Webservice können unsere Caches explizit gecleared und refreshed werden. Ein Anwendungsbeispiel ist, dass man in seiner Blogsoftware bei jedem neuen Kommentar einen „Clear cache for X“-Aufruf startet und somit der Cache ausschließlich on-demand neu aufgebaut wird.

Wie kann ich myracloud für meine Site nutzen?

Wir laden die Leser von PHPGangsta exklusiv ein myracloud zu testen.

Ihr könnte euch mit dem Voucher „phpgangsta“ unter https://myracloud.com kostenlos registrieren.

Um myracloud „scharf“ zu schalten müsst ihr nach der Registrierung und Konfigurierung eurer Seite nur die Authoritative Nameserver eurer Domain umstellen.

Ihr könnt sofort und ohne Aufwand eure Seiten in der myracloud testen indem ihr einfach [meinewebseite.de].myrademo.net aufruft.

Zum Beispiel:

www.spiegel.de:
Google PageSpeed Score 75/100

Apache Benchmark (ab -n 10000 -c 100 -H ‚Accept-Encoding: gzip‘ http://www.spiegel.de/):
Requests per second: 677.78 [#/sec] (mean)
Time per request: 147.541 [ms] (mean)
Time per request: 1.475 [ms] (mean, across all concurrent requests)
Transfer rate: 25722.90 [Kbytes/sec] received

www.spiegel.de.myrademo.net:
Google PageSpeed Score 88/100

Apache Benchmark (ab -n 10000 -c 100 -H ‚Accept-Encoding: gzip‘ http://www.spiegel.de.myrademo.net/):
Requests per second: 2937.74 [#/sec] (mean)
Time per request: 34.040 [ms] (mean)
Time per request: 0.340 [ms] (mean, across all concurrent requests)
Transfer rate: 111217.94 [Kbytes/sec] received

Willkommen im Smarter-Web! 🙂

Written by Sebastian Bruckner

November 26th, 2012 at 9:47 am

18 Responses to 'Smarter Web: DDoS-/Web-Protection und Beschleunigung deiner Seite mit myracloud.com'

Subscribe to comments with RSS or TrackBack to 'Smarter Web: DDoS-/Web-Protection und Beschleunigung deiner Seite mit myracloud.com'.

  1. Ich schmeiß das mal als Schnellschußfrage rein: Inwiefern grenzt sich myracloud von Cloudflare ab (mal abgesehen vom besseren Deutsch, das is bei CF immer wieder spannend :D)?

    KingCrunch

    26 Nov 12 at 09:55

  2. Der Ansatz von myracloud ist stärker ausgerichtet an den tatsächlichen Bedürfnissen moderner Web-Applikationen wie z.B. dynamisches Caching einzelner HTML-Fragmente („Kacheln“).

    Dadurch können Shops deutlich schneller ausgeliefert werden (Warenkorb und Produktseiten sind separat gecached und können jederzeit kombiniert werden).

    Client-seitig beschleunigt myracloud Websites derzeit wie keine andere uns bekannte Technologie. Einfach mal die eigene Seite mit .myrademo.net ausprobieren und im Chrome auf DOMContentLoaded achten.

    Wir werden auch noch Komponenten releasen, die man z.B. in Symfony2 oder ZF2 zum Ansteuern des myracloud-APIs nutzen kann.

    Zusätzlich kommen bei myracloud noch Features wie Versionierung von Konfigurationen, Rollen usw. damit Unternehmen jeder Größe unkompliziert mit myracloud arbeiten können.

    Sascha Schumann

    26 Nov 12 at 10:21

  3. Die Nähe der Server zum Besucher ist übrigens auch wichtig. Bereits jetzt haben wir drei Rechenzentren in .de und werden Metropolen wie Berlin/HH und MUC auch noch mit separaten RZ versorgen. Dadurch ist der Content schneller beim Nutzer als bei Anbietern, die nur ein RZ in Deutschland haben (wie die erwähnte amerikanische Firma).

    Sascha Schumann

    26 Nov 12 at 10:43

  4. Frage 1:
    „SSL-Verschlüsselung mit eigenem Zertifikat (z.B. OV oder EV)“
    Heisst das, hier gibt es kein Zertifikat dabei? Oder bedeutet es, das SSL gar nicht möglich ist (auch wenn man eigene Zertifikate verwendet)?

    Frage 2:
    Was kostet es nach der Betaphase? Gerade für nicht kommerzielle bzw. kleine Projekte wichtig zu wissen.

    Wird es (wie bei CloudFlare) einen „Free“ Tarif mit eingeschränkten Features geben oder zumindest einen der günstiger ist als Advanced?
    Ich behaupte das 90% meiner KMU Kunden nicht bereit sind 99€/Monat zusätzlich auszugeben. Bitte nicht falsch verstehen, aber für das Geld könnte ich mir auch min. 1 Root Server dazustellen. Für die meisten meiner Projekte wäre das Performance Argument ausschlaggebend, nicht die Security Maßnahmen (jedenfalls halte ich es für sehr grenzwertig, sich bei Validierung auf einen externen Dienstleister zu verlassen), wenn man das also einzeln buchen könnte wäre das interessant.

    Frage 4:
    Gibt es neben den Apache Benchmark Werten auch schon Studien eines Kunden, der externes Tracking einsetzt und reale Zahlen nennen kann?

    Frage 5:
    Aus SEO Sicht finde ich das gruselig, das ihr beliebige Domains spiegelt (Duplicate Content, da keine rel=“canoncical“ gesetzt werden und auch keine Änderung auf „noindex,nofollow“!) – auch wenn das zugegebenermaßen ein nettes Testfeature ist.

    Nein, ich will nicht nur meckern 😉 das Angebot klingt interessant und ich habe mich auch schon fleißig durchgeklickt und Vergleichstest gemacht, aber ihr stellt das ja bewusst in der Entwicklerwelt zur Diskussion.

    Kevin

    26 Nov 12 at 13:57

  5. die fragen sind berechtigt und ich bin gespannt auf die antworten.
    gibt es howtos, die zeigen, wie man zb mit einem Oxid Shop arbeiten kann? Das würde mich zb brennend interessieren, also wie genau wird was wo wie lange gecacht und wie kann ich Einfluss darauf nehmen.

    micha

    26 Nov 12 at 14:11

  6. Hi Kevin,

    Frage 1:
    SSL-Verschlüsselung ist selbstverständlich möglich. Du kannst deine eigenen Zertifikate bei myracloud.com hochladen. Zusätzlich können wir komplett das SSL-Management übernehmen, d.h. wir kümmern uns automatisiert um die Zertifikate.

    Frage 2:
    Auch für dieses Kundensegment wird es ein attraktives Pricing geben, wir freuen uns dazu über Feedback. Insbesondere wollen wir SSL ohne Zusatzkosten anbieten, das bedingt aber jeweils eine dedizierte IP, was mit Kosten verbunden ist.

    Frage 4:
    Wir messen die Kundensites aus verschiedenen Locations und können dabei beobachten, dass die Ladezeit deutlich verbessert wird. Da es sich dabei um kundenbezogene Auswertungen handelt, können wir konkrete Daten momentan leider noch nicht veröffentlichen.

    Frage 5:
    Unsere robots.txt verbietet sämtliches Indexing, siehe z.B.: http://www.spiegel.de.myrademo.net/robots.txt

    Sebastian Bruckner

    26 Nov 12 at 14:19

  7. Hi micha,

    alle Webanwendungen die korrekte Cache-Headers senden werden Out of the Box unterstützt. D.h. in deinem Beispiel werden die Resourcen solange gecached, wie es Oxid uns über die Cache-Header mitteilt.

    Zusätzlich kann man, wie oben beschrieben, weitere Caching-Regeln explizit konfigurieren (inkl. deren TTL).

    Der Cache lässt sich entweder über das Web-Frontend oder über unsere HTTP-API auch explizit clearen.

    Howtos für verschiedene Systeme sind eine gute Idee!

    Sebastian Bruckner

    26 Nov 12 at 14:36

  8. Danke für die schnelle Antwort Sebastian!

    Okay, robots.txt habe ich übersehen, sehr vorausschauend!

    Bzgl. des Pricings müsstet Ihr IMO mit bekannten Anbietern mithalten. Tendenziell wäre mir ein deutscher Anbieter lieber, aber das Kosten-Nutzen Verhältnis sollte mal konkurrenzfähig sein.

    Das die Ladezeiten besser sind, davon gehe ich aus 😉 Dennoch wären anonymisierte Berichte wirklich interessant, Messungen mit Apache Benchmark sind nur bedingt aussagekräftig.

    Und Frage 3 hatte ich wohl beim ersten Posting vergessen 😉 also:
    Gibt es die Möglichkeit CSS/JS Minifier on the fly einzuschalten? Auf Eurer Webseite steht „Optimierung von JS/CSS“. Ich habe gesehen, das ihr die script und link Tags rausschmeisst und dynamisch macht, konnte aber bei Anzahl der Requests und deren Antwort-Größe keine Veränderung feststellen. Ist das auf der Demo einfach aus?

    Kevin

    26 Nov 12 at 15:06

  9. Servus,

    wenn Sie auf Anbieter wie Akamai anspielen, dann können wir problemlos mithalten; wir sind günstiger, obwohl wir zeitgemäßere Technologie bieten.

    Auf myrademo.net ist Optimierung von JS aktiv, das bringt unseren Messungen nach den meisten Sites einen deutlich Zugewinn. Durch das Zusammenfassen von CSS gibt es insb. durch Charset-Direktive etc. teilweise Probleme, deswegen ist das deaktiviert. Minifying könnten wir noch machen, durch das gzip’en der Inhalte verpufft der Effekt aber größtenteils.

    Sascha Schumann

    26 Nov 12 at 15:27

  10. Wie sieht bei euch die Internationale Anbindung aus? Seiten die wir betreuen bekommen auch relativ viel Traffic aus Asien und den USA – Gibt es da von eurer Seite aus schon Planungen oder habt ihr sogar schon Server im Ausland?

    Bernd

    26 Nov 12 at 15:36

  11. Hi Bernd,

    USA ist gestartet (Westküste), Asien folgt.

    Viele Grüße

    Sebastian Bruckner

    26 Nov 12 at 16:02

  12. @Sascha Schumann

    Die 2-4 ms merkt man bei Websites definitiv nicht, bei Gameservern ist das schon deutlich spürbarer. Interessanter wird es über Landesgrenzen, Österreich, Polen, Frankreich, da zahlt es sich aus nicht am NIX zu hängen sondern ggf. in BIX für Polen.

    netzwerker

    27 Nov 12 at 16:05

  13. Also die Geschichte mit Symfony2 und damit die Möglichkeit zum direkten Ansprechen der API, vorwiegend zur expliziten Cache Löschung, hört sich sehr interessant an.

    Master B.

    28 Nov 12 at 08:35

  14. Bei meinem Test mit meiner Webseite wird im Header folgendes zusätzlich eingefügt:

    Schätze mal, dass hier noch ein Bug in der Optimierung vorhanden ist.

    Lukas Blatter

    28 Nov 12 at 09:20

  15. Da sind die HTML Tags nicht mitgekommen:

    <link id="myra0"></link><link id="myra1"></link>

    Lukas Blatter

    28 Nov 12 at 09:21

  16. Hi Lukas,

    danke für die Info!

    Sebastian Bruckner

    28 Nov 12 at 13:09

  17. Na, da habt ihr euch ja eine wichtige Referenz geangelt 😉

    https://twitter.com/PierreJoye/status/274841018543775744

    Ein Free-Account wäre mir auch wichtig, damit man im Zweifelsfall die Kosten drosseln kan, ohne gleich das ganze Lager räumen zu müssen (oder anders herum sich von unten an die Leistungen herantasten kann, die man benötigt, ohne gleich Pleite zu gehen ;))

    KingCrunch

    1 Dez 12 at 12:56

  18. ZetServers

    16 Nov 16 at 12:53

Leave a Reply

You can add images to your comment by clicking here.