Re: ipfw limit

From: Christian Lackas <c.lackas(at)kfa-juelich.de>
Date: Sat, 21 Aug 2004 12:45:16 +0200

* Sven Müller <sven(at)hitnet.rwth-aachen.de> [040820 15:56]:

Hallo Sven,

> Mittels ipfw würde ich gerne die Anzahl ausgehender Verbindungen
> sperren.
> /sbin/ipfw add deny tcp from any to any limit src-addr 50

limit funktioniert etwas anders. Mehr so wie auch keep-state. Wenn du
eines davon verwendest, dann geht ipfw von stateful inspection aus. Es
legt also dynamische Regeln an, beim limit aber halt nur bis zum
entsprechenden Limit.

> Aber wenn ich drüber nachdenke weiss ich auch nicht so recht was das
> Ergebniss von dieser Zeile sein soll.

Obiges tut mich Sicherheit nicht das was du willst, da es ja deny Regeln
anlegt (aber maximal 50 pro Quell-Adresse). Du kannst z.B. mal folgendes
Ausprobieren, um ein wenig rumzuspielen:

    ipfw add 0050 allow ip from any to host limit src-addr 1
    ipfw add 0060 deny ip from any to host

Dann loggst du dich (per SSH z.B.) auf host ein. Das sollte klappen.
Wenn du jetzt aber noch eine Verbindung aufbauen willst, dann solltest
du ein Conection Refused bekommen.

> Was ich haben möchte ist, dass z.B. in einer Stunde 100 Verbindungen
> erlaubt sind und danach einfach nix mehr geht.

Das geht mit der limit-Regel nicht, da das nur die Anzahl der
gleichzeitigen Verbindungen zählt (bzw. die Anzahl der dynamischen
Regeln, die es maximal anlegen wird). Wenn das Limit ausgeschöpft ist,
dann matched die Regel nicht mehr (darum ist das deny oben noch wichtig,
weil sonst später meine Regeln matchen würden, die jeden Traffic von
innen nach aussen durchlassen).

Aber dein Plan ist auch noch so schwer umzusetzen. Ich würde einfach
eine count-Regel anlegen und per cronjob prüfen, ob es schon 100
Verbingungsaufbauten gab, und wenn ja, dann eine Regel einfügen, die
weitere unterdrückt. Jede Stunde wird der Counter wieder gelöscht und
ggf. die Regel wieder entfernt. Ist ein kleines Shell-Skript.

Gruss
 Christian

-- 
Hawkin's Fortschrittstheorie:
Fortschritt besteht nicht darin, eine falsche Theorie durch eine
richtige zu ersetzen. Er besteht darin, eine falsche Theorie durch eine
spitzfindigere falsche zu ersetzen.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 21 Aug 2004 - 12:45:36 CEST

search this site