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 :
Code:
apt-get install libapache2-mod-evasive
Danach gehts an die Konfiguration.
Erst das Modul aktivieren.
Code:
a2enmod mod-evasive
Dann die Apache2 Konfiguration anpassen. Unter Debian in der /etc/apache2/apache2.conf folgende Zeile anhängen:
Code:
<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.
Code:
www-data ALL=(ALL) NOPASSWD: /sbin/iptables -A INPUT -s [0-9.]* -j DROP
Ein 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