Forum: PC Hard- und Software iptables -> bestimmte ip's sperren


von mike (Gast)


Lesenswert?

tach,

ich steh irgendwie gerade auf dem schlauch.
habe ein forwarding auf einen internen webserver:

$IPT -t nat -A PREROUTING -i $DEV_INET -p tcp --sport $UNPRIVPORTS -d 
$IP_INET --dport 80 -j DNAT --to-destination 192.168.0.1
$IPT -A FORWARD -i $DEV_INET -o $DEV_LAN -p tcp --sport $UNPRIVPORTS -d 
192.168.0.1 --dport 80 -m state --state NEW,ESTABLISH

so und nun möchte ich aber bestimmte IP's davon bzw. generell 
ausschliessen. ein simples:
$IPT -A INPUT -s $BADIP -j DROP
funktioniert jedoch nicht. Da habe ich noch mal in das iptables 
blockdiagramm geschaut und nun bin ich verwirt.

prerouting------>forward------->postrouting
            |              |
            |              |
          input->local->output

weia da jemand was ;-)  ?

von hp-freund (Gast)


Lesenswert?

Falls das forward nicht die anderen Regeln aufhebt, versuch mal:

$IPT -I INPUT -s $BADIP -j DROP

das fügt die Regel am Anfang der Regeln ein.

http://www.netadmintools.com/art216.html

von mike (Gast)


Lesenswert?

nee, funktioniert auch nicht. kann auch nicht, da mit prerouting schon 
entschieden ist was mit dem paket passiert -> es erreicht die 
INPUT-chain gar nicht erst. <-laut handbuch gewinnt der erste treffer. 
d.h. auch, das das 'FORWARD' das  '-I INPUT' nicht aufheben kann...

von mike (Gast)


Lesenswert?

eine möglichkeit wäre, die $BADIP auf dem webserver zu filtern aber ich 
wollte das eigentlich auf der firewall regeln...

von Peter II (Gast)


Lesenswert?

mike schrieb:
> nee, funktioniert auch nicht. kann auch nicht, da mit prerouting schon
> entschieden ist was mit dem paket passiert -> es erreicht die
> INPUT-chain gar nicht erst.
nein, jedes externe Packet muss durch die Input chain. Es ist unabhängig 
ob es im NAT teil schon bearbeitet wurden ist.

Zum testen kann du ja einfach mal

iptable -I INPUT -j DROP machen - dann geht nichts mehr von aussen.

von mike (Gast)


Lesenswert?

peter du hast unrecht aber mich auf etwas gebracht.
ohne es bis jetzt getestet zu haben, aber ich glaub ich weis die lösung:

das paket kommt an und landet in der prerouting chain. dort wird 
festgestellt, das es in ein anderes netz geht. und da liegt der hund 
begraben! es muss lauten:

$IPT -A FORWARD -s $BADIP -j DROP
$IPT -A FORWARD -i $DEV_INET -o $DEV_LAN -p tcp --sport $UNPRIVPORTS -d
192.168.0.1 --dport 80 -m state --state NEW,ESTABLISH

@PETER:
..deswegen erreicht es die INPUT chain nicht.
mein blockdiagramm ist vielleicht etwas unglücklich, dieses ist besser:
http://1.bp.blogspot.com/_VN8zHqq8Ns8/SLepX1xMFkI/AAAAAAAABPM/V7-gN94R70U/s1600-h/fire_tables.png



werde ich gleich mal testen!

von Peter II (Gast)


Lesenswert?

mike schrieb:
> @PETER:
> ..deswegen erreicht es die INPUT chain nicht.
> mein blockdiagramm ist vielleicht etwas unglücklich, dieses ist besser:

stimmt, ich war noch beim vorgänger von iptables. Bei iptables muss ein 
externen Packet nur durch FORWARD.

sorry

von mike (Gast)


Lesenswert?

jo, so gehts! dank euch trozdem. ist immer wieder hilfreich hier vorbei 
zu schauen... :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
Lade...