Wie sichert ihr eure ganze Server?

  • Ich komm bei den error_page bei nginx einfach nicht weiter, bräuchte da mal hilfe :

    Ich habe einen einen Ordner namens error_pages unter /usr/share/nginx/html/ erstellt, error_pages enthält die HTML-Seiten der Fehlerseiten und ein Unterordner Namens files wo sich css und paar Bilder darin befinden.

    Code
    error_page 503 /maintenance_on.html;
     location /maintenance_on.html {
     root /usr/share/nginx/html/error_pages;
     #internal;
    }

    Jedoch ist es so dass die Seite zwar angezeigt werden die Dateien (css und Bilder) jedoch nicht obwohl ich internal ausgeschaut habe, die sourcen habe ich mit ./files/style.css zB eingebunden, passiert aber nix, ich Internet habe ich viele Beispiele gesehen aber keins was so wirklich funktionieren wollte :/


    Was mache ich hier falsch?

    Danke im voraus.

    EDIT: Ich habe jetzt einen Weg gefunden womit es sogar mit internal funktioniert ich habe allen Dateien die eingefügt werden sollen einen einmalige Zeichenkette voran gehängt zB. 7pKRF5zUzzxcVJ3M-style.css, 7pKRF5zUzzxcVJ3M-favicon.ico usw.

    Code
    error_page 503 /503.html;
     location = /503.html {
     root /usr/share/nginx/html/error_pages;
     internal;
    }
    
    location ~ 7pKRF5zUzzxcVJ3M {
     root /usr/share/nginx/html/error_pages/files;
    }

    Hier einen weiteren location block hinzugefügt der auf diese Zeichenkette prüft und dann den ordner files mit einbindet, durch diese Zeichenkette will ich verhindern dass die Regel auf andere Dateien im System angewenden wird.

    Im HTML dann so eingebunden:

    <link type="text/css" rel="stylesheet" href="7pKRF5zUzzxcVJ3M-style.css" />

    Funktioniert einwandfrei, vielleicht nicht die schönste Art aber funktioniert, jedenfalls bis ich eine schönere gefunden habe :)

    ┌П┐(◉_◉)┌П┐

    Edited once, last by TeRRible__KHONS (May 28, 2020 at 7:18 PM).

  • Nabend,

    So ich will mich bei allen Teilnehmern nochmals bedanken für Ihre Hilfe und Tipps (kommt vielleicht nochwas :D )

    Der Server ist aufgesetzt in der Cloud und rennt, performance ist besser als auf dem Root, jetzt kann ich wenigsten Snapshoten wenn größeres bevor steht und ein Dilemma vermeiden.

    Die Daten per scp waren schnell drüben, rennt :)

    ┌П┐(◉_◉)┌П┐

  • Hallo,

    Ich habe ein Problem ich habe folgendes in nginx drin um ein Bereich Passwort geschützt zu machen:

    Code
    # password-protection
    location /cms/acp {
             auth_basic "Restricted Area";
             auth_basic_user_file /etc/nginx/.htpasswd;
    }

    Das funktioniert soweit auch wenn ich https://domain.tld/cms/acp aufrufe kommt der Dialog für das Passwort, wenn ich jedoch https://domain.tld/cms/acp/index.php?login/ aufrufe wiederrum nicht.

    An was liegt das ?

    Dankesehr :)

    ┌П┐(◉_◉)┌П┐

  • Ja dieser ist direkt drunter:

    Wie muss ich das jetzt hier handhaben? Die Protection unter den php-block oder wie? :/

    ┌П┐(◉_◉)┌П┐

  • Nabend,

    Ich habe mir nur aus Jucks mal die error.logs angeschaut und von fpm folgenden Eintrag gefunden:

    [pool USER] server reached max_children setting (20), consider raising it

    Das ist der pool wo das Forum drauf läuft und da dort immer viele Benutzer online sind kommt es wahrscheinlich zum der Überlastung.

    Ich habe aktuell nur max_children auf 20 gestellt und ondemand.

    Sollte ich hier vielleicht etwas ändern und wenn ja kennt jemand einen guten Mittelwert? (8vCPU / 16 RAM)

    PS. Bisher ist fpm nocht nicht gecrasht war nur ein Warn.

    ┌П┐(◉_◉)┌П┐

  • Hab jetzt auf dynamic umgestellt und alles mal passend angepasst, mal sehen obs jetzt stabil bleibt, bisher keinen probs :)

    EDIT:

    Hatte aber noch ein Warn:

    2020/05/31 08:54:56 [warn] 58263#58263: *186721 an upstream response is buffered to a temporary file:

    Hab jetzt mal folgende Werte angepasst (siehe BEFORE)

    Code
    # BEFORE fastcgi_buffers                        8 16k;
    fastcgi_buffers                 32 32k;
    fastcgi_buffer_size             32k;

    Sollte das so passen? :/

    EDIT: Auch mit der änderung oben hab ich noch immer einen warn:

    *188772 an upstream response is buffered to a temporary file

    ┌П┐(◉_◉)┌П┐

    Edited 2 times, last by TeRRible__KHONS (May 31, 2020 at 9:22 AM).

  • Sollte das so passen?

    dazu müsstest du deine access.log auswerten, wobei du die Warnung ja immer wieder kommen könnte z.B. wenn du größere Dateien hoch lädts usw..

    https://gist.github.com/magnetikonline/11312172

    Wenn es dich stört dass deine Log voll gespamt werden, setz den php error_level auf error und nicht auf warn, die Warnungen kann man getrost ignorieren. :)

  • scy Danke für deine Antwort, ich hatte den Beitrag auch schon gelesen, die Auswertung der Log von gestern ergibt:

    Code
    #awk '($9 ~ /200/) { i++;sum+=$10;max=$10>max?$10:max; } END { printf("Maximum: %d\nAverage: %d\n",max,i?sum/i:0); }' access.log.1
    Maximum: 1723
    Average: 840

    Aktuelle Einstellung:

    Code
    # BEFORE fastcgi_buffers                        8 16k;
    fastcgi_buffers                 32 32k;
    fastcgi_buffer_size             32k;

    Was aber nicht was ich mit der Ausgabe von Oben hier bei buffers einstellen soll.

    PS. Effektiv sind meine Einstellung in nginx error_log auf warn, vielleicht sollte ich auf error stellen :D

    Dachte nur das wäre jetzt ein Problem mit dem buffers? :/

    Das max_children hab ich jedenfalls jetzt schon mal gelöst (hoffentlich) das war schwerwiegender.

    ┌П┐(◉_◉)┌П┐

  • Nabend,

    Hat jemand Erfahrungen mit NGINX rate limiting gemacht? 1r/s ist wahrscheinlich viel zu wenig für das Forum da hier wahrscheinlich per AJAX oder ähnlichem viele Requests im Hintergrund laufen.


    Wer nutzt das ? :)

    ┌П┐(◉_◉)┌П┐

  • Ich wollte in Cloudflare endlich diese Captcha Challanges abschalten (Ländersperre), hatte ich vor paar Jahren eingeführt um diese Botnetze abzuhalten (hatten DDoS), dies hat auch wunderbar geklappt.

    Das nervt aber jeden und wollte das nun abschalten und deswegen trotzdem den Server etwas absichern und die Requests bisschen limitieren.

    ┌П┐(◉_◉)┌П┐

  • Xopez Hab mir das jetzt mal angeschaut sind paar Dinge die mir dadrin nicht gefallen:

    • Es nimmt eigenständig konfigurationen in den konfigurationen vor.
    • Ist etwas überladen und geht bestimmt auch die Performance :)

    Ein simples req_limit würde auch schon reichen, Cloudflare würde (ohne diese Länderbeschränkung) das meiste trotzdem noch mit Captcha belegen wenn Bösartig.

    Das Problem ist ich weiß nicht wieviele REQUEST's die Forensoftware so per Sekunde macht im durchschnitte, nicht das dann die hälfte nicht mehr funktioniert weil zuviel abgewiesen wird.

    ┌П┐(◉_◉)┌П┐

  • Du hast meine Frage nicht wirklich beantwortet.

    Geht es dir darum, generell Requests einer Person für einen gewissen Zeitraum zu limitieren?

    Geht es dir darum, bestimmte Personen/Bots/etc. auszusperren?

    Oder geht es dir um etwas anderes?

    Die Anzahl der Requests siehst du in deiner access.log.


    P.S.: Ich bin definitiv kein Fan von einem globalen Blocking über die gesamte Seite hinweg. Da kannst du sehr schnell sehr viele False Positives bekommen und damit eine nicht mehr funktionierende Website.

    Wenn es dir um die Sicherheit geht, dann limitiere maximal den Login/die Registrierung/den Administrationsbereich. Alles andere hat weniger mit Sicherheit zu tun als viel mehr mit dem Versuch, eine DoS-Attacke abzuwehren. Und wenn die bereits soweit kommt, dann ist es oftmals sowieso schon vorbei. Zumal Hetzner selbst einen DDoS-Schutz implementiert hat.

  • Geht es dir darum, generell Requests einer Person für einen gewissen Zeitraum zu limitieren?

    Geht es dir darum, bestimmte Personen/Bots/etc. auszusperren?

    Requests einzelner IP's was ja Bots beinhaltet (der gleichen IP).

    Zumal Hetzner selbst einen DDoS-Schutz implementiert hat.

    Ja ich bin bei Hetzner, aber weiß nicht ob das greift wenn die IP hinter Cloudflare steckt. Cloudflare wehrt ja auch einen Teil ab, aber damals hat Cloudflare da nicht wirklich geholfen außer eben die Captcha-Challenge.

    ┌П┐(◉_◉)┌П┐

  • Dann weiß ich ehrlich gesagt nicht, wie ich dir helfen soll. :)

    Zu deiner Frage: Ich nutze es, primär um automatisierte Angriffe auf WordPress-Loginformulare zu limitieren.

    Und natürlich greift der Schutz von Hetzner noch, denn in deren Netzwerk kommt die Anfrage ja auf jeden Fall an, egal ob Cloudflare davor geschaltet ist oder nicht. Ob nun Angreifer > Cloudflare > Hetzner > Server oder Angreifer > Hetzner > Server, als Hoster ist Hetzner immer involviert.

Participate now!

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