Menu

MAC Filter für LAN

Help
Vanger
2010-09-21
2013-05-29
  • Vanger

    Vanger - 2010-09-21

    Hi Leute,

    bei mir liegt folgende Situation vor: Ich wohne im Studentenwohnheim meiner Hochschule die als ein großes LAN gestaltet ist - das heißt alle Rechner die über Wohnheim oder Hochschule an das Netz angeschlossen werden (Kabel oder WLAN) befinden sich in einem großen LAN. Da ich mir mittels VPN eine abgeschottete Umgebung schaffen möchte benötige ich den Router, regulär erfolgt der Zugang ins Internet über PPPoE (was auch alles problemlos funktioniert).

    Mein Notebook verbindet sich via WLAN mit dem Router - das stellt auch kein Problem dar, das WLAN lässt sich ja mit einem Passwort sichern. Ein Problem ergibt sich für mich aber: Da mein Fileserver über Kabel mit dem Router verbunden ist (genau genommen hängen LAN-Buchse in der Wand, Router und Server an einem Switch) benötige ich einen Filter im Router der ausschließlich meinen Fileserver akzeptiert und alle anderen Clients den Zugang ins Internet verweigert - ich will ja nicht dass jeder x-Beliebige meinen Router nutzen kann um sich mit dem Internet zu verbinden.

    Ich habe bereits ein bisschen in Google gesucht und herausgefunden dass die Lösung vermutlich eine iptables-Regel (die der Router ja meines Wissens unterstützt) ist. Leider verstehe ich davon nicht sonderlich viel, deshalb frage ich hier nach. Wie realisiere ich das von mir gewünschte? Funktioniert es, soweit ich das jedenfalls verstanden habe, indem ich mich via SSH am Router anmelde und den Befehl "iptables -A FORWARD -t filter -m mac -mac-source ! 00:??:??:??:??:?? -j DROP" ausführe? Wird damit dann das von mir gewünschte realisiert und werden alle Computer, mein Server ausgenommen, geblockt?

    Auf dem Weg möchte ich noch ein großes Lob los werden - eure Firmware ist super! Besonders dass man inzwischen auf die Telefonfunktionen nicht mehr mit auf dem Router haben muss auch wenn man sie nicht braucht gefällt mir. Macht weiter so! :-)

    Grüße,
    Rudi

     
  • Patrick Schmidt

    Patrick Schmidt - 2010-09-23

    An sich bist du schon auf dem richigen Weg, ich versteh allerdings nicht wieso alles ein großes LAN ist, der Internetzugriff aber per PPP funktioniert?

    Aber egal, ich würde wahrscheinlich ebtables nehmen und schlage deshalb folgende Regeln für das custom-Skript vor:

    #MAC-Addr. vom Fileserver
    FS="00:11:22:33:44:55"

    #PPP-DISC frames akzeptieren
    ebtables -A INPUT -i eth0 -p PPP_DISC -j ACCEPT
    #PPP-SES frames akzeptieren
    ebtables -A INPUT -i eth0 -p PPP_SES -j ACCEPT
    #den Rest droppen der nicht vom FS kommt droppen
    ebtables -A INPUT -i eth0 -s ! $FS -j DROP

    #bridging von Frames außer FS verhindern
    ebtables -A FORWARD -i eth0 -s ! $FS -j DROP

    Teste mal ob das gewünschten Effekt erzielt indem du deinen Laptop mal an den Switch steckst und versuchst auf den Router zuzugreifen.

     
  • Vanger

    Vanger - 2010-09-23

    Hi,

    dass der Internetzugriff nicht ganz einfach über LAN zur Verfügung gestellt wird hat wohl rechtliche Gründe - als eigentlicher ISP tritt ein örtliches IT-Unternehmen auf. Die Hochschule vermeidet so wohl die aus dem Gesetz folgenden Pflichten eines ISPs… So genau weiß ich das aber nicht, da müsste man einen Systemadministrator der Hochschule fragen.

    Das Skript funktioniert wunderbar. Dankeschön! :-)

    Inzwischen sind mir aber noch zwei Dinge eingefallen: Wie müsste das Skript aussehen wenn ich einem zweiten (oder noch mehr) Rechner erlauben möchte über Kabel den Router zu verwenden? Und: Wäre es möglich dass sowohl SSH als auch das Webinterface vom Router von der Blockade ausgeschlossen bleiben? Das heißt: Den Router als Zugangspunkt ins Internet nutzen können nur die im Skript genannten Rechner, Zugriff auf Webinterface und SSH kann aber - auch über das Internet, also von "außen" - jeder nehmen. Letzteres würde ich mir wünschen um es zu ermöglichen aus der Ferne mittels Wake-On-LAN meinen Server aufzuwecken.

    Außerdem noch die Frage: Wenn ich von "außen", also über das Internet, mich mit meinem vom Router bereitgestellten VPN verbinde wird das geblockt? Ich habe das VPN noch nicht eingerichtet, deshalb kann ich das nicht testen - das sollte aber, wenn möglich, ebenfalls für alle Rechner möglich sein.

    Grüße,
    Rudi

     
  • Patrick Schmidt

    Patrick Schmidt - 2010-09-26

    Also prinzipiell trägst du die MAC-Adressen aller Rechner die freigegeben werden sollen in
    eine Liste ein. Das Skript wandelt sich dann wie folgt ab:

    #PPP-DISC frames akzeptieren
    ebtables -A INPUT -i eth0 -p PPP_DISC -j ACCEPT

    #PPP-SES frames akzeptieren
    ebtables -A INPUT -i eth0 -p PPP_SES -j ACCEPT

    #MAC-Addr. Liste mit beispielsweise 3 MACs
    LIST="00:11:22:33:44:55 11:22:33:44:55:66 77:88:99:00:AA"

    #Schleife ueber MAC-Liste
    for MAC in $LIST
    do
      #MAC in input akzeptieren
      ebtables -A INPUT -i eth0 -s  $MAC -j ACCEPT

      #bridging von Frames von MAC zulassen
      ebtables -A FORWARD -i eth0 -s $MAC -j ACCEPT
    done

    #den Rest der nicht akzeptiert wird droppen
    ebtables -A INPUT -i eth0 -j DROP
    ebtables -A FORWARD -j DROP

    SSH und Web-Port lassen sich im Webinterface unter SSH->Open Firewall bzw. Firewall->General->Allow Web-Management freigeben. Da ja der Internetverkehr per PPP ankommt betrifft das obige Skript diesen nicht, da er über ein anderes Input-Device (z.B. ppp_1_32_1) und nicht eth0 ankommt. VPN müsstest du seperat freigeben, dafür sind die NVRAM-Variablen fw_services_udp und fw_services_tcp da. Da werden einfach die freizugebenden Port-Nummern mit Leerzeichen getrennt reingeschrieben.

     
  • Patrick Schmidt

    Patrick Schmidt - 2010-09-26

    Sry im Skript ganz unten muss natürlich

    ebtables -A FORWARD -i eth0 -j DROP

    stehen sonst gibts Probleme.

     
  • Vanger

    Vanger - 2010-09-26

    Super, funktioniert perfekt.
    Rießiges Dankeschön! :-)

     

Log in to post a comment.

MongoDB Logo MongoDB