PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : dos-attacken verhindern?



$3b4$t!4N
07.11.03, 15:38
hallo,
gibt es eine firewall, die feststellen kann, ob eine IP sehr viele Ping-anfragen in den letzten paar minuten angefragt hat, und dann die IP sperrt?
wenn ja, wie heißt die firewall?


danke,
$3b4$t!4N

arphuzi
07.11.03, 15:43
hi,

1. falsches forum
2. probiers mal mit iptables

viele grüsse
Christian

ps: gegen dos kann man sich nicht effektiv schützen..

johnpatcher
07.11.03, 15:45
außerdem sind es nicht nur ping packete (also echo request 8), sondern können auch sehr große tcp packete sein, die effektiver zum lamlegen sind!! Wahrscheinlich können es auch andere packete sein!!

johnpatcher

$3b4$t!4N
07.11.03, 15:53
ich hab mal gehört, dass es möglich ist, die anzahl an datenpacketen pro minute zu begrenzen...
weiß jemand mit welcher firewall das geht?


$3b4$t!4N

Jasper
07.11.03, 16:17
Original geschrieben von $3b4$t!4N
weiß jemand mit welcher firewall das geht?


netfilter (iptables) wie bereits oben erwähnt.

-j

Matzetronic
07.11.03, 21:36
hi,

zu deinem problem - vergiß es lieber.
stell dir vor, ich greife dich an und verwende dabei absenderadressen wie die von linuxforen, gmx, heise etc.
deine firewall blockt bzw. verlangsamt dann brav den zugriff auf linuxforen, gmx und heise (um bei den beispielen zu bleiben). der angreifer hat also sein ziel trotzdem erreicht, deine dienste sind nicht mehr verfügbar.

wenn du es trotzdem einrichten willst, helfen dir die iptables-optionen:



limit

Dieses Modul muss explizit mit der '-m limit ' oder '--match-limit' Option bestimmt werden. Es wird verwendet, um die Rate der Treffer einzuschraenken, sowie das Unterdruecken von Log-Meldungen. Es wird nur auf eine vorgegebene Anzahl von Malen pro Sekunde zutreffen (Standardmaessig 3 Treffer pro Stunde, mit einer Grenze von 5). Es hat zwei optionale Argumente:

--limit

Gefolgt von einer Zahl. Dies bestimmt die maximale Anzahl von erlaubten Treffern pro Zeiteinheit (Standard: pro Sekunde). Die Nummer kann explizit Einheiten bestimmen, indem '/second/', '/minute/', '/hour/' oder '/day/' oder Teile davon benutzt werden (so ist '5/second' dasselbe wie '5/s').
--limit-burst

Gefolgt von einer Zahl, die die maximale Grenze angibt, bevor das obere Limit erreicht wird.

Dieses Argument kann oft mit dem LOG Ziel verwendet werden, um begrenzt zu loggen. Um zu verstehen, wie das funktioniert, lass uns einen Blick auf die folgende Regel werfen, welche Pakete mit den standardmaessigen Limit-Parametern loggt:


# iptables -A FORWARD -m limit -j LOG

Das erste Mal, wenn diese Regel erreicht wird, wird das Paket geloggt; tatsaechlich werden, da die Standardgrenze 5 ist, die ersten 5 Pakete geloggt. Danach wird es zwanzig Minuten dauern, ehe ein Paket wieder von dieser Regel geloggt wird, ungeachtet dessen, wieviele Pakete wirklich ankommen. Ausserdem, wenn zwanzig Minuten vergehen, ohne dass ein treffendes Paket ankommt, wird die Grenze um eins zurueckgeschraubt: Wenn 100 Minuten lang kein Paket auf die Regel trifft, steht der Zaehler wieder auf Null, da, wo wir angefangen haben.

Zur Zeit kannst Du keine Regel mit einer Ladezeit groesser als 59 Stunden erstellen. Wenn Du also eine Standard-Rate von 1 pro Tag setzt, muss Deine Grenzrate bei weniger als 3 liegen.

Du kannst dieses Modul auch verwenden, um verschiedene Denial Of Service Attacken (DoS) zu verhindern, um mit einer schnelleren Rate Deine Erreichbarkeit zu verstaerken.

Syn-flood Schutz:

# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

Verstohlene Portscanner:

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Ping of death:

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

Dieses Modul arbeitet wie eine "hysteresis door", wie in dem untenstehenden Graphen gezeigt wird.


Rate (pkt/s)
^ .---.
| / DoS \
| / \
Kante des DoS -|.....:.........\.......................
= (limit * | /: \
limit-burst) | / : \ .-.
| / : \ / \
| / : \ / \
Ende des DoS -|/....:..............:.../.......\..../.
= limit | : :`-' `--'
-------------+-----+--------------+------------------> Zeit (s)
LOGIK => Trifft | Trifft nicht| Trifft

Sagen wir, es trifft ein Paket pro Sekunde, mit einer 5 Paket Grenze, aber es kommen 4 Pakete pro Sekunde ein, dann drei Sekunden, und fangen dann in drei Sekunden wieder an:


<--Flood 1--> <---Flood 2--->
Total ^ Line __-- YNNN
Packets| Rate __-- YNNN
| mum __-- YNNN
10 | Maxi __-- Y
| __-- Y
| __-- Y
| __-- YNNN
|- YNNN
5 | Y
| Y Schluessel: Y -> Regel trifft zu
| Y N -> Regel trifft nicht zu
| Y
|Y
0 +-------------------------------------------------->Zeit (Sekunden)
0 1 2 3 4 5 6 7 8 9 10 11 12


Du kannst sehen, dass die ersten 5 Pakete das eine Paket pro Sekunde ueberschreiten duerfen, dann kommt die Grenze. Wenn es eine Pause gibt, kann eine neue Grenze gesetzt werden, aber nicht jenseits der maximalen Rate, die von dieser Regel bestimmt wurde (1 Paket pro Sekunde bis die Grenze erreicht ist).


http://www.netfilter.org/documentation/index.html

sperren würde ich dir auf keinen fall empfehlen.

gruß,
matze

$3b4$t!4N
07.11.03, 21:38
danke für deine ausführliche anleitung...
würde es sich deiner meinung nach also nicht lohnen eine firewall zu installieren?


$3b4$t!4N

derRichard
07.11.03, 21:50
hallo sebastian! (oder wie auch immer dein extrem leet haxor-name sein mag ;-)

gegen einen dos-angriff hilft nix.
ein ip-filter bringt keine sicherheit, er stoppt nur pakete.
wenn das paket ankommt und der kernel dropt oder reject es, dann hat es doch schon traffic gemacht und genau darauf baut ein dos-angriff auf.

//richard

RapidMax
07.11.03, 22:35
Nicht ganz. DoS ist ja die Abkürzung für "Denial of Service". D.h. ein DoS-Angriff muss nicht zwingen darauf auslaufen, die verfügbare Bandbreite auszuschöpfen*. Es ist auch möglich DoS-Angriffe zu führen, indem man einem Dienst zuviel Arbeit zumutet (z.B. extrem Rechenaufwendige Anfragen, wie z.B. eine Datenbank-Abfrage), oder versucht möglichst viele Instanzen des Dienstes zu starten, bis kein Speicher mehr zur Verfügung steht. Ebenfalls ist es möglich, geziehlt Programm-Fehler auszunutzen, die den Dienst, oder gar das Betriebsystem abstürzen lassen.

Gegen diese Arten von DoS-Angriffen kann man sich wehren, indem man die Fehler vermeidet (keine Rechenaufwendigen Abfragen erlauben, Instanzen des Dienstes begrenzen, regelmässig Sicherheits-Updates durchführen).

Nur gegen die Variante, von der hier gesprochen wurde, ist fast keine Kraut gewachsen: Ausschöpfen der Bandbreite. Entweder wird ein solcher Angriff von einem Host mit grösserer Bandbreite aus geführt (wobei die Absenderadressen in der Regel gefäscht werden), oder es wird im Rahmen eines sogenannten dDoS (distributed DoS), von vielen Rechnern aus ein Angriff gestartet, so dass die summierte Bandbreite dem Zielrechner die Leitung verstopft.

Mit einer Firewall kannst du hier nichts bewirken, da die Pakete dann bereits bei dir sind und die engste Stelle - die Leitung zu dir - schon hinter sich haben. Es gibt hier nur eine mir bekannt Lösung um solche Angriffe abzuwehren. Allerdings können sich das nur grosse Websites leisten und es ist die Zusammenarbeit mit dem Provider notwendig: Der Provider (IP-Carrier) filtert die Pakete schon bei sich raus. Damit sind dann wenigstens noch die Dienste verfügbar, welche nicht attackiert werden.

Gruss, Andy