PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [HOW2] mod_evasive konfigurieren


SP4C3
26.06.2010, 13:49
Hi,
oft ist es einfach einen kleinen Webserver außer Betrieb zu setzen. Ein aufwendiges Script, oft genug aufgerufen lässt den Server in die Knie gehen. Der Denial of Service (DoS) ist geschafft. Unter anderem um dem Vorzubeugen, gibt es für den Apache Webserver mod_evasive. Die Konfiguration ist einfach aber effizient.
Mod Evasive führt eine HOstTabelle, und sobald eine gewisse Anfrageschwelle pro Host überschritten wird, bekommt dieser ein 403 access denied. Zusätzlich kann der Admin per Mail benachrichtigt werden und ein Shell Befehl ausgeführt werden.
Unter Debian lenny installiert man das Modul mit :
apt-get install libapache2-mod-evasiveDanach gehts an die Konfiguration.
Erst das Modul aktivieren.
a2enmod mod-evasiveDann die Apache2 Konfiguration anpassen. Unter Debian in der /etc/apache2/apache2.conf folgende Zeile anhängen:

<IfModule mod_evasive20.c>
DOSHashTableSize 3097 # Größe der HostHashTabelle, Je größer desto schneller, je kleiner desto weniger Ram Verbrauch
DOSPageCount 10 # Request pro Intervall auf eine Seite von einem Host
DOSSiteCount 50 # Requests pro Intervall auf einer Domain von einem Host
DOSPageInterval 1 # o.g. Intervall für die Requests pro Seite in s
DOSSiteInterval 1 # o.g. Intervall pro Domain
DOSBlockingPeriod 10 # Dauer der Blokade in s
DOSWhitelist 127.0.0.1 # Whitelist
DOSEmailNotify "adminEmailAddresse" # BenachrichtigungsEmailaddresse
DOSSystemCommand "sudo /sbin/iptables -A INPUT -s %s -j DROP" # Befehl der bei erkanntem DOS versuch ausgeführt werden soll
</IfModule>
Die Kommentare (alles ab dem # in einer Zeile), dienen zur erläuterung hier. Sie müssen in der Apacheconfig entfernt werden!
Der Befehl unter DOSSystemCommand sorgt dafür, dass alle Pakete von der AngreiferIP gedropt werden. Somit wird dem Angreifer suggeriert, der Server sei nicht mehr erreichbar(Timeout).
Edit:
Sollen automatische Firewallregeln angelegt werden (via DOSSystemCommand wie hier) ist das Paket 'sudo'(kann bei anderen Distributionen als Debian anders heißen) nötig.
Damit www-data diese Firewallregel einrichten darf, muss sudo installiert sein und in der /etc/sudoers folgende Zeile hinzu gefügt werden.

www-data ALL=(ALL) NOPASSWD: /sbin/iptables -A INPUT -s [0-9.]* -j DROPEin Neustart des alten Indianers aktiviert den ganze Spass.

ACHTUNG::: SPERRT EUCH NICHT SELBST AUS BEIM TESTEN. SOLLTET IHR VON EUREM "HOMEPC" EINEN TEST DER CONFIG DURCHFÜHREN, DENKT DARAN, DASS ALLE PAKETE VON EUREM PC DANN GEDROPT WERDEN, AUCH SSH PAKETE:::

Gruß
SP4C3

gotthummer
26.06.2010, 13:59
Super erklärt so sollte es nun wirklich jeder installt bekommen

DirtyPlaya
26.06.2010, 21:27
ich hab fail2ban kommt ziemlich aufs gleiche raus

Cerberus
27.06.2010, 09:43
Was ist Fail2Ban?

Fail2Ban durchsucht Logdateien wie /var/log/pwdfail oder /var/log/apache/error_log und blockt IP-Adressen, die zu viele fehlgeschlagene Loginversuche haben. Es aktualisiert Firewallregeln, um diese IP-Adressen zu sperren. Fail2Ban kann mehrere Logfiles lesen - beispielsweise die von sshd oder apache. Die IP-Adressen werden nach einer vorher festgelegten Zeitspanne wieder aktiviert.
wohl kaum ....
das hilft da wohl eher nicht ...

zumal fail2ban extern ist und mod-evasive auf Apache-interne Funktionen aufsetzt ...

SP4C3
27.06.2010, 12:31
Genau Cerb.
mod_evasive reagiert auf unmenschlich viele Seitenaufrufe von einer IP.

fail2ban auf fehlgeschlagene Logins.

Thunder™
27.06.2010, 12:35
und beides schützt nicht vor massiven Dos Attacken,
wenn einer dos loslässt ok schafft der mod_evasive noch..
aber wenn mehere dran sind haste auch damit keine chance;)

SP4C3
27.06.2010, 13:43
Ich hab auch nicht behauptet, dass du damit nen massiven DDoS abwehren kannst.
Spätestens, wenn die Bandbreite der Angreifer größer als deine ist hast du eh keine Chance, außer du schaffst es die IPs bevor sie in dein Netz geroutet werden ins Nirvana zu routen...

rodi
27.06.2010, 14:26
Bei mir kommt beim apache restart immer folgende Meldung:


Restarting web server: apache2Syntax error on line 290 of /etc/apache2/apache2.conf:
DOSHashTableSize takes one argument, Set size of hash table
failed!

SP4C3
27.06.2010, 17:57
Dann schau doch mal in Zeile 290 deiner ApacheConfig, oder poste die hier...

rodi
27.06.2010, 23:02
Dort steht genau das drin, was oben im Thread als erforderlich angegeben ist!

DOSHashTableSize 3097 # Größe der HostHashTabelle, Je größer desto schneller, je kleiner desto weniger Ram Verbrauch

Ich habe auch die Größe schon geändert, jedoch immer die selbe Meldung.

Cerberus
27.06.2010, 23:45
poste mal den Block, den du rein gesetzt hast ...
scheint wohl ein Fehler drin zu sein

SP4C3
28.06.2010, 00:51
Hab gerade versucht den Fehler nach zu vollziehen und dabei bemerkt, die Kommentare sind zu entfernen, dann gehts.

Also alles ab dem # muss entfernt werden, dann funzts wies soll...

phenom
29.06.2010, 12:00
Also ich bekomm immer die meldung,das das paket nicht gefunden wurde

Couldn't find package libapache2-mod-evasive

Habe ein Debian Lenny 5 auf 64Bit

D@rk-€vil™
29.06.2010, 12:03
phenom dann schau ma hiervorbei

Klick mich (http://packages.debian.org/lenny/libapache2-mod-evasive)

SP4C3
29.06.2010, 22:42
Wollt gerade schon rebbellieren
In den Standart Debian Repos ists drin.

Kann sein, dass dein Provider andere Repos einträgt, die es nicht enthalten.

phenom
30.06.2010, 05:16
Habs mittlerweile Installed.Aber mal ne andere Frage.Wo bekomm ich das hier her?Also soweit ich weis,gibts das glaub ich garnich für Lenny.

apt-get install libapache2-mod-security

Habs für Debian Etch gefunden,aber wiederum sagt mit Putty,das das Paket nich gefunden wurde.

Kennt jemand ne Quelle,wo mans für Lenny amd64Bit herbekommt?

D@rk-€vil™
30.06.2010, 05:47
schaust du hier (http://packages.debian.org/de/sid/libapache-mod-security)

rodi
02.07.2010, 22:56
Ohne die # und die nachfolgenden Kommentare funktioniert es nun auch.

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSWhitelist 127.0.0.1
DOSEmailNotify "adminEmailAddresse"
DOSSystemCommand "sudo /sbin/iptables -A INPUT -s %s -j DROP"
</IfModule>

SeeYou
13.11.2010, 18:42
alles kann schön aber das habe ich nicht..was muss ich da nach installieren?

/etc/sudoers

SP4C3
13.11.2010, 22:22
das Paket sudo

unter Debian also
apt-get install sudo

Wer den Startpost editieren und das dazuschreiben.

Timil
30.01.2011, 12:13
ein leerzeichen zwischen size und der tablegroesse und falls das nichts hilft, #kommentar entfernen .

Sponge
23.02.2011, 17:59
Hat einer ne Idee warum evtl. der Mailversand nicht gehen könnte?
Bzw. hat das mal wer getestet?

btw Habe Postfix installiert.

Thunder™
23.02.2011, 18:03
schau dir mal die config an von postfix..hat doch nichts mit mod_evasive zu tun..

Sponge
23.02.2011, 18:13
Naja schon weil Postfix an sich funktioniert ja und verschickt auch seine Mails wie es soll ... nur halt nix von mod_evasive ...daher dachte ich liegts wohl daran? :-/ Nach was genau soll ich denn in der postfix conf suchen?

Thunder™
23.02.2011, 18:34
schau mal hier

http://www.huschi.net/14_182_de-apache-dos-attacken-abfangen.html

evt die der pfad vom mailer nicht korrekt, ich kann es dir aber nicht genau sagen...
evt hilft es dir....ich hab die mail funktion nicht drin weil ich es überflüssig finde..

Flori12345
27.02.2012, 21:21
hi hab das mal insterliert beim freund aufen server weil er sagte die spielen bei ihn rum mit das prog Goodbye aber irgentwie wird damit nix geblockt es wird auch nix inne iptables geschrieben hat da einer vieleicht ne ide wenn ich die index ganz offt öffne kommt
Forbidden

You don't have permission to access /index.php on this server.


aber wie gesagt es wird nix inne iptables eingetragen



währe nett wenn einer helfen könnte


LG Flori

SP4C3
27.02.2012, 21:50
Das Forbidden ist sinn der Sache.

mod_evasive wird Standardmäßig erstmal den Zugriff auf die Seite verweigern wenn das Limit überschritten wird.

Das mit iptables musst du schauen
1. netfilter module geladen
2. iptables binary überhaupt da
3. sudo richtig konfiguriert..

etc. pp.
Logfiles sind dein Freund

Flori12345
12.03.2012, 10:14
haste mal ein tip wie ich das überprüfen kann

SP4C3
12.03.2012, 19:12
zu ersterem:
in lsmod sollte ne ganze menge auftauchen
zu 2.
der befehl iptables ist ausführbar.
3.
sudo funktioniert??

Ansonsten probier doch mal eine Paketfilterregel manuell zu setzen.
Somit kann man den Fehler eingrenzen...

Flori12345
13.03.2012, 11:17
also iptables is ausfürbar
bei
sudo iptables -A INPUT -s 31.xx.xx.xx -j DROP ///geht ohne Probleme

iptables -A INPUT -s 31.xx.xx.xx -j DROP /// geht auch ohne Probleme

root@ks390xxx:~# iptables -L INPUT -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 31.xx.xx.xx 0.0.0.0/0

also das geht alles