Apache bzw. Server vor kleineren DoS schützen

  • Howto für PD-Admin


    Wie man seinen Server versuchen kann vor DoS-Attacken zu schützen.
    ACHTUNG! Diese Möglichkeit schützt nur vor kleinen DoS Attacken!


    1. Den Apachen vorbereiten
    Öffnen Sie das httpd-Template von PD-Admin.


    Code
    nano /usr/local/pd-admin2/conf/httpd.conf-template


    Suchen Sie nach der zeile:

    Code
    LoadModule security2_module modules/mod_security2.so


    und fügen Sie danach folgendes ein:

    Code
    LoadModule evasive20_module  modules/mod_evasive20.so


    Evasive ist ein kleines Modul für Apache, welches bei zu vielen Zugriffen auf einer Seite die Absender-IP reinlegt, in dem es
    einen 403 an den Browser zurück gibt. Des weiteren bietet Evasive die Möglichkeit ein externes Programm anzusteuern.



    Suchen Sie nun nach der Zeile:

    Code
    ###AddModule mod_php4.c


    und fügen Sie darunter folgendes ein:


    Hier können Sie noch die Kommentierungen rausnehmen. Wer English kann kann es sich denken.
    Sonst hier noch eine kurze Beschreibung:


    DOSLogDir: Log-Verzeichnis
    DOSWhitelist: Kann IP-Adressen irgnorieren (mehrere IP-Adressen mit dem selben Befehl angeben)
    DOSEmailNotify: Sendet bei Block eine E-Mail
    DOSBlockingPeriod: Wie lange der Block gelten soll, GILT NICHT FÜR PUNKT 2!! (in Sekunden, kann gering sein da der Timer sich bei erneuten Versuchen resettet)



    Danach können wir mit F2, ENTER, F3 speichern und nano verlassen.


    Kommen wir nun zum Hauptprogramm...


    2. Den Server vorbereiten
    Wechseln Sie in das Verzeichnis /usr/sbin/.

    Code
    cd /usr/sbin/


    Nun laden wir uns den Sourcecode von modsec2iptables runter. Den Code habe ich etwas verändert.
    Es wird nun von den iptables übermittelt das der Server nicht erreichbar ist.


    Code
    wget http://www.copypastecode.com/download/?file=13658 -O modsec2iptables.c


    Ihr könnt den Source anpassen, wenn ihr wollt und könnt.
    Wer nichts mehr ändern möchte oder seine Änderungen abgeschlossen hat, fährt wie folgt fort.


    Source kompilieren:

    Code
    gcc -o /usr/sbin/modsec2iptables modsec2iptables.c


    Rechte geben:

    Code
    chmod u+s /usr/sbin/modsec2iptables


    Ordner erstellen:

    Code
    mkdir /var/lock/modsec2iptables


    Anschließend schreiben wir die httpd.conf und starten den Apache neu:


    Code
    nice -n 19 /opt/pdadmin/bin/httpd_vhosts.pl 1 
    svc -d /service/apache 
    svc -u /service/apache


    3. Testen
    Wenn die Einstellungen so beibehalten wurden, können wir nun eine beliebige Seite die auf dem Server liegt aufrufen.
    Wenn Ihr die Seite nur 1x oder 2x besucht, dann klappt alles. Es klappt auch bei mehrmaligen Versuchen, wenn diese in
    nicht zu kurzen Abständen durchgeführt werden. Macht Ihr noch einige Tabs im Firefox oder IE mehr auf und Refresht dann
    alle Seiten neu, dann werdet Ihr feststellen das ihr die Seite nicht mehr erreichen könnt.


    modsec2iptables hat nun eine Regel in die iptables eingetragen.


    Welche IP´s geblockt wurden, könnt Ihr mit:


    Code
    /usr/sbin/modsec2iptables -s


    einsehen. Die nächsten Befehle beschrieben wie man manuell IP-Adressen eintragen und austragen kann:


    Code
    /usr/sbin/modsec2iptables -i 82.113.121.204
    /usr/sbin/modsec2iptables -u -i 82.113.121.204


    4. Automatisches Entsperren
    -folgt-