DDos Mitigation

  • In allen Locations. Ob das sinnvoll ist, weiß ich nicht. Auf jeden Fall sollte es in der location stehen, wo PHP konfiguriert ist.


    Alle Locations sind nicht sinnvoll. Vor allem / nicht, weil dann, wie ich bereits schrieb, auch z.B. Bild- und JS-Dateien mit einbezogen werden.

    • Official Post

    Hallo,

    sysctl-Konfigurationen¹ zur Abwehr

    die würde ich übrigens gesammelt in die Tonne treten. Die Kernel-Tunables sollten in Abhängigkeit einer bestimmten Notwendigkeit konfiguriert werden. Für 104% aller Systeme sind die Standardwerte die besten, andernfalls wären es nicht die Standardwerte. Ich habe die jetzt nicht im Detail geprüft, aber beispielsweise 10 Millionen Verbindungen in conntrack sind meines Erachtens zu viele und brauchen im Zweifel zu viel Kernel-Memory. SYN-Cookies sind ohnehin standardmäßig aktiv und die Deaktivierung von Sys-Rq hat mit DDoS nicht viel zu tun und fällt dir im Zweifel auf die Füße.

  • Gerade gesehen, dass die Konfiguration eh von meinem alten Server war, der zwar noch vor sich hin dümpelt, aber sonst nichts mehr weiter tut. Am neuen Server habe ich dahingehend gar nichts geändert.


    Zu den Limits in nginx: Folgende Konfiguration habe ich nun hinterlegt:


    Code: nginx.conf
    limit_req_status 429;
    limit_conn_status 429;
    
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
    
    # Do not wait for the client body or headers more than 5s (avoid slowloris attack)
    client_body_timeout 5s;
    client_header_timeout 5s;
    send_timeout 5;


    Code: server.conf
    location ~ \.php$ {
        include common/rate-limit.conf;
        include common/php.conf;
    }


    Code: rate-limit.conf
    limit_conn conn_limit_per_ip 45;
    limit_req zone=req_limit_per_ip burst=40 nodelay;


    Wobei ich den gesamten Location-Block von ganz unten nach ganz oben verschoben habe, um garantieren zu können, dass das auch als erstes ausgeführt wird und andere Location-Blöcke sich nicht vordrängeln. Gibt dazu auch ein nettes Tool, falls man sich nicht sicher ist: https://nginx.viraptor.info

  • Ich hab nun erstmal testweise das Cloudflare eigene Rate Limitting aktiviert.

    Im free Paket geht nur eine Regel. Meine schaut aktuell wie folgt aus:

    150 Anfragen pro 10 Sekunden, Blockieren für 1 Minute

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Ich hab nun erstmal testweise das Cloudflare eigene Rate Limitting aktiviert.

    Im free Paket geht nur eine Regel. Meine schaut aktuell wie folgt aus:

    150 Anfragen pro 10 Sekunden, Blockieren für 1 Minute

    Und funktioniert es gut? :)


    PS. Was wenn ein Benutzer (wie ich es gerne mal mache [Mauswheel klick) paar Fenster gleichzeitig schnell öffnet? Dann kommt man gerne mal auf 150 in 10 Sekunden wenn viele Requests gemacht werden. Wird man dann nicht gerne mal als Legitimer User geblockt ? :/

    ┌П┐(◉_◉)┌П┐

  • Und funktioniert es gut? :)

    Bis jetzt ja, ich hab mal Hanashi einen Apache bench drüber jagen lassen.

    Alle CPU's gingen so bis ca. 80-85%, danach griff es und war schlagartig wieder unten :)


    PS. Was wenn ein Benutzer (wie ich es gerne mal mache [Mauswheel klick) paar Fenster gleichzeitig schnell öffnet? Dann kommt man gerne mal auf 150 in 10 Sekunden wenn viele Requests gemacht werden. Wird man dann nicht gerne mal als Legitimer User geblockt ? :/

    Man muss bei der Anzahl schon ziemlich oft F5 spammen, damit es greift. Und wenn ist es sowieso nur eine Minute.

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Bis jetzt ja, ich hab mal Hanashi einen Apache bench drüber jagen lassen.

    Alle CPU's gingen so bis ca. 80-85%, danach griff es und war schlagartig wieder unten :)

    Und im Browser wurde mir entsprechend angezeigt, dass ich gesperrt wurde:

  • Und im Browser wurde mir entsprechend angezeigt, dass ich gesperrt wurde:

    Dazu noch gerne das:

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Bis jetzt ja, ich hab mal Hanashi einen Apache bench drüber jagen lassen.

    Alle CPU's gingen so bis ca. 80-85%, danach griff es und war schlagartig wieder unten :)

    Ja, klasse ich denke ich werde das auch mal ausprobieren hast bestimmt * als Rule angelegt (also dass es überall greift)?

    Man muss bei der Anzahl schon ziemlich oft F5 spammen, damit es greift. Und wenn ist es sowieso nur eine Minute.

    Das mag stimmen und wenn man Feedback kriegt von den User kann man immernoch hochschrauben, solange bei normalen Aufrufen nichts geblockt wird ist ja gut :)

    Und im Browser wurde mir entsprechend angezeigt, dass ich gesperrt wurde:

    Das war meine nächste Frage was einem angezeigt wird, danke :P

    ┌П┐(◉_◉)┌П┐

  • Ja, klasse ich denke ich werde das auch mal ausprobieren hast bestimmt * als Rule angelegt (also dass es überall greift)?

    Yes, wobei meine Seite ca. 50 Requests hat und beim WSC auch mal mehr sein kann. Kann sein, dass du es dort etwas erhöhen musst. Ist halt try&error :D

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Xopez ging ratz fatz :D und man ist auch schnell wieder entbannt, wenn es ein "Irrtum" war.

    hehe :D

    Wobei du schon ziemlich spammen musst :D


    und vielleicht muss ich das auch noch erhöhen ;)

    Ist halt erstmal zum testen

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Hatte es jetzt nur mit ab versucht :)

    Aber mit F5 eben getestet muss man schon 15-20x refreshen :D


    EDIT: denke dein Wert ist aber schon ein guter Anfang, bei einem großen Botnet wird ingesamt wohl nicht viel bringen aber besser als nix :P Und ist halt das gleiche wie nginx rates nur eben auf cloudflare ebene :)

    ┌П┐(◉_◉)┌П┐

  • EDIT: denke dein Wert ist aber schon ein guter Anfang, bei einem großen Botnet wird ingesamt wohl nicht viel bringen aber besser als nix :P Und ist halt das gleiche wie nginx rates nur eben auf cloudflare ebene :)

    Es gibt allerdings beim Abfangen einen ganz großen Vorteil: Nur Cloudflare hat beim Block den gesperrten Mehrtraffic und nicht der eigene Server (Origin).

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Sollte über die Firewall regeln gehen;

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Xopez wird mir angezeigt wenn ich es aktivieren möchte:


    Quote

    Rate Limiting für Ihr Konto aktivieren

    Die ersten 10.000 Anfragen sind kostenlos.

    0,05 $ pro 10.000 legitimer (nicht blockierter) Anfragen danach. Weitere Informationen

    Hinweis: Für blockierte Anfragen werden keine Gebühren erhoben.

    Das check ich jetzt nicht, dachte das komplett kostenlos, scheint aber nach 10.000 Anfragen dann zu kosten? :/

    ┌П┐(◉_◉)┌П┐

  • So lange die Requests nur den Webserver erreichen und keinen anderen Prozess, ist man schon einmal gut aufgestellt. Standardmäßig geht halt jeder Request an PHP und damit auch an MySQL weiter und das bringt im schlechtesten Fall den Server zum Rauchen. Wenn man die korrekten Limits für sich gefunden hat, könnte man auch noch den Einsatz von fail2ban erwägen.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!