Apache-Server vor zu vielen Zugriffen schützen

  • Hallo,


    ich habe heute (ca. 18:00) wieder Probleme mit der Erreichbarkeit der Webseiten. Und zwar greifen zu viele IPs auf meinen Server zu. Ich habe gegen zu viele Zugriffe von einer IP ein Anti-DDoS-Skript laufen, allerdings kommen jetzt die Anfragen alle von unterschiedlichen IPs (wobei oft nur der letzte IP-Block unterschiedlich ist). Durch diese vielen permanenten Anfragen geht natürlich der Apache-Server in die Knie. Allerdings sagt "top", dass keine Systemauslastung vorhanden ist - alles "normal".


    Wie kann man so etwas zukünftig verhindern? Oder ist mir das als kleiner vServer-Betreiber überhaupt nicht möglich solche Szenarien zu verhindern? Danke vielmals für eure Hilfe!

  • Du blockst Leute die ganz normal auf deinen Server zugreifen? Passe doch dein Skript so an, dass du gleich z.B. /16 blockst. Damit erreichst du auch benachbarte IP-Adressen.


    Wenn dein Server in die Knie geht, aber laut top das System keinerlei Auslastung hat, dann hast du noch Resourcen frei. Hast du die Konfiguration des Webservers an die deines Server angepasst oder hast du ein Standard-Setup von der Distribution am Laufen?

    "Security is like an onion - the more you dig in the more you want to cry"

  • Nein, ich blocke IPs, die unnatürlich viele Verbindungen aufbauen. :) Und ganze Blöcke mag ich auch nicht blocken, da viele Unschuldige auch darunter seien würden. Es ist einfach kein System zu erkennen.


    Die Konfiguration des Webservers habe ich bereits angepasst. Ich verwende das worker_module und habe die Werte versucht entsprechend meiner Serverleistung anzupassen:

    Code
    <IfModule mpm_worker_module>
        ServerLimit              25
        StartServers             10
        MinSpareThreads          75
        MaxSpareThreads         250
        ThreadLimit              64
        ThreadsPerChild          32
        MaxClients              800
        MaxRequestsPerChild   10000
    </IfModule>


    Ich möchte auch nicht, dass der gesamte Server ausgelastet ist, es sollen immer noch Ressourcen für andere Dienste zu Verfügung stehen. Gibt es eine Formel/etc. mit der man die beste Konfiguration für das worker_module eruieren kann?


    Danke für deine Antwort, vmk. :)


    EDIT: Ich besitze einen vServer L und apache buddy sagt das:


    Also kann ich ruhig noch hochschrauben, sehe ich das richtig? Nur wo ist es sinnvoll herum zu drehen? :S

  • Was machst du mit dem restlichen Speicher? Wie gut ist der PHP-Cache ausgelastet? MySQL läuft da auch noch "irgendwie" mit beim Ausliefern von Webseiten?


    Ein Problem könnte u.a. sein, dass du "nur" 2 CPU zur Verfügung hast.

    "Security is like an onion - the more you dig in the more you want to cry"

  • Ja, MySQL läuft auch noch. Mit dem restlichen Speicher muss PHP, IMAP, SMTP, FTP und sonstiges "Kleinvieh" versorgt werden.


    Habe gerade im Apache-Error-Log gesehen:

    Code
    [error] server is within MinSpareThreads of MaxClients, consider raising the MaxClients setting
    [error] server reached MaxClients setting, consider raising the MaxClients setting