Mehrere Fragen zu mod_evasive zur DDoS-Abwehr, speziell zu Lockfiles

D

Deleted member 11625

Guest
Ich habe mehrere Fragen zu mod_evasive, dem Apache-Modul zur DDoS-Abwehr. Zunächst einmal: Ich benutze den Apache 2 unter Debian 5.

Folgende Fragen habe ich:

1.) Wie stelle ich fest, ob meine Konfiguration angenommen wird? Diese habe ich unter /etc/apache2 in der Datei mod_evasive.conf abgelegt.

Aktueller Inhalt:
Code:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 43200
DOSCloseSocket On
</IfModule>

Funktioniert es überhaupt ganz ohne, also ohne diese Konfigurationsdatei? Ich frage deswegen, weil ich per htaccess derzeit einige Hosts manuell geblockt habe, die nun eigentlich - nach meiner Konfiguration - durch mod_evasive geblockt werden müssten (also nochmal zusätzlich), da diese ja auf den Webspace zugreifen (sehr oft und schnell). Vielleicht läuft das Modul derzeit mit Standardwerten?

2.) Warum werden die Lockfiles nicht gelöscht? Damit meine ich die Dateien mit "dos-*" im Namen, die unter /tmp abgelegt werden. Diese müssten doch nach der eingestellten Zeitspanne verschwinden, oder nicht?

3.) Was bedeutet der Inhalt der Lockfiles? Darin ist immer eine 4- bis 5-stellige Zahl.

4.) Sind die IPs, für die es Lockfiles gibt, alle gesperrten oder gibt es noch eine Liste im Speicher? Falls letzteres, kommt man an die Liste dran?

5.) Wie in meiner Konfiguration zu sehen, habe ich noch "DOSCloseSocket" auf "On" gesetzt. Gibt es den Befehl eigentlich? Ich habe zig Seiten gefunden, aber nur eine einzige dokumentiert diese Einstellung. Alle anderen erwähnen davon gar nichts.

Danke schonmal für eure Antworten!

EDIT: Die Punkte 1 & 2 haben sich nun erledigt, offen sind nur noch 3-5.
 
Last edited by a moderator:
Ich habe jetzt noch mal eine Folgefrage: Ich habe gerade festgestellt, dass unter "/var/lock/mod_evasive" auch ein Eintrag mit meiner eigenen IP ist. Trotzdem wurde ich nicht gesperrt, alle Seiten auf meinem Server sind für mich noch aufrufbar. Ich befinde mich aber in keiner Whitelist (habe ja eine dynamische IP). DOSBlockingPeriod steht auf 43200. Warum arbeitet mod_evasive nicht? Es werden ja scheinbar Attacken erkannt, aber offensichtlich nicht geblockt. Was kann der Grund sein?
 
dass unter "/var/lock/mod_evasive" auch ein Eintrag mit meiner eigenen IP ist.
Einer oder mehrere? Wie lautet der Eintrag?
Und hast Du überprüft ob die Zeit zwischen Log-Eintrag und nächsten Access bereits größer als die BLOCKING_PERIOD war?

huschi.
 
Es sind mittlerweile zwei Einträge, die heißen jeweils "dos-xx.xx.xx.xx" (wobei xx meine IP ist). Die Blockingzeit steht auf 12h und ich konnte nach wenigen Sekunden schon wieder zugreifen.

Ich habe jetzt mal ein bisschen recherchiert. Offensichtlich ist die 4-5-stellige Zahl in den Lockfiles die Prozess-ID des Apache-Prozesses, bei dem geblockt wird. Das erklärt, warum ich nie eine Sperre gesehen habe. Bedeutet aber auch, dass mod_evasive für mich absolut nutzlos ist. Bisher wurde keine DDoS-Attacke durch das Modul aufgehalten, auch keine kleine. Denn sobald der Apache-Prozess (nennt man in dem Fall vermutlich Childprozess) nicht mehr verwendet wird und ein neuer erstellt wird, gibt es keine Sperre mehr.

Ich dachte eigentlich, ich könnte die jeweilige IP dann für 12h komplett blocken, leider falsch gedacht...

Meine einzige Möglichkeit wäre dann noch das Ausführen eines Systembefehls (über mod_evasive), z.B. ein Block mittels iptables. Allerdings müsste dieser Eintrag nach (in meinem Fall) 12h wieder entfernt werden und ich glaube nicht, dass das Modul dies kann.
 
Die Apache-PID wird nur rein geschrieben, damit irgendwas drin steht. Sie hat sonst rein gar nichts mit der Arbeitsweise von mod_evasive zu tun. Das Modul greift niemals wieder auf diese Dateien zurück.

Gleichzeitig wird ein richtiger Log-Eintrag über den Syslog-Daemon erzeugt:
"Blacklisting address %s: possible DoS attack."
Diesen findest Du meistens in den messages|syslog wieder.

Die verdächtigen und auch geblockten IPs werden intern in einem Hash gespeichert. Lediglich ein Apache-Restart oder -Reload löscht diesen Hash.
Allerdings kann dieser Hash auch überlaufen. Dafür gibt es die Einstellung DOSHashTableSize.
Leider hast Du in einem Punkt recht: mod_evasive verwaltet diesen Hash nicht zentral in einem Shared-Memory-Bereich, sondern jeder Apache-Child startet eine neue Modul-Instanz mit eigenem Hash.
Hier geht es um Feinarbeit an den Einstellungen. Dafür muss man aber eben verstanden haben, wie es funktioniert und wie ein realer DDoS abläuft.

huschi.
 
Laut meiner mittlerweile mehrstündigen Recherche, blockt mod_evasive nur alle Anfragen an den selben Childprozess. Sobald der weg ist, weil der Client eine kurze Pause eingelegt hat, kann weiter attackiert werden.

Welche Einstellungen meinst du denn? Die Apache-Einstellungen oder die mod_evasive-Einstellungen?

Übrigens ist DOSHashTableSize bei mir auf 3072.
 
Das sag ich ja oben schon. Aber Du irrst Dich (oder drückst es hier falsch aus) wenn Du denkst, dass der Client an einen Child gebunden ist. Dies ist nur für Keep-Alive-Connections der Fall.

mod_evasive hilft tatsächlich nur für kleine bis mittlere DDoS-Angriffe. Es hilft weder bei ganz kleinen und genauso wenig bei richtig großen Angriffen.

huschi.
 
Aber zusammengefasst kann man doch sagen, mod_evasive blockt nur fortlaufende Anfragen. D.h. sobald eine Pause angelegt wird, hat der Client wieder Zugriff. Daran ändern doch auch keine Einstellungen irgendwas, oder doch?
 
Da hast du selbstverständlich recht. ;)

Ich wollte mich damit auch eigentlich hauptsächlich gegen hin und wieder kommende Spielkinder schützen, die meinen Server relativ leicht plätten können, da die von mir eingesetzte Forensoftware (WBB 3.1) da leider eine kleine Macke hat. Und ich dachte, mit mod_evasive könnte ich mir diese dauerhaft vom Leib halten. Da das aber nicht geht, muss ich mir was anderes überlegen.

Habe jetzt DDoS-Deflate und fail2ban noch installiert und bin gerade am konfigurieren. Vielleicht bringt mir das mehr.

Auf jeden Fall danke für die Antworten!
 
Ich weiß ja nicht über welche "Macke" Du sprichst. Aber so klingt das eher nach einen Fall von mod_security.

huschi.
 
Irgendwo habe ich gelesen, dass mod_security total veraltet ist und daher nicht mehr verwendet werden soll. Daher habe ich von der Installation bisher abgesehen.

Die "Macke" meiner Forensoftware ist übrigens die Sessiontabelle, die sich leicht vollschreiben lässt und damit den Server erstmal vollkommen auslastet und irgendwann das Forum wegen einem Tabellenüberlauf unbetretbar macht.
 
Ja, mod_security ist sehr alt und wir von der Software her nicht weiter gewartet. Aber es gibt immer noch Dienste die neue Filter für aktuelle Lücken zur Verfügung stellen.

Ich bezweifle dass mod_evansive die Sessiontabelle schützen kann. Denn die dürfte wohl durch unterschiedliche URLs gefüllt werden können.

huschi.
 
Richtig, mod_evasive kann mir bei genau dem Problem nicht helfen, da die IP nicht permanent komplett gebannt wird. Allerdings habe ich auch grundsätzlich öfters mit (D)DoS-Attacken zu kämpfen, die es nicht nur auf die Sessiontabelle abgesehen haben. Die letzte größere lief ca. 3 Monate nonstop, sonst immer 1-10 Tage.

Drei Dinge habe ich ja nun installiert (mod_evasive, fail2ban und DDoS-Deflate). Vielleicht baue ich auch noch mod_security ein. Wobei ich mich frage, ob die sich nicht in die Quere kommen...
 
Evtl. lässt Du es auch einfach, da Du nicht wirklich verstehst, was die Programme/Module eigentlich tun und können.
Zumindest ließt man das aus Deinen Zeilen heraus.

huschi.
 
Nur weil da mal Jemand ein paar mehr Requests erzeugt als der Durchschnittsuser ist das längst kein DoS und auf gar keinen Fall ein DDoS. Habt Ihr mal nachgesehen was die Abkürzungen DoS und DDoS überhaupt bedeuten? Offenbar nicht, denn bei einem DoS und erstrecht bei einem DDoS ist mindestens der angegriffene Dienst, bei Letzterem auch gerne mal die ganze Pizzaschachtel, schlicht komplett lahmgelegt.
Bei einem DoS helfen auch die in diesem Thread genannten Tools absolut Nichts, im Gegenteil, sie verschlimmern das Ganze im Regelfall noch, da noch mehr Code durchlaufen werden muss und sich die Verarbeitungszeit der Requests dadurch verlängert. Genau das will man bei einem DoS gerade nicht.
Und DDoS lassen sich nur noch auf Netzwerkebene, sprich vom Netzwerkbetreiber, bekämpfen...

Glaubt gerne weiter an die Placebos ala Fail2ban, DenyHosts und Co, aber sprecht nicht von (D)DoS, wenn Ihr gar nicht wisst, was das bedeutet!

Sorry, musste mal raus...
 
Wenn mein Server volle drei Monate ohne jede Unterbrechung durch ca. 500 IPs vollständig lahmgelegt wird und gleichzeitig irgendwelche anonymen User mit russischen IPs Mordrohungen ins Forum posten, so denke ich schon, dass man von DDoS sprechen kann.
 
Danke Joe! War nur nicht gerade Zielführend sondern eher "viel Lärm um Nichts".
Z.B. wäre eine genaue Spec oder Diff eines DoS vs. DDoS interessanter und aufschlussreicher gewesen. (Zumindest für King555.)

Bei einem DoS helfen auch die in diesem Thread genannten Tools absolut Nichts, im Gegenteil, ...
Ohne viele Diskussion über Einzelfälle, teile ich diese Behauptung nur zum Teil.
Aber das hatte ich oben bereits (un)genauer spezifiziert.

@King:
Schön das auch mal ein paar Fakten kommen.
15 Beiträge verschenkt an blödsinnige Konstellationen...

huschi.
 
Back
Top