Sponsor-Board.de

Normale Version: Pakete limitieren per iptables
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend,

ich habe auf einem dedizierten Root-Server (Debian 6) 3x CounterStrike:Source-Server am laufen und benötige Hilfe mit iptables. Da ich gestern Nacht Probleme mit (warscheinlich) Reflected-DDoS-Attacken hatte (mein Server antwortete auf Tausende von Paketen sodaß ich Abuse-Warnungen von Hetzner erhalten habe), möchte ich jetzt alle Verbindungen bzw. Pakete per iptables limitieren, sodass dies nicht mehr passieren kann. Auf dem Server laufen nur die Gameserver sowie SSH. Beide sind vernünftig abgesichert. Nur was iptables angeht fehlt mir jegliche Erfahrung.

Ich wäre für jede Hilfe dankbar! Gerne hier im Thread oder auch per TeamSpeak/Skype.

MfG
also du könntest den eingehenden traffic limitieren mittels:
iptables -A INPUT -p udp --dport $port -m limit --limit $x/second --limit-burst $y/second -j ACCEPT

$port wird natürlich mit dem Port der gameserver ersetzt.
$x ist die anzahl von paketen pro sekunde, die im durchschnitt ankommen soll.
$y ist die anzahl von paketen pro sekunde, die viel zu viel sind Biggrin

(das ganze versteht sich natürlich pro Source-IP)

Ich habe nur keine Erfahrung damit, wieviele Pakete pro Sekunde für einen CSS-Server normal sind, weswegen ich das mal als Variablen offen gelassen habe.

EDIT:
Das ganze macht natürlich nur Sinn, wenn nach dem ACCEPT eine entsprechende DROP regel folgt Biggrin
Also z.B.
iptables -A INPUT -p udp --dport $port -j DROP
Vielen Dank, genau so etwas habe ich gesucht! Das ging ja fix. Biggrin

Buchstabensalat schrieb:
$x ist die anzahl von paketen pro sekunde, die im durchschnitt ankommen soll.
$y ist die anzahl von paketen pro sekunde, die viel zu viel sind Biggrin


Wo ist genau der Unterschied zwischen den Paketen die ankommen sollen und die zu viel sind?

Wie kann ich denn rausfinden wieviele Pakete CS:S ca. benötigt? Smile

Ich hab mich grad selbst nochmal in limit-burst eingelesen.
Ich glaube es jetzt richtig verstanden zu haben. Also --limit gibt wie gesagt den Durchschnitt an.
--limit-burst gibt die obere Grenze an.

Beispiel:
--limit = 3/stunde (krasses Beispiel Biggrin)
--limit-burst = 6

Dann sollte das soviel bedeuten, dass 6 Pakete innerhalb der ersten Stunde akzeptiert werden. Danach gilt allerdings, dass nur noch 3 Pakete pro Stunde(genau genommen eins pro 20 Minuten) akzeptiert werden.

Also --limit gibt an: ein Paket pro Zeiteinheit (bei 3/stunde ist die Zeiteinheit 60 minuten/3) und --limit-burst gibt an, ab wann --limit gültig ist (also in dem Fall ab dem 7. Paket)

Wobei ich dann den Post davor korrigieren muss, dass bei limit-burst keine Zeitangabe gemacht wird Wink (also das /second wegfällt).

Wie du jetzt genau prüfen kannst, was normal ist ... das könnte länger dauern Biggrin
Dazu könntest du z.b. erstmal ne limit regel erstellen, und anstelle der DROP regel ne zweite ACCEPT regel.

Mit iptables -nL -v kannst du sehen, wieviele Pakete von welcher Regel betroffen waren.
Im Idealfall sollten von der limit-Regel alle betroffen sein, und von der ACCEPT-Regel garkeins.

(mit iptables -F kannst du alle regeln löschen und dadurch auch die Zähler zurücksetzen)
Solltest du den Idealfall erreicht haben kannst du die zweite ACCEPT-Regel durch eine DROP Regel ersetzen.

Das Problem ist natürlich, dass du während deiner Tests natürlich auch geflooded werden kannst, und damit dann zu hohe Limits setzt.
[Link: Registrierung erforderlich]
Dafür gibs das, verhindert im allgemeinen das irgend ein Kiddy sein Programm an deinen Server ausprobiert.
bzw [Link: Registrierung erforderlich]
Referenz-URLs