[Fli4l_dev] Gäste WLAN absichern bzw. abtrennen
B. Sprenger
b.sprenger at sprenger-ffm.de
Mi Nov 23 17:53:22 CET 2016
Hallo zusammen,
ich habe einige Unklarheiten die fli4l nur teilweise betreffen, aber da
es ein Routingproblem ist, habe ich kein schlechtes Gewissen hier
nachzufragen.
Als Router wird fli4l 4.0 eingesetzt.
Ziel ist es den Gästen einen definierten WLAN-Zugang zu ermöglichen,
ohne Zugriff auf die übrigen Netzwerk-Resourcen.
Es gibt schon ein paar Beiträge im Forum, aber keiner passt so richtig
auf meine Voraussetzungen.
Es gibt mehrere Standorte die jeweils mit einem fli4l mit dem Internet
verbunden sind. Zwischen den fli4ls sind OpenVPN Verbindungen
eingerichtet über die der Zugriff untereinander möglich ist.
In einem Netz läuft eine Eisfair mit einem Radiusserver.
Es gibt mehrere WLAN-Accespoints an den verschiedenen Standorten (pro
Standort zwischen 1 und 7 Stationen).
Alle Accespoints greifen auf den Radiusserver zu und die Clients
authentifizieren sich gegenüber dem zentralen Radiusserver.
Ich habe also eine zentrale Benutzerverwaltung
Auf allen WLAN-Stationen läuft dd wrt als Betriebssystem
(https://www.dd-wrt.com, Version 11-14-2016-r30880)
Es sind jeweils zwei WLAN-Netze eingerichtet (einmal Standard und einmal
Gast).
Das Standard-WLAN-Netz hat vollen zugriff auf das Netz.
Das Gäste-Wlan ist auf den Accepoints abgetrennt.
Auf den Accesspoints ist eine Bridge br0 definiert, der die
Schnitsttelle ath0 (normales WLAN) und vlan1 (internes Netz des
Accespoints) angehören.
Weiterhin ist eine Bridge br1 definiert, der nur die Schnitstelle ath0.1
(Gäste-WLAN) angehört.
Für br1 ist dann eine zusätzliches Subnetz mit eigenem DHCP-Server (auf
jeder WLAN-Station) definiert.
Damit das jetzt funktioniert sind folgende Firewall-Regeln (auf den
WLAN-Stationen) eingerichtet:
(Nachfolgend die Beispielkonfiguration der Station mit der IP
172.16.0.40, das Netz in dem sie hängt ist 172.16.0.0/16. Das Gäste-WLAN
hat IP-Adressen 172.29.0.0/16)
iptables -t hat -A PREROUTING -i br1 -p udp --dport 53 -j DNAT --to
172.16.0.40
iptables -t nat -A PREROUTING -i br1 -p tcp --dport 53 -j DNAT --to
172.16.0.40
iptables -I FORWARD -i br1 -d 172.16.0.40/255.255.0.0 -m state --state
NEW -j DROP
iptables -t nat -I POSTROUTING -o br0 -j SNAT --to 172.16.0.40
# Zugriff verbieten
iptables -I INPUT -i br1 -m state --state NEW -j DROP
# DHCP und DNS erlauben...
iptables -I INPUT -i br1 -p udp --dport 67 -j ACCEPT
iptables -I INPUT -i br1 -p udp --dport 53 -j ACCEPT
iptables -I INPUT -i br1 -p tcp --dport 53 -j ACCEPT
# nur http & https erlauben...
iptables -I FORWARD -i br1 -j DROP
iptables -I FORWARD -i br1 -p udp --dport 53 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 53 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 443 -j ACCEPT
# 25 smtp, 110 pop3, 143 imap 993 ssl-map usw.
iptables -I FORWARD -i br1 -p tcp --dport 25 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 110 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 143 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 993 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 995 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 587 -j ACCEPT
####
Das funktioniert soweit erst mal alles.
Die Gäste-WLAN-Clients haben nur Zugriff auf die oben genannten Ports.
Im Moment unterscheidet der Radiusserver noch nicht, über welches Netz
sich angemeldet wird. Da muss ich also noch eine zweite Instanz oder
einen zweiten Radiusserver aufsetzen.
Ausserdem können die Gäste auf alle Webinterfaces von netzinternen
Geräten zugreifen. Auch wird der verursachte Traffic bei den
WLAN-Stationen registriert.
Daher möchte ich noch einen Schritt weiter gehen.
Der fli4l kann die Gäste im Moment nicht "sehen", da die WLAN-Stationen
NAT durchführen.
(Ab hier beginnen jetzt meine Wunschvorstellungen, bei deren Umsetzung
ich Hilfe benötige)
Ich stelle mir also vor, den Datenverkehr ohne NAT bei den Accesspoints
über ein getaggtes VLAN zum fli4l weiterzuleiten.
Die DHCP-Anfragen werden dann vom fli4 beantwortet.
Dazu müsste ich also auf dem fli4l eine eth0.3 und eth0.5 anlegen (VLAN3
für "normales Netz" und VLAN5 für die Gäste)
Kann ich das dann so schreiben?
IP_NET[1]='172.17.0.1/16' # IP address of your n'th ethernet card
{
DEV='eth0.5'
}
IP_NET[2]='172.29.0.1/16' # IP address of your n'th ethernet card
{
DEV='eth0.5'
}
In die INPUT-Chain kommt dann folgendes?
PF_INPUT[]='IP_NET_2 ACCEPT' # allow all hosts in the local network to
# access the router
FORWARD bleibt dann leer?
bzw. nur folgender Eintrag:
PF_FORWARD[]='IP_NET_1 ACCEPT
Und bei POSTROUTING muss vermutlich folgender Eintrag getätigt werden?
PF_POSTROUTING[]='IP_NET_2 MASQUERADE'
Natürlich muss dann in der dns_dhcp.txt noch der DHCP-Server aktiviert
werden.
Vermutlich muss auch auf den Switchen VLAN aktiviert und konfiguriert
werden.
Wären das die Eingriffe in den Konfigurationsdateien auf dem fli4l, oder
habe ich etwas vergessen bzw. falsch verstanden?
Und wie müsste ich die Firewallregeln auf den Accesspoints korrigieren,
damit der Verkehr ohne NAT ins interne Netz geroutet wird?
Vermutlich macht das der folgende Eintrag
iptables -t nat -I POSTROUTING -o br0 -j SNAT --to 172.16.0.40
Aber ich habe mir versucht die Erklärungen anzuschauen, bin aber nicht
richtig durchgestiegen.
Vielen dank schon mal für das lesen bis hierher.
LG
Boris
LG
Boris
Mehr Informationen über die Mailingliste Fli4l_dev