PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eingehenden/ausgehenden Traffic nur über tun0 erlauben - Ansätze?



-hanky-
18.04.11, 19:24
Hi,

ich nutze hier einen VPN-Zugang (OpenVPN) und habe die Erfahrung gemacht, dass bei einem Ausfall des Zugangs o.Ä. von mir unbemerkt die Verbindung über tun0 abgebaut und danach automatisch wieder alles über das eigentliche Netzwerkinterface, eth0, aufgebaut wird.

Was an sich eine sinnvolle Sache ist.

Nichtstdestotrotz würde mich interessieren, ob es möglich ist, sämtlichen Netzwerkverkehr der nicht über tun0 läuft zu blockieren; sollte tun0 nicht existieren so soll auch kein Netzwerktraffic möglich sein.

Mein erster (ziemlich dämlicher, wie sich herausstellen sollte ;)) Gedanke war, einfach per iptables alles was über eth0 ein- oder ausgeht zu blockieren, das funktioniert so aber natürlich nicht.

Vielleicht hat ja irgendjemand der sich besser in der Materie auskennt als ich eine gute Idee!

-hanky-

Newbie314
18.04.11, 20:22
Wenn man Dansguardian einrichtet leitet man alle Pakete mit Ziel 80 / 8080 / 443 auf einem bestimmten Port so um dass sie über Dansguardian müssen.

Bei einem Kiosksystem habe ich mal alle Pakete eines bestimmten Benutzers die nicht an Dansguardian gingen geblockt...

Vielleicht hilft dir etwas in der Art ...

DrunkenFreak
18.04.11, 20:51
Wie hast du denn die Regel aufgebaut?

Hat eth0 eine IP? Schon probiert über diese als Quelle und Ziel zu blocken?

Für dämliche Versuche hilft sleep 600 ; iptables -F :)

-hanky-
18.04.11, 21:31
Wie hast du denn die Regel aufgebaut?

Hat eth0 eine IP? Schon probiert über diese als Quelle und Ziel zu blocken?

Für dämliche Versuche hilft sleep 600 ; iptables -F :)

Hi,

wenn ich die IP-Adresse für ausgehende Verbindungen blockiere, funktioniert das komplette Netz nicht mehr.

Im konkreten Fall sähe meine iptables-Regel so aus:



iptables -A OUTPUT -s 192.168.0.101 -j DROP


Das müsste doch so eigentlich passen, oder nicht? Wie gesagt, hab von iptables wenig bis gar keine Ahnung, kann also gut sein dass ich da totalen Mist fabriziere.

Dämliche Versuche sind kein Problem, ich sitze ja lokal vor der Kiste :D

@ Newbie314: Ich glaube das ist nicht ganz mein Problem, aber ich schau mal ob mir die Variante nicht vielleicht doch weiterhilft. Danke jedenfalls schonmal für den Tipp!

-hanky-

DrunkenFreak
18.04.11, 21:44
Es gibt einen Schalter für das Interface, den du benutzen kannst.



iptables -A INPUT -i eth0 -j DROP
#bzw
iptables -A OUTPUT -o eth0 -j DROP


Das Problem könnte aber sein, dass tun0 nur ein Pseudodevice ist und alles andere über eth0 rausschickt. Da müßtest du dann weitere Regeln erstellen. Irgendwie in die Richtung "Wenn Quelle tun0, dann leite über eth0, sonst verwerfe".

Eventuell reicht auch blocken von allem außer das passende Protokoll. Siehe -p in der manpage.

-hanky-
18.04.11, 22:15
Hi,

habe (vorläufig) eine Lösung gefunden die ich euch nicht vorenthalten möchte:



ROUTER_IP="1.2.3.4"
VPN_RANGE="2.3.4.5-2.3.4.7"

iptables -N vpn
iptables -F vpn
iptables -A INPUT -i eth0 -j vpn
iptables -A FORWARD -i eth0 -j vpn
iptables -A OUTPUT -o eth0 -j vpn

iptables -A vpn --dst $ROUTER_IP -p udp --dport 53 -j ACCEPT
iptables -A vpn -m iprange --dst-range $VPN_RANGE -p udp --dport 1194 -j ACCEPT
#iptables -A vpn -m state --state NEW,INVALID -j LOG \
#--log-prefix "Connection not allowed:"
iptables -A vpn -m state --state NEW,INVALID -j DROP


Damit werden zuverlässig alle Verbindungen von eth0 außer zu den IPs des VPN-Servers (hier: 2.3.4.5,2.3.4.6,2.3.4.7) mit dem UDP-Port 1194 (OpenVPN) sowie zum Router zu Port 53 UDP (DNS-Auflösung) geblockt.

Sobald die VPN-Verbindung wegbricht, ist kein ausgehender Traffic mehr möglich. Die Logmessages habe ich auskommentiert, da diese mir sonst die Konsole zumüllen.

Die Ansätze für die Lösung stammen aus dem Buch "Linux-Firewalls, 2. Ausgabe" [1].

Danke trotzdem für die Mühe!

-hanky

[1] http://www.oreilly.de/german/freebooks/linuxfire2ger/toc.html, Kapitel 12

derRichard
19.04.11, 22:02
hi!

ich würde es über das routing machen.
lösche deine default-route.
und lege eine neue an:

ip r a openvpn-server via dein-router

der openvpn-client legt dann beim verbinden die default-route über tun0 an.
bricht tun0 zusammen kann man wieder nur den openvpn-server erreichen...

hth,
//richard

-hanky-
22.04.11, 10:03
hi!

ich würde es über das routing machen.
lösche deine default-route.
und lege eine neue an:

ip r a openvpn-server via dein-router

der openvpn-client legt dann beim verbinden die default-route über tun0 an.
bricht tun0 zusammen kann man wieder nur den openvpn-server erreichen...

hth,
//richard

Hi,

danke für den Hinweis, ich probiere das bei Gelegenheit mal aus.

Da ich den network-manager nutze habe ich allerdings die Vermutung, dass dieser bei einem Zusammenbruch der VPN-Verbindung die Route einfach von sich aus automatisch neu setzt. Werde das aber wie gesagt mal ausprobieren und dann hier berichten.

-hanky-