Bonkersoft Support

Support Seite der Bonkersoft
DDOS abwehr mit mod_evasive und modsec2iptables
 
httpd ftpd sshd
Webserver Filetransfer oder secureshell
Beitrag von: Christian
erstellt: 09.4.2009 7:57:22
Anregung und Original Tutorial von Mit diesem Link verlassen sie Bonkersoft Support www.fbis.ch

Mit dieser Anleitung lässt sich eine DDOS Attacke auf den Http Server abschwächen.
Hierfür wird Mit diesem Link verlassen sie Bonkersoft Support mod_evasive benötigt. Unter Debian lässt sich das Packet einfach mittels aptitue install libapache2-mod-evasive installieren. Vorausgesetzt es wird Apche2 verwendet.
Bevor wir aber mod_evasive aktivieren installieren wir uns noch modsec2iptables. Das Original Script gibt es bei Mit diesem Link verlassen sie Bonkersoft Support fibs.ch.
Ich habe aber eine abgewandelte Version erstellt welche nur IP Adressen sperren kann aber keine Statusabfrage oder Entsperrung ausführen kann.

Natürlich muss auch iptables im Kernel aktiviert sein. Hinweis: Diese Scripte arbeiten mit dem iptables Modul Comment und Multiport. Hierfür muss
Zitat:
xt_comment xt_multiport
im kernel verfügbar sein.

Wir entpacken nun banip.tar.gz aus dem Anhang und Kompilieren modsec2iptables.c
su root
gcc -o /usr/sbin/modsec2iptables modsec2iptables.c
chmod u+s /usr/sbin/modsec2iptables
mkdir /var/lock/modsec2iptables

Anschließend erstellen wir die conf Datei für mod_evasive. Inhalt von /etc/apache2/mods-available/mod-evasive.conf:
<IfModule mod_evasive20.c>
    DOSHashTableSize    3097
    #DOSPageCount gibt die Anzahl der Seitenaufrufe eines Clients pro DOSPageInterval-Zeitintervall
    DOSPageCount        5
    #DOSSiteCount gibt die Anzahl der Seitenaufrufe auf einen Child-Prozess pro DOSSiteInterval-Zeitintervall
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    #DOSBlockingPeriod gibt die Sperrzeit in Sekunden an
    DOSBlockingPeriod   60
    #DOSEmailNotify funktioniert nur wenn mail unter /bin/mail zu finden ist!!
    #DOSEmailNotify   mail@benutzer
    # Script um automatisch iptables bann aus zu fueren
    DOSSystemCommand "/usr/sbin/modsec2iptables -i %s"
</IfModule>

mod-evasive.load und die mod-evasive.conf kann nun mittels apsx(2) geladen werden oder mit symlink und apachectl -k restart.
cd /etc/apache2/mods-enabled
ln -s ../mods-available/mod-evasive.load
ln -s ../mods-available/mod-evasive.conf
apache2ctl -k restart


Das Script banip wird benötigt um gebannte IP Adressen an zu zeigen oder aus/ein zu tragen.
Um Deine eigene IP Adressen zu schützen musst Du banip editieren.
Die Eintrage
Zitat:
WHITELIST='
127.0.0.1
0.0.0.0
'
mit deinen IP Adressen erweitern.
Usage: banip [[-u]-i IP address][-s[-p] [-S STRING]]
        -u                      Entfernt die übergebene IP Adresse
        -s                      Zeigt die aktuell gebannten IP Adressen
        -S 123*                 Zeigt Einträge die mit 123 beginnen
        -p [http|mail|all]      Optional kann hier der Port übergeben werden. [http [DEFAULT]|mail|all]
        -?,-h                   Diese Hilfe
 
EXAMPLE:
banip -i IP -s          Liest den Status der gebannten IP aus
 
EXAMPLE:
banip -i IP             bannt die IP Adresse an den http Ports 80,443
 
EXAMPLE:
banip -i IP -p mail     bannt die IP an den Mailserver Ports 25,465,587
 
EXAMPLE:
banip -i IP -p all      bannt die IP an den Mailserver und http Ports 80,443,25,465,587
 
EXAMPLE:
banip -u -i IP          entfernt den bann der IP Adresse
 
TIPP: Ausgabe von -s oder -S STRING kann mittels "banip -S 123*|sort -k 5" nach datum sortiert werden
Angehängte Datei
banip.tar.gz
4,26 KB, 733 Hits

Beitrag von: Christian
erstellt: 09.4.2009 8:01:03
Hinweis: Mittels conntrack lässt sich schön beobachten welche Verbindungen geöffnet werden.

Installation unter Debian:
aptitude install conntrack
modprobe nf_defrag_ipv4
modprobe nf_conntrack_ipv4
modprobe nf_conntrack
conntrack -L conntrack
conntrack -E conntrack -e NEW -p tcp

Beitrag von: Christian
erstellt: 09.4.2009 12:05:21
TIPP: Um Einträge älter 1Tag zu löschen die mit banip erstellt wurden kann man folgenden Einzeiler verwenden:
for i in $(find /var/lock/modsec2iptables -type f -cmin +1440); do banip -u -i ${i##*-}; done
 
httpd ftpd sshd
Webserver Filetransfer oder secureshell