Gleich noch eine Frage - in einem neuen Thread wegen des neuen Themas:
Ich nutze (wie schon gesagt) BS als reinen AP und habe dazu LAN und WLAN in eine Netzwerkbrücke gesteckt. Jetzt würde ich aber gerne trotzdem diverse Sachen ausfiltern und dazu iptables nutzen. Beispielsweise filtere ich Windows-Netzwerkfreigaben mit:
iptables -t filter -A FORWARD -d 192.168.1.255 -p tcp -sport 137:139 -dport 137:139 -j DROP
iptables -t filter -A FORWARD -d 192.168.1.255 -p udp -sport 137:139 -dport 137:139 -j DROP
iptables -t filter -A INPUT -d 192.168.1.255 -p tcp -sport 137:139 -dport 137:139 -j DROP
iptables -t filter -A INPUT -d 192.168.1.255 -p udp -sport 137:139 -dport 137:139 -j DROP
Allerdings schlagen die Filter der FORWARD-Kette nicht an, obwohl sie es sollten (vgl. http://ebtables.sourceforge.net/br_fw_ia/PacketFlow.png). Fehlt dem Kern von BS die "Bridged IP/ARP packets filtering"-Option oder mache ich was falsch?
Beste Grüße.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Wie schon richtig verlinkt benutzt man bei Bridge-Interfaces ebtables um Pakete auf Layer2 zu filtern.
Deshalb können deine Regeln gar nicht ziehen, weil gebridgte Pakete niemals die iptables FORWARD chain
durchlaufen, denn da gehen nur geroutete Pakete durch.
Also am besten mal mit der Syntax von ebtables vertraut machen und die Regeln entsprechend anpassen.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Naja, das stimmt nicht ganz. Viele Sachen bei bridges lassen sich auch mit iptables machen. Hilfreich ist dabei vor allem dieses Diagramm: http://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
Die INPUT und FORWARD chain passen in diesem Fall. @mauromp: lass mal die Source-Ports weg. Die können nämlich ganz zufällig sein. Außerdem filterst du nur nach bestimmten IP-Adressen. Alle anderen IP-Adressen gehen durch. Besser ist nach dem Interface zu filtern:
iptables -t filter -A FORWARD -i br0 tcp -dport 137:139 -j DROP
iptables -t filter -A FORWARD -i br0 -p udp -dport 137:139 -j DROP
iptables -t filter -A INPUT -i br0 -p tcp -dport 137:139 -j DROP
iptables -t filter -A INPUT -i br0 -p udp -dport 137:139 -j DROP
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Nein die chains passen nicht, denn der Paketfluss traversiert die forward chain auf Layer 3 natürlich nur
wenn geroutet wird. Richtig wäre z.B. nat-PREROUTING.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
@coolman1982: ich will nicht vom Thema abschweifen, aber ich glaub weiterhin, dass du falsch liegst. Warum gehen durch eine bridge keine Pakete, wenn man FORWARD auf die default Policy DROP setzt?
Hier ein kleines Beispiel:
Ohne Zeile 24 geht bei mir kein Verkehr durch die bridge: http://paste.pocoo.org/show/560998/
Hier die config der interfaces: http://paste.pocoo.org/show/561000/
Hier die config der bridges: http://paste.pocoo.org/show/561001/
Oder findet da irgendwo routing statt?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
@coolman1982: wir haben beide Recht:. Es kommt auf den Kernel an, ob es geht. Wenn BRIDGE_NETFILTER nicht gesetzt ist, verhält es sich, wie du beschrieben hast. Ist es gesetzt, verhält es sich, so wie ich beschrieben habe.
Weitere Infos gibts hier: http://ebtables.sourceforge.net/documentation/bridge-nf.html
Ich hab gerade nachgsehen: Bei BS ist es nicht gesetzt. Also funktioniert meine Lösung nicht und man muss ebtables verwenden. @mauromp: Deine gesuchten Befehle lauten dann wohl:
ebtables -t broute -A BROUTING -i br0 -p ip -ip-proto tcp -ip-destination-port 137:139 -j DROP
ebtables -t broute -A BROUTING -i br0 -p ip -ip-proto udp -ip-destination-port 137:139 -j DROP
ebtables -t broute -A BROUTING -i br0 -p ip6 -ip6-proto tcp -ip6-destination-port 137:139 -j DROP
ebtables -t broute -A BROUTING -i br0 -p ip6 -ip6-proto udp -ip6-destination-port 137:139 -j DROP
Was ich in den vorherigen Regeln absolut vergessen hab: INPUT ist wurst, wenn auf dem Router kein SAMBA läuft. Und IPv6 darf man nicht vergessen, das wurde von den vorherigen Regeln nicht abgedeckt.
Wichtig ist auf alle Fälle das du verstehst, was die Regeln machen.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
itfriend
lass mal die Source-Ports weg. Die können nämlich ganz zufällig sein.
OK. Meine Recherchen nach sollten die Ports fix sein und wollte die Filter möglichst eng machen. Werd' zum testen mal nur auf die Zielports gehen.
itfriend
Besser ist nach dem Interface zu filtern
Bewirkt das was? Immerhin gibt es nur das eine, weil der Router lediglich LAN und WLAN hat und die zusammen in der Brücke stecken…
Apropos: Kann ich beim Filtern auch die einzelnen Schnittstellen (eth0 und wl0) weiterhin nutzen, obwohl sie in der Brücke stecken? Zum Beispiel um bestimmte Anfragen zwar raus aber nicht rein zu lassen.
itfriend
Ich hab gerade nachgsehen: Bei BS ist es nicht gesetzt.
Um bei der Sache gleich noch was mitzunehmen: Wo schaut man das nach?
itfriend
ebtables -t broute -A BROUTING
Wieso die 'broute' und 'BROUTING' und nicht 'filter' und 'FORWARD'? Erschiene mir logischer. Oder ist das eher Geschmackssache welche man nutzt?
itfriend
Und IPv6 darf man nicht vergessen, das wurde von den vorherigen Regeln nicht abgedeckt.
IPv6 ist im BS-Web-GUI komplett deaktiviert.
Und nochmal vielen Dank für die Antworten an Euch beide!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bewirkt das was? Immerhin gibt es nur das eine, weil der Router lediglich LAN und WLAN hat und die zusammen in der Brücke stecken…
Vermutlich kannst du in deinem Fall auch -i br0 weglassen.
Apropos: Kann ich beim Filtern auch die einzelnen Schnittstellen (eth0 und wl0) weiterhin nutzen, obwohl sie in der Brücke stecken? Zum Beispiel um bestimmte Anfragen zwar raus aber nicht rein zu lassen.
Ich bin mir gerade nciht sicher ob das geht. Ich würde dir nicht dazu raten das anfangen zu vermischen. Mach lieber alles auf dem bridge-interface und dann mit -in-interface und -out-interface. Wo was wie geht steht in den manpages.
Wo schaut man das nach?
In der .config aus den sourcen. (Entweder per svn auschecken oder im tarball)
Oder ist das eher Geschmackssache welche man nutzt?
Soweit ich weiß, ist es Geschmacksache. Mit broute/brouting deckst du sowohl input, als auch forward ab.
Aber da bekomm ich vermutlich von irgendwelchen Geeks haue, wenn ich das so sag…
IPv6 ist im BS-Web-GUI komplett deaktiviert.
Dann wird ipv6 vermutlich in dem Fall uninteressant sein.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Vermutlich kannst du in deinem Fall auch -i br0 weglassen.
Ja, geht wunderbar. Danke nochmal!
Ich habe die Regeln etwas anpassen müssen: Sie stecken in 'FORWARD' der 'filter'-Tabelle (siehe auch unten) und komischerweise kann das ebtables von BS mit 'tcp' und 'udp' nichts anfangen. Ich mußte 6 und 17 benutzen.
Soweit ich weiß, ist es Geschmacksache.
Stimmt nicht ganz. Ich lese mich grade durch die manpage und zur 'broute'-Tabelle meint die:
"broute, is used to make a brouter, it has one built-in chain: BROUTING. The targets DROP and ACCEPT have special meaning in the broute table. DROP actually means the frame has to be routed, while ACCEPT means the frame has to be bridged.".
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo nochmal!
Gleich noch eine Frage - in einem neuen Thread wegen des neuen Themas:
Ich nutze (wie schon gesagt) BS als reinen AP und habe dazu LAN und WLAN in eine Netzwerkbrücke gesteckt. Jetzt würde ich aber gerne trotzdem diverse Sachen ausfiltern und dazu iptables nutzen. Beispielsweise filtere ich Windows-Netzwerkfreigaben mit:
iptables -t filter -A FORWARD -d 192.168.1.255 -p tcp -sport 137:139 -dport 137:139 -j DROP
iptables -t filter -A FORWARD -d 192.168.1.255 -p udp -sport 137:139 -dport 137:139 -j DROP
iptables -t filter -A INPUT -d 192.168.1.255 -p tcp -sport 137:139 -dport 137:139 -j DROP
iptables -t filter -A INPUT -d 192.168.1.255 -p udp -sport 137:139 -dport 137:139 -j DROP
Allerdings schlagen die Filter der FORWARD-Kette nicht an, obwohl sie es sollten (vgl. http://ebtables.sourceforge.net/br_fw_ia/PacketFlow.png). Fehlt dem Kern von BS die "Bridged IP/ARP packets filtering"-Option oder mache ich was falsch?
Beste Grüße.
Wie schon richtig verlinkt benutzt man bei Bridge-Interfaces ebtables um Pakete auf Layer2 zu filtern.
Deshalb können deine Regeln gar nicht ziehen, weil gebridgte Pakete niemals die iptables FORWARD chain
durchlaufen, denn da gehen nur geroutete Pakete durch.
Also am besten mal mit der Syntax von ebtables vertraut machen und die Regeln entsprechend anpassen.
Naja, das stimmt nicht ganz. Viele Sachen bei bridges lassen sich auch mit iptables machen. Hilfreich ist dabei vor allem dieses Diagramm: http://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
Die INPUT und FORWARD chain passen in diesem Fall.
@mauromp: lass mal die Source-Ports weg. Die können nämlich ganz zufällig sein. Außerdem filterst du nur nach bestimmten IP-Adressen. Alle anderen IP-Adressen gehen durch. Besser ist nach dem Interface zu filtern:
iptables -t filter -A FORWARD -i br0 tcp -dport 137:139 -j DROP
iptables -t filter -A FORWARD -i br0 -p udp -dport 137:139 -j DROP
iptables -t filter -A INPUT -i br0 -p tcp -dport 137:139 -j DROP
iptables -t filter -A INPUT -i br0 -p udp -dport 137:139 -j DROP
Nein die chains passen nicht, denn der Paketfluss traversiert die forward chain auf Layer 3 natürlich nur
wenn geroutet wird. Richtig wäre z.B. nat-PREROUTING.
@coolman1982: ich will nicht vom Thema abschweifen, aber ich glaub weiterhin, dass du falsch liegst. Warum gehen durch eine bridge keine Pakete, wenn man FORWARD auf die default Policy DROP setzt?
Hier ein kleines Beispiel:
Ohne Zeile 24 geht bei mir kein Verkehr durch die bridge: http://paste.pocoo.org/show/560998/
Hier die config der interfaces: http://paste.pocoo.org/show/561000/
Hier die config der bridges: http://paste.pocoo.org/show/561001/
Oder findet da irgendwo routing statt?
@coolman1982: wir haben beide Recht:. Es kommt auf den Kernel an, ob es geht. Wenn BRIDGE_NETFILTER nicht gesetzt ist, verhält es sich, wie du beschrieben hast. Ist es gesetzt, verhält es sich, so wie ich beschrieben habe.
Weitere Infos gibts hier: http://ebtables.sourceforge.net/documentation/bridge-nf.html
Ich hab gerade nachgsehen: Bei BS ist es nicht gesetzt. Also funktioniert meine Lösung nicht und man muss ebtables verwenden.
@mauromp: Deine gesuchten Befehle lauten dann wohl:
ebtables -t broute -A BROUTING -i br0 -p ip -ip-proto tcp -ip-destination-port 137:139 -j DROP
ebtables -t broute -A BROUTING -i br0 -p ip -ip-proto udp -ip-destination-port 137:139 -j DROP
ebtables -t broute -A BROUTING -i br0 -p ip6 -ip6-proto tcp -ip6-destination-port 137:139 -j DROP
ebtables -t broute -A BROUTING -i br0 -p ip6 -ip6-proto udp -ip6-destination-port 137:139 -j DROP
Was ich in den vorherigen Regeln absolut vergessen hab: INPUT ist wurst, wenn auf dem Router kein SAMBA läuft. Und IPv6 darf man nicht vergessen, das wurde von den vorherigen Regeln nicht abgedeckt.
Wichtig ist auf alle Fälle das du verstehst, was die Regeln machen.
Bewirkt das was? Immerhin gibt es nur das eine, weil der Router lediglich LAN und WLAN hat und die zusammen in der Brücke stecken…
Apropos: Kann ich beim Filtern auch die einzelnen Schnittstellen (eth0 und wl0) weiterhin nutzen, obwohl sie in der Brücke stecken? Zum Beispiel um bestimmte Anfragen zwar raus aber nicht rein zu lassen.
Um bei der Sache gleich noch was mitzunehmen: Wo schaut man das nach?
Wieso die 'broute' und 'BROUTING' und nicht 'filter' und 'FORWARD'? Erschiene mir logischer. Oder ist das eher Geschmackssache welche man nutzt?
IPv6 ist im BS-Web-GUI komplett deaktiviert.
Und nochmal vielen Dank für die Antworten an Euch beide!
Vermutlich kannst du in deinem Fall auch -i br0 weglassen.
Ich bin mir gerade nciht sicher ob das geht. Ich würde dir nicht dazu raten das anfangen zu vermischen. Mach lieber alles auf dem bridge-interface und dann mit -in-interface und -out-interface. Wo was wie geht steht in den manpages.
In der .config aus den sourcen. (Entweder per svn auschecken oder im tarball)
Soweit ich weiß, ist es Geschmacksache. Mit broute/brouting deckst du sowohl input, als auch forward ab.
Aber da bekomm ich vermutlich von irgendwelchen Geeks haue, wenn ich das so sag…
Dann wird ipv6 vermutlich in dem Fall uninteressant sein.
Ja, geht wunderbar. Danke nochmal!
Ich habe die Regeln etwas anpassen müssen: Sie stecken in 'FORWARD' der 'filter'-Tabelle (siehe auch unten) und komischerweise kann das ebtables von BS mit 'tcp' und 'udp' nichts anfangen. Ich mußte 6 und 17 benutzen.
Stimmt nicht ganz. Ich lese mich grade durch die manpage und zur 'broute'-Tabelle meint die:
"broute, is used to make a brouter, it has one built-in chain: BROUTING. The targets DROP and ACCEPT have special meaning in the broute table. DROP actually means the frame has to be routed, while ACCEPT means the frame has to be bridged.".