[[DDoS]]-Angriffe werden derzeit immer populärer. Auch bekannte Unternehmen
wie Paypal oder Mastercard werden immer mehr ins Ziel von Cyberattacken gesetzt.
Aber nur weil größere Unternehmen mehr und mehr Aufmerksamkeit für DDoS-Angriffe bekommen heißt es
noch lange nicht das kleinere Projekte unbetroffen bleiben.
Nun dagegen kann man sich auch als Otto-Normal-Verbraucher in gewissen Zügen auf Software-Basis schützen.
Mithilfe des kleinen Bash-Scriptes DDoS-Deflate lässt sich auf Software Basis so manch ein DDoS-Angriff abwehren.
Bevor wir DDoS-Deflate installieren legen wir uns in einem beliebigen Verzeichnis einen neuen Ordner an.
In meinem Falle auf /root und navigieren in dieses neue Verzeichnis.
root@localhost:~# mkdir deflate root@localhost:~# cd deflate
Nun führen wir ein wget aus um das Installationscript für DDoS-Deflate zu laden.
Anschließend setzen wir die richtigen Berechtigungen auf das Script um dieses ausführen zu können.
root@localhost:~/deflate# wget http://www.inetbase.com/scripts/ddos/install.sh root@localhost:~/deflate# chmod 0700 install.sh root@localhost:~/deflate# ./install.sh
Nachdem das Script gestartet ist und alles installiert ist können wir q eintippen um die
Lizenzbedingungen zu verlassen.
[AdSense-A]
Nun kommt der entscheidende Teil. Jetzt müssen wir DDoS-Deflate auch konfigurieren.
Die Konfiguration von DDoS-Deflate befindet sich Standardgemäß unter
/usr/local/ddos/ddos.conf
Diese editieren wir nun mit einem beliebigen Editor.
Unter NO_OF_CONNECTIONS= haben wir die Möglichkeit eine Anzahl von Zugriffen pro IP festzulegen die
innerhalb von einer Minute durchgeführt werden dürfen. Wenn diese überschritten wird, wird die jeweilige
IP-Adresse für eine bestimmte Zeit vom Server gebannt.
Diese können wir problemlos von 150 auf 60 runter setzen.
NO_OF_CONNECTIONS=60
Als nächstes kommt die Bann-“Methode” dran. Dort bestimmen wir welche Software verwendet werden soll
um die IP-Adressen zu dropen. Standardgemäß steht die Konfiguration bei APF_BAN= auf 1.
Gesagt sei allerding auch das Standardgemäß APF nicht installiert ist!
Also setzen wir APF_BAN auf 0
APF_BAN=0
Der nächste Punkt ist KILL. Kill bestimmt ob die IP-Adressen die den maximalen Zugriffswert überschritten
hat gedroped werden soll oder nicht. Diesen belassen wir auf 1.
KILL=1
Unter EMAIL_TO= können wir eine Email-Adresse festlegen an die eine Email verschickt werden soll, sobald ein
Besucher das Zugriffslimit überschritten hat und somit auch vom Server gebannt wurde.
Diese steht standardgemäß auf “root”. Kann aber auch ggf. geändert werden.
(Bei Änderungen die Anführungszeichen nicht vergessen!)
EMAIL_TO="root"
Zu guter letzt kommt die Ban Periode dran. Diese legt fest wie lang jemand gebannt werden soll, wenn das Limit
überschritten ist.
Diese hat auch einen Standard-Wert der auf 600 Sekunden definiert ist. Diese Zeit sollte auf jedenfall erhöht werden.
Eine Minute als Bannzeit ist nicht Sinnvoll. Ein DDoS-Angriff dauert meist länger als nur ein paar Minuten und um die
Last zu senken die zu einem Angriff entsteht ist es sinnvoll diese auf mindestens eine halbe Stunde zu setzen.
[AdSense-A]
Sprich 18000 als Wert angeben.
BAN_PERIOD=18000
Nachdem wir mit der Konfiguration fertig sind müssen wir diese noch speichern.
Im selben Ordner (/usr/local/ddos/) befinden sich noch weitere Dateien z.B. auch ignore.ip.list
Dort können wir IP-Adressen definieren welche niemals gedroped werden dürfen. Dies lohnt sich aber auch nur
wenn die jeweilige IP-Adresse statisch ist.
Diese muss nicht konfiguriert werden aber kann.
Zu guter letzt ist es sinnvoll DDoS-Deflate als Cronjob auszuführen.
Dazu müssen wir Crontab editieren.
root@localhost:~/deflate# crontab -e
Unkonfiguriert sieht die Konfiguration von Crontab wie folgt aus:
# m h dom mon dow command
Hier müssen wir die Zeit angeben wann der jeweilige Cronjob durchgeführt werden soll, wie aber auch
welcher Befehl zu der jeweiligen Zeit ausgeführt werden muss.
Hier setzen wir einen neuen Eintrag in eine neue Zeile.
* * * * * /usr/local/ddos/ddos.sh
Das Sternchen heißt so viel wie das zu jeder Einheit der Befehl ausgeführt werden soll.
* Minute, * Stunde, * Tag, * Monat, * Jahr wie bei uns bedeutet so viel wie das dieser Cronjob
jede Minute in jeder Stunde, jedem tag und jedem Monat wie auch Jahr ausgeführt werden soll.
Nachdem wir diese Zeile eingefügt haben speichern wir auch diesmal die Konfiguration.
Nun sind wir fertig.
Für Debian 6 (Squeeze) Benutzer wird hierbei DDoS-Deflate nicht lauffähig sein.
Dies müssen wir hierbei ändern.
Dazu editieren wir die Datei /usr/local/ddos/ddos.sh mit einem beliebigen Editor.
Dort ersetzen wir die Zeile
#!/bin/sh
durch
#!/bin/bash
und speichern das Bash-Script. Ab da an muss das Script lauffähig sein.
Gesagt sei zu guter letzt das eine Software Protection niemals so leistungsfähig sein kann wie eine
Hardware Protection. Außerdem hat jede Protection seine eigenen Grenzen, d.h. es bestimmt die Anzahl
der Bots/ PPS wie lang eine DDoS-Protection auch ihren Sinn erfüllt.
Hatte einige probleme mit Debian squeeze bis ich deinen Artikel gefunden habe 🙂
/usr/local/ddos/ddos.sh ist nun lauffähig aber ich habe da trotzdem noch einige Fragen…
Hat diese Variable überhaupt noch einen Sinn: CRON=”/etc/cron.d/ddos.cron” ?
Schließlich hab ich den cron job ja manuell angelegt via crontab -e
Zudem krieg ich jetzt jede Minute den Output des cron jobs zugeschickt. Hab ich jetzt erstmal so abgestellt:
* * * * * /usr/local/ddos/ddos.sh &> /dev/null
Gibts hier nicht ne elegantere Lösung so dass ich nur ne email bekomme wenn tatsächlich jemand geblockt wurde und nicht bei jeder Ausführung?
Passen alle anderen Berechtigungen, etc?
Hallo Ovidiu,
in der ddos.cron steht ebenfalls nicht anderes drin als:
Ich habe die Erfahrung gemacht das der Cron-Job den man über ddos deflate setzen kann meistens nicht funktioniert und somit ddos deflate über den Cronjob nicht ausgeführt wird.
Prinzipiell könntest du die Zeiteinstellungen von der Cronjob file übernehmen, dann wird DDoS-Deflate nicht jede Sekunde ausgeführt sondern jede Minute.
Was die Mails betrifft kann ich dir da leider keinen Lösungsvorschlag machen. Ich persönlich nutze die Benachrichtigungsoption von ddos-deflate nicht. Eben aus diesem Grunde und aus dem Grunde weil bei einem wirklichen DDoS mehrere 100 Bots den Server attackieren und für jeden einzelnen Bot eine Benachrichtigung zu erhalten sehe ich als reinen Spam.
Wenn du via Mail benachrichtigt werden willst und nicht jede Sekunde eine Email erhalten möchtest solltest du dir die ddos.sh mal anschauen und evtl. umschreiben. Meine Bash-Kenntnisse die die Programmierung von solchen Scripts betrifft ist leider ziemlich stark eingeschränkt.
Wenn ich mein vserver neustarte wie kann ich den schutz wieder starten ?? oder wird der mit gestartet ???
wenn ein cronjob angelegt wurde, läuft dieser solange durch bis man den entsprechenden eintrag aus crontab entfernt.
Somit ist das Starten des Prozesses unabhängig davon, ob der Server neugestartet wurde oder nicht.
Servus, für PHP-Sites insbesondere geeignet ist auch myracloud.com. Dabei wird die eigene Infrastruktur hinter myracloud als Proxydienst gehängt. Mit einer Bandbreite von über 400gbit/s wehrt myracloud Angriffe ab. Mehr hier: myracloud.com DDoS Protection.
nette alternative zu cloudflare.
Bei mir wurde die localhost gebannt, obwohl 127.0.0.1 in der Ignorliste steht. Habe dann auch localhost in die Liste geschrieben. Hat leider nicht funktioniert. Wie kann ich das Problem lösen?
Wenn die IP-Adresse/ Der Hostname nachträglich in die Konfiguration eingetragen wird, hilft das relativ wenig er wird zwar dann auch ignoriert, aber steht weiterhin im Input chain von Iptables mit der Regel “DROP”. Daher müsste der Eintrag erst einmal entfernt werden durch: iptables -D INPUT [nr des eintrags von oben].