[SYIXX]DDos Protect

12/29/2010 11:54 .SYiXX#1
Hallo

Einen guten Artikel dazu findest du hier: Denial-of-service attack - Wikipedia, the free encyclopedia
------
Da viele Pserver bzw. Hompge´s keine ahnung haben sich gegen DDos zu schützen habe ich mal vor langer zeit ein kleines tut geschrieben... Viel Spaß
------
Sich vor DDoS zu schützen ist fast immer ein Problem.
Zuerst solltest du bei deiner Firewall "fallback" anwenden, um dich nicht selbst bei einer fehlerhaften Konfiguration zu sperren:
Quote:
Code:
./firewall start&&sleep 60&&./firewall stop
Bei diesem Befehl wird die Firewall eine Minute (60 Sekunden) gestartet und man kann das Ganze testen.

Falls bereits eine ip-tables-Konfiguration besteht, dann verwende folgenden Befehl:
Quote:
Code:
iptables-save > /tmp/savediptables
und danach
Quote:
Code:
at now + 5min
iptables-restore < /tmp/savediptables
<Strg>+<D>
Die Konfiguration von IP-Tables wird gesichert und nach 5 Minuten wieder hergestellt.

Die wichtigste Abwehr bei SYN-Flood ist unter Linux folgender Befehl:
Quote:
Code:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
Wenn du nur von ein paar Rechnern angegriffen wirst, dann kannst du diese einfach mit ip-tables blocken:
Quote:
Code:
iptables -I INPUT -s dieIP -j ****
Falls der Angreifer auf die Idee kommt und wählt sich neu ins Internet ein, dann sperre einfach einen Gesamten IP-Bereich:
Quote:
Code:
iptables -I INPUT -s dieIP/24 -j ****
Eine weitere Möglichkeit wäre ".htaccess":
Dazu erstellst du dir eine Datei namens ".htaccess" (der Punkt davor ist wichtig
!) (ins Hauptverzeichnis) mit folgendem Inhalt:
Quote:
Code:
AuthType Basic
AuthName "Benutzername = ddos | Passwort = ddos"
AuthUserFile /deinpfad/.htpasswd
require valid-user
ErrorDocument 401 "<center><h3>DDoS-Attacken</h3></center><br>Wir stehen zur Zeit unter DDoS. Der Login blockt die Abfragen etwas ab. <br><br><B>Bitte geben Sie als Benutzernamen ddos ein und als Passwort ebenfalls ddos.</B> <br><br>Vielen Dank für Ihr Verständnis!"
Danach musst du noch eine Datei namens ".htpasswd" erstellen. Zum Beispiel mit dem Inhalt:
Quote:
Code:
ddos:$1$AqACcmQm$M0JjIBBDlVtTtrYWsKE4G.
Nun wäre der Benutzername "ddos" und das Passwort ebenfalls "ddos". Einen Passwort-Generator findest du hier: [Only registered and activated users can see links. Click Here To Register...]

Von dieser Methode rate ich allerdings ab, da es die Benutzer nervt und lange nicht so viel wie iptables bringt.

Die wohl beste Möglichkeit wäre eine Hardware-Firewall. Dies ist aber zugleich auch die teuerste Lösung.
[Only registered and activated users can see links. Click Here To Register...]
Im Internet gibt es aber auch Anti-DDos Scripte. Diese sollen die Angriffe angeblich abwehren. Ich weiß aber nicht, ob das wirklich etwas bringt.

Aber eins solltest du dir merken:
Wenn jemand eine 100K Armee Bots auf dich loslässt dann hilft das auch nicht mehr, und erst Recht nicht wenn 50k SYN Flood und 50K ICMP und noch TCP UDP, wenn man das alles mischt dann ist sense mit allem.

Und natürlich auf jeden Fall sofort deinen Hoster melden und Anzeige erstatten.

Hier noch etwas zum lesen: [Only registered and activated users can see links. Click Here To Register...]

----

Hab da noch etwas gefunden:
Hier auch noch ein paar Abwehrmaßnahmen (manche habe ich schon erwähnt, aber es sind auch neue dabei):
Zitat:
Quote:
WICHTIGSTE ABWEHR:

1. Verwende Syn-Cookies und du hast garkeine Probleme mehr mit SYN-Attacken:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

2. iptables, dort auffaellige Bereiche sperren, z.B. mit CIDR Notation (ggf. apt-get install netmask .. mit netmask ipstart:ipend ... gutes Umrechnungstool)
iptables -I INPUT -s 88.224.0.0/16 -j **** # block 88.224.0.0 to 88.255.255.255 TTNet (TTnet Autonomous System)

3. ddos deflate v0.6 installieren von [Only registered and activated users can see links. Click Here To Register...] - zaehlt wie oft eine ip gleichzeitig verbindungen aufbaut mittels netstat und wenn uebr schwellwert werden diese geblockt. am besten als cron job jede minute aufrufen.
/usr/local/ddos ... ddos.conf ... wenn kein apf installiert apf=0 ... connection limit z.b. 35 oder 50



DDOS Deflate v0.6 - v1.0 in Planung:

[Only registered and activated users can see links. Click Here To Register...] - Projektseite auf [Only registered and activated users can see links. Click Here To Register...]

Script installiert sich in /usr/local/ddos/ und zaehlt Anzahl Verbindungen je IP, wenn ueber Schwellwert werden diese per
APF oder iptables fuer bestimmte Zeit (alles in ddos.conf einstellen) gebannt

Config: ddos.conf bei NO_OF_CONNECTIONS=150 ruhig runter gehen auf 35, apf auf 0, falls nicht vorhanden
CRON: cronjob ggf. manuell einrichten */1 * * * * root pfad parameter ...

IPTABLES
[Only registered and activated users can see links. Click Here To Register...]
http://de.wikipedia.org/wiki/Netfilter/iptables∞


#Limit bietet Schutz vor "Syn-Flood-Attacken
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT


Pakete bestimmter hosts/ranges wegschmeissen:

iptables -I INPUT -s 88.224.0.0/16 -j **** # block 88.224.0.0 to 88.255.255.255 TTNet (TTnet Autonomous System)

iptables -I INPUT -s 85.0.0.0/8 -j ****
iptables -I INPUT -s 88.0.0.0/8 -j ****


mit hilfe von iptables könnt ihr ein paar sachen festlegen, wie z.b die max connections pro IP beschränken auf z.b. 10
und ihr könnt mit hilfe von iptables packet verwerfen welche sich nicht an den korrekten Aufbau einer TCP Verbindung halten ..

z.b.
# alle TCP-Sessions müssen mit einem SYN beginnen, sonst werden sie verworfen
$iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "Stealth Scan"
$iptables -A INPUT -p tcp ! --syn -m state --state NEW -j ****

# ungewöhnliche Flags verwerfen
$iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j ****
$iptables -A INPUT -p tcp --tcp-flags ALL ALL -j ****
$iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j ****
$iptables -A INPUT -p tcp --tcp-flags ALL NONE -j ****
$iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j ****
$iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j ****

# SYN-Flood-Schutz
$iptables -N syn-flood
$iptables -A INPUT -p tcp --syn -j syn-flood
$iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$iptables -A syn-flood -j ****

# Setzt die MMS (Maximum Segment Size) auf weniger 40Bytes für SYN,RST SYN Packete
$iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# max. 10 neue Verbindungen in 5 Sekunden pro Quelladresse erlauben, nimmt man meist für SSH
$iptables -N tcp_packets
$iptables -A tcp_packets -p TCP -i $wan_iface --dport 22 -m state --state NEW -m recent --set
$iptables -A tcp_packets -p TCP -i $wan_iface --dport 22 -m state --state NEW -m recent --update --seconds 5 --hitcount 10 -j ****
$iptables -A tcp_packets -p TCP -i $wan_iface --dport 22 -j ACCEPT

oder

# limitiert die Anzahl von HTTP-Verbindungen einer IP-Adresse auf vier Verbindungen
iptables -A INPUT -p tcp --dport 80 -m iplimit --iplimit-above 4 -j REJECT

Es gibt noch weiter Möglichkeiten, musst ihr einfach mal suchen ..
--michael bonge--


SYN Cookies
syn wiki




Gröe der Backlog-Queue anpassen, je nach Hardware. Standard 1024 offene SYN_RECV's, z.B. auf 256:
echo 1024 > /proc/sys/net/ipv4/tcp_max_syn_backlog

Syn Packets Straffung:
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time




PDFs zu SYN Flood DDOS bei [Only registered and activated users can see links. Click Here To Register...] durcharbeiten


IP-Netze nach Ländern, fertig für die .htaccess habe ich unter [Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]






Achja, das ist auch eine gute Resource als Basis für IPTables Firewalls:
[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]


[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]




in der apache2.conf
<Files index.pl>
SetHandler perl-script
PerlHandler Apache:Zunge raus Rout
Order Deny,Allow
Deny from 85.
Deny from 88.
</Files>

<Location /> <-- nicht garantiert, bessere loesung gesucht, evtl <Files *> Container besser
Order Deny,Allow
Deny from 85.
Deny from 88.
</Location>



KeepAlive OFF setzen:
Bei mir /etc/apache2/apache2.conf folgendes suchen:
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
KeepAlive On

Ändern auf

KeepAlive Off

Auf die Weise bricht der Apache offene Anfragen einfach ab.... und die Last füllt wieder


.htaccess im Hauptverzeichnis - gilt fuer alle Unterverzeichnisse
Order Deny,Allow
deny from 192.168



APF

APF ist eine Abstraktionslayer zum einfachen konfigurieren von Netfilter via IPTables.
APF enthält schlicht bekannte Schalterchen und Drehknöpfe um verschiedenen Angriffsmustern den Hahn etwas abzudrehen.
Es höngt halt viel von dem auf RH verwendeten Linux ab, ob synflood protection schon an ist (Debian std.) usw.
APF ([Only registered and activated users can see links. Click Here To Register...]) legt halt viele Hebel schon mal richtig



OK, ihr könntet folgende 2 Programme noch zusätzlich installieren:
[Only registered and activated users can see links. Click Here To Register...]
und
[Only registered and activated users can see links. Click Here To Register...]

Beides zusammen schafft auch noch mal einiges ins reine.



Und wenn nix mehr hilft dann:
Sperren einer einzelnen "bösen" IP-Adresse bzw. eines Netzblocks
per iptables-Filter lässt sich leicht eine einzelne IP-Adresse blocken

iptables -I INPUT -s böse_IP -j ****

Es kann auch ein ganzer IP-Adressbereich geblockt werden, z.B.

iptables -I INPUT -s 213.133.99.0/24 -j ****

Das Blockieren macht bei dynamischen Einwahl-IP's des Angreifers/Störers natürlich wenig Sinn.



Schalte doch einfach vor deinen Server (oder machst es auf Softwarebasis) einen Router die diese Pakete ausfiltert.
Ein Text dazu: [Only registered and activated users can see links. Click Here To Register...]



Ich weiß ja nicht, wo ihr eure Seiten hostet, aber wenn ihr einen Rootserver habt, könnt ihr Einstellungen vornehmen, wenn nicht mußt euer Provider irgendwas machen.
Eine kurze Recherche im ergab diese Seite:
[Only registered and activated users can see links. Click Here To Register...] (link von der wikipedia).
Interssant ist eigendlich dies hier:
SYN cookies are now a standard part of Linux and FreeBSD. They are, unfortunately, not enabled by default under Linux. To enable them, add
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

to your boot scripts.
Ich hoffe, ihr könnt die Attacken abwehren.
12/29/2010 12:07 NotEnoughForYou#2
andre schrift bitte :X ... sonst siehts ganz gut aus ^.^
12/29/2010 12:16 .SYiXX#3
Quote:
andre schrift bitte :X ... sonst siehts ganz gut aus ^.^
//Schriftfarbe geändert
12/29/2010 13:13 Fullscreen#4
Wusste nicht, dass du auch hier noch aktiv bist. Nice!
12/30/2010 09:20 .SYiXX#5
Quote:
Wusste nicht, dass du auch hier noch aktiv bist. Nice!
Dankschön (:
01/01/2011 16:56 .SYiXX#6
PUSH
01/01/2011 17:06 omer36#7
diejenigen, die sich dafür interessieren, werden das schon finden...
und so weit unten war dein thread nun auch nciht :facepalm:
01/01/2011 18:19 derpo#8
das ist vielleicht eine dumme Frage, aber wo tippt man diesen Code ein?
Oder geht das nur bei Linux
01/05/2011 04:17 -ReV-#9
Quote:
Wenn jemand eine 100K Armee Bots auf dich loslässt dann hilft das auch nicht mehr, und erst Recht nicht wenn 50k SYN Flood und 50K ICMP und noch TCP UDP, wenn man das alles mischt dann ist sense mit allem.
Dann zeig mir mal jemand der nen 100k B-Net hat.
Es reichen schon 1/2 K Bot's um das "Anti-DDoS" Script zu durchbrechen :P
Teste es mal dann weisste was ich meine.

Aber bei SYN Flood ist sowieso schluss.

Man brauch nicht alles mischen, schon garnicht wenn man wie du sagst 100k Zombies hat x.x....Da reicht schon 100k auf SYN Flood :)


*edit*

Denial-of-service attack ??
Das nenn ich nicht DDoS, wenn du schon aufklärungslink's postest dann bitte auch die Richtigen!
Denn "Denial of Service" und "Distributed Denial of Service" sind grundlegend verschiedene Sachen...

"Denial of Service" = DoS | "Distributed Denial of Service" = DDoS

Also ich weis nicht was dein Script jetzt genau darstellen soll, ein Anti - DoS Script oder ein Anti - DDoS Script?