|
DDoS Abwehr
|
|
17-07-2010, 11:18 PM
(Dieser Beitrag wurde zuletzt bearbeitet: 17-01-2012 03:15 PM von admin.)
Beitrag #1
|
|||
|
|||
|
DDoS Abwehr
Inhaltsverzeichnis:
[+] Vorwort [+] Sysctl tuning / Syncookies [+] IPtables [+] Firewall (Installation u. Konfiguration) [+] Syn-Deflate Script [+] Apache Webserver optimieren Vorwort: Synflood ist eine sehr häufige Angriffsmethode von Botnet-Besitzern, doch in Wirklichkeit ist es ein Kinderspiel derartige Attacken abzuwehren, denn ein Synflood erzeugt weder viel Traffic (Datenverkehr), noch ist er sonderlich schwer zu erkennen. Vorab möchte ich sagen, dass dieses Tutorial lediglich unter Linux funktionieren wird. Dieses Tutorial wurde sehr gründlich verfasst und macht es daher auch Neulingen möglich die folgenden Schritte zu tätigen. Sysctl-Tuning u. Syncookies Mit Hilfe der sysctl könnt ihr u.a. das Netzwerkverhalten bzw. die Kernelsettings konfigurieren. ACHTUNG: Dieser Schritt funktioniert nur auch einem Dedicated Server, auf einem VPS (VServer) wird das sysctl-Tuning keinerlei Wirkung zeigen. In diesem Fall müssen Sie ihren Hoster bitten diese Konfigurationen in die sysctl.conf des Nodes zu schreiben. Die Datei sysctl.conf befindet sich im Verzeichnis /etc, wir öffnen also diese Datei mit dem Befehl vi /etc/sysctl.conf. Falls ihr mit dem Texteditor vi nicht vertraut seit, könnt ihr auch einen anderen Texteditor wie z.B. nano (nano /etc/sysctl.conf) verwenden. Wobei vi wesentlich mehr Funktionen bietet, aber diese Funktionen braucht ihr hier sowieso nicht. Als erstes suchen wir die Zeile net.ipv4.tcp_synack_retries = 5, falls diese nicht existiert, müsst ihr diese Zeile irgendwo hinschreiben (wo genau spielt keine Rolle). Wir ändern den Wert 5 auf den Wert 3. Nun suchen wir den Wert net.ipv4.tcp_syn_retries = 5, falls diese Zeile nicht existiert, müsst ihr auch diese Zeile anlegen. Diesen Wert ändern wir ebenfalls auf 3. Hinweis: Sollte danach irgendwelche Verbindungsprobleme geben, könnt ihr den Wert auf 4 ändern. Danach sucht ihr die Zeile net.ipv4.conf.default.rp_filter, ggf. fügt ihr diesen Text ein. Wir ändern falls nötig die Zeile auf folgendes ab: net.ipv4.conf.default.rp_filter = 1 Somit wird IP-Spoofing unterbunden, weil die IP zuerst verifiziert wird. Nun aktivieren wir die Option Syncookies, dies gestaltet sich sehr einfach. Wir schreiben in die sysctl.conf folgenden Eintrag: net.ipv4.tcp_syncookies = 1 Mehr müssen wir nicht machen. Wenn nun Jemand versucht uns mit SYN-Paketen zu flooden, wird in /var/log/messages folgender Eintrag sichtbar sein: possible SYN flooding on port 80. Sending cookies. Wir können die messages geziehlt nach so einer Meldung filtern, das geht mit folgendem Befehl: cat /var/log/messages | grep cookies. Damit die Befehle wirksam werden, müssen wir folgendes in SSH ausführen: sysctl -p Oder einfach den Server rebooten. IPtables Wir können ein Limit von SYN-Verbindung per IP setzen, das funktioniert mittels IPtables. Gebt einfach folgenden Befehl in SSH ein: Code: iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j RETURNEingehende Verbindungen sind solange erlaubt, bis das Limit für diese IP erreicht wurde. Zusätzlich kann man alle fragwürdigen Pakete filtern: Code: iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROPFirewall Es gibt viele Firewalls für Linux. Ich empfehle APF oder CSF. Mit beiden kann man syn/udp traffic filtern. Ich werde hier eine Anleitung für CSF schreiben. Also laden wir mal CSF herunter, http://www.configserver.com/cp/csf.html. Wir geben folgendes in die SSH Konsole ein: Code: cdSo, nun haben wir CSF heruntergeladen. Nun rufen wir das install script auf. Wir führen also folgendes aus: Code: ./install.shNun wird CSF installiert. Hier sind keine weiteren Eingaben mehr erforderlich. Code: Note: The port details above are for information only, csf hasn't been auto-configured.CSF wurde in den Verzeichnis /etc/csf installiert. Wir wechseln also in den Verzeichnis /etc/csf. Code: cd /etc/csfNun führen wir erstmal die csftest.pl aus. Dieses Script überprüft alle IPtables-Module. Für einige Funktionen sind "spezielle" Module notwendig, die aber eigentlich auf jedem Server aktiviert sein sollten, falls nicht müsst ihr euren Hoster kontaktieren oder selbst aktivieren, falls möglich (auf einem VPS könnt ihr KEINE Module aktivieren). Wir führen also folgenden Befehl aus: Code: ./csftest.plNun können wir sehen ob alle Module funktionieren oder nicht. Code: [root@loadbalancing1 csf]# ./csftest.plWir sehen, wir können CSF voll nutzen! Sollten die letzen 3 Module nicht geladen sein, ist das nicht weiters schlimm. Aber ihr könnt trotzdem euren Hoster fragen, ob er sie aktiveren kann. Solltet ihr einen Root-Server haben, könnt ihr das selbst machen mit folgenden Befehlen: Code: modprobe iptable_natNun bearbeiten wir die Config. Wir geben folgenden Befehl ein um die Config zu bearbeiten Code: vi csf.confAls erstes ändern wir Code: TESTING = "1"Code: TESTING = "0"Falls ihr nur ein bestimmtes Netzwerkinterface schützen wollt, könnt ihr bei ETH_DEVICE = "" zwischen den beiden "" die Bezeichnung des interfaces angeben. Das Interface kriegt ihr mit dem Befehl ifconfig heraus (z.b. eth0, venet0, etc.). Im Normalfall ändern wir bei diesem Punkt nichts. Bei # Allow incoming TCP ports, # Allow outgoing TCP ports, # Allow incoming UDP ports, # Allow outgoing UDP ports, könnt ihr die Ports öffnen, die ihr braucht. WICHTIG: Falls ihr euer SSH Port geändert habt, müsst ihr es unbedingt hier eintragen. Ansonsten könnt ihr nacher nicht mehr auf den Server connecten. Code: # Allow incoming PINGändern wir in Code: # Allow incoming PINGund Code: # Allow outgoing PINGändern wir in Zitat:# Allow outgoing PING Somit ist der Server nicht mehr pingbar. Nun zum nächsten Punkt. Code: DROP_PF_LOGGING = "0"ändern wir in Code: DROP_PF_LOGGING = "1"Nun kommen wir zur SYN-Flood-Protection von CSF. Code: SYNFLOOD = "0"ändern wir in Code: SYNFLOOD = "1"Den Wert RATE und BURST kann man dementsprechend anpassen. Allerdings sollte man den Wert nicht zu niedrig ansetzen, da ansonst normale Nutzer geblockt werden. Am besten stellt ihr es so ein wie ich es oben beschrieben habe. Nun gehen wir weiter zum nächsten Punkt. Wir aktivieren die Portflood-dedection. ACHTUNG: Falls das csftestscript euch sagt, dass das iptablesmodul "ipt_recent" nicht funktioniert, dann könnt ihr diesen Punkt überspringen. Er wird bei euch nicht funktionieren! Wir ändern Code: PORTFLOOD = ""in Code: PORTFLOOD = "80"Wir können natürlich auch ein anderes Port angeben. Aber für die meisten sollte das HTTP Port passen. Den Rest können wir so lassen wie es ist. So, dann legen wir uns noch einen Cronjob an, damit CSF nach 5 Minuten automatisch wieder gestoppt wird. Sinn ist es, falls der Server wegen einer fehlerhaften Config nicht mehr erreichbar sein sollte, CSF zu beenden. Somit könnt ihr dann wieder auf den Server und könnt den Fehler suchen. Wir führen also folgenden in SSH aus: Code: crontab -eDort schreiben wir folgenden hinein: Code: */5 * * * * root /etc/init.d/csf stopNun starten wir CSF mittels folgenden Befehl: Code: /etc/init.d/csf startWenn alles gut läuft, was anzunehmen ist, könnt ihr den Server weiterhin per SSH, HTTP etc. erreichen. Falls nicht, dann habt ihr keinen Grund zur Panik. Wir haben ja unseren Cronjob aufgesetzt (5min warten, dann zum Server verbinden und Fehler fixen). Falls alles gut verlaufen ist, löschen wir nun den Cronjob. Wir geben wieder crontab -e ein und entfernen die entsprechende Zeile. Danach starten wir CSF wieder mittels Code: /etc/init.d/csf start.Wenn nun etwas gedroppt wird, können wir das in /var/log/messages nachlesen. Wir geben also folgendes ein: Code: cat /var/log/messagesOder um nur die letzen Einträge zu sehen tail -n100 /var/log/messages Wenn etwas gedroppt wurde, sieht das so aus: Code: Firewall: *UDP_IN Blocked* IN=eth0 OUT= MAC=SERVERMAC SRC=89.246.39.194 DST=xxx LEN=53 TOS=0x00 PREC=0x00 TTL=120 ID=9633 PROTO=UDP SPT=33792 DPT=31337 LEN=33Bei MAC= steht natürlich eure Servermacadresse. Syn-Deflate Script Dieses Script checkt alle x Minuten wie viele SYN Verbindungen pro IP aufgebaut sind. Sollte eine IP den Wert X überschreiten, wird sie gedroppt. Dieses Script war original ein HTTP deflate script. Das Script wurde simpel umgebaut zum SYN deflate script. Wir laden also das Script herunter und führen die Installation aus. Code: cdWir erhalten folgende Ausgabe zurück: Code: Installing Syn-Deflate 0.1 alphaWir öffnen die synd.conf mit folgendem Befehl (vi ggf. mit nano ersetzen): Code: vi /usr/local/synd/synd.confErstmal ändern wir Code: ##### How many connections define a bad IP? Indicate that below.Code: ##### How many connections define a bad IP? Indicate that below.Ansonst werden eventuell echte Benutzer geblockt. Nun ändern wir Code: ##### APF_BAN=1 (Uses APF to ban)Code: ##### APF_BAN=1 (Uses APF to ban)Danach speichern wir ab und erstellen einen Cronjob. Wir führen folgendes aus: Code: cd /usr/local/syndWir erhalten folgende Rückmeldung: Code: Stopping crond: [ OK ]Auf Debiansystemen kann es sein, dass es hier zu einer Fehlermeldung kommt! Sollte dies so sein, erstellen wir den Cronjob manuell, das geht so: Wir geben crontab -e in die SSH Konsole ein und tragen folgendes ein: Code: */1 * * * * root /usr/local/synd/synd.shDanach speichern wir und der Cronjob ist erstellt! Gedroppte IPs können wir mit diesem Befehl einsehen: Code: iptables -LHier werden wir auch die CSF Regeln sehen! Falls ihr die Iptables löschen wollt, müsst ihr folgendes eingeben: Code: iptables --flushDadurch werden allerdings auch die CSF Regeln verworfen, also muss man CSF mittels /etc/init.d/csf restart neustarten. Apache optimieren Erstmal wechseln wir in unser Apache Verzeichnis. Normalerweiße finden wir Apache in /etc/apache2, aber das ist nicht immer so. Die Apache-config Datei ist meistens in irgendeinem von diesen Ordern: /etc/apache2 /etc/apache2/conf /etc/httpd/ /etc/httpd/conf Nachdem wir im richtigen Verzeichnis sind öffnen wir die Config mittels vi oder nano. Code: vi httpd.confFalls die httpd.conf leer sein sollte oder dort nur sehr wenig drinnen steht, dann müsst ihr die apache.conf öffnen! Erstmal verringern wir die Konfiguration timeout: Code: #ändern wir in Code: #Danach suchen wir die Funtion KeepAlive Code: KeepAlive Offändern wir in Code: KeepAlive OnMaxKeepAliveRequests lassen wir auf 100. Code: #ändern wir in Code: #Und wir setzen HostNameLookups auf off (sollte sogar standartmäßig so eingestellt sein). Nun kommen wir zu einer der wichtigsten Sache. Der MPM config. Um so mehr Ram ihr habt, um so besser wird Apache laufen. Apache ist generell sehr resourcenfressend. Man kann keine MPM Config erstellen die auf jedem Server gleich gut läuft, denn es spielen viele Faktoren eine Rolle (CPU, RAM, Netzwerk, geladene Module, etc., etc.). Wir nehmen als Beispiel diese Config: Code: <IfModule prefork.c>Ich kopiere einfach mal die Beschreibung von der offiziellen Apachewebsite: Zitat:Ein einzelner Steuerprozess ist für den Start von Kindprozessen verantwortlich, die auf Verbindungen warten und diese bedienen, sobald sie eintreffen. Der Apache versucht immer, mehrere freie oder unbeschäftigte Serverprozesse vorzuhalten, die zur Bedienung eingehender Anfragen bereit stehen. Auf diese Weise müssen Clients nicht darauf warten, dass neue Kindprozesse geforkt werden, bevor ihre Anfrage bearbeitet werden kann. Wir müssen aufpassen, dass wir hier richtig rechnen, ansonst wird eventuell der gesamte RAM verwendet und ihr könnt nichts mehr am Server machen, da kein RAM mehr frei ist. MaxClient ist einer der wichtigsten Einstellungen. Apache benötigt pro MaxClient etwa 12 MB Ram. Dh. wir rechnen den Wert den wir bei MaxClients sehen * 12, bei MaxClient 256 wären wir hier schon bei fast 3,5GB Ram. Wir müssen beachten, dass das System, MySQL und andere Dienste ebenso Ram benötigt. Bei einem System mit, sagen wir mal 1GB Ram, setzen wir hier den Wert auf 50. Die anderen Optionen wie MinSpareServers kann man ebenfalls anpassen, allerdings gibt es hier bereits genug Dokumentationen. Hier kann man eine Menge Performance rausholen. Info: Beitrag ist noch in Arbeit! Original von 13speedtest37 Modifikation durch Tobias |
|||
|
26-07-2010, 07:28 AM
Beitrag #2
|
|||
|
|||
|
Re: DDoS Abwehr
Großartiges, umfassendes Tutorial !
Hat unserem Forum soeben den Hals gerettet. Danke, danke, danke... Zwei Anmerkungen: Das "Syn-Deflate Script" ist dort nicht mehr zu bekommen. Ich habe stattdessen DDOS-Deflate http://deflate.medialayer.com/ genommen. Ist das OK ? Ist dieses Skript nicht sowieso überflüssig, da dieselbe Funktion auch von der Firewall übernommen wird ? |
|||
|
26-07-2010, 01:12 PM
Beitrag #3
|
|||
|
|||
|
Re: DDoS Abwehr
Ja das DDoS-Deflate Script geht natürlich auch, wobei das Syn-Deflate Script angeblich besser gegriffen hat
![]() Gruß Flo 10.10.10 Le roi est mort! Vive le roi! |
|||
|
27-08-2010, 11:00 AM
Beitrag #4
|
|||
|
|||
|
Re: DDoS Abwehr
Hallo,
hat jemand noch das Syn-Deflate Script? falls ja könnte es mir jemand bitte uploaden und per PN schicken? Danke Voraus Mfg |
|||
|
30-08-2010, 10:48 PM
Beitrag #5
|
|||
|
|||
|
Re: DDoS Abwehr
Hier das Syn-Deflate Script
![]() <!-- l --><a class="postlink-local" href="http://www.anti-hack.net/viewtopic.php?f=9&t=55">viewtopic.php?f=9&t=55</a><!-- l --> MfG Tobias |
|||
|
15-09-2010, 06:50 AM
Beitrag #6
|
|||
|
|||
|
Re: DDoS Abwehr
Moin, moin,
also unsere "Probleme" haben wir damit schon mal gut gelöst. Allerdings kann ich nicht mehr auf Plesk zugreifen. OVH sagt es liegt an der Firewall/DDOS-Deflate kennt jemand die Einstellungen die ich vornehmen müsste um wieder auf Plesk zugreifen zu können? Adresse ist https://94.xx.xxx.111:8443/ Grüße Marquis |
|||
|
15-09-2010, 10:16 AM
Beitrag #7
|
|||
|
|||
|
Re: DDoS Abwehr
Hallo Marquis,
welche Firewall-Software hast du denn neben DDoS-Deflate noch im Einsatz? Falls APF oder CSF ebenfalls installiert ist, solltest du den entsprechenden Port in die Konfiguration der Software eintragen ![]() Am besten postest du deine Config gleich mit dazu. Gruß Florian 10.10.10 Le roi est mort! Vive le roi! |
|||
|
15-09-2010, 10:52 AM
Beitrag #8
|
|||
|
|||
|
Re: DDoS Abwehr
Hi Florian,
THX für die schnelle Antwort. Ich habe (da ziemlicher Linux NooB (nicht fragen warum ich dann einen Root habe *g*)) CSF und DDOS-Deflate nach Anleitung oben installiert. Portfreigabe dachte ich mir schon, aber wo bloß :oops: ? Die csf.conf habe ich angehängt. Gruß |
|||
|
15-09-2010, 12:33 PM
Beitrag #9
|
|||
|
|||
|
Re: DDoS Abwehr
Das ganze ist im Grunde total einfach:
In deiner Config-Datei findest du folgende Abschnitte: Code: # Allow incoming TCP portsWenn du einen neuen Port freigeben möchtest, so fügst du einfach hinter dem letzten Port ein Komma + den Port den du öffnen möchtest an. Das ganze sieht in deinem Fall dann so aus: Code: # Allow incoming TCP portsNach dem ergänzen einfach die Konfiguration speichern und schließen und die Software neu starten. Ich hoffe ich konnte dir helfen. Gruß Florian 10.10.10 Le roi est mort! Vive le roi! |
|||
|
15-09-2010, 01:10 PM
Beitrag #10
|
|||
|
|||
|
Re: DDoS Abwehr
Danke, danke, jetzt gehts.
Witzig, ich dachte genau dasselbe ausprobiert zu haben, da mir klar war es muss an den Freigaben liegen. Vielleicht habe ich den Port in eine falsche Zeile eingetragen. Nochmal Dankeschön für die gute & schnelle Hilfe |
|||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste









