Gäste-WLAN mit pfSense Captive Portal

Gäste WLAN mit pfSense Captive Portal Netzplan

In Zeiten von immer weiter wachsenden Datenmengen und den noch immer sehr teuren Mobilfunktarifen in Deutschland möchten viele Unternehmen ihren Kunden ein Gäste-WLAN anbieten. Das Gäste-WLAN sollte zur Sicherheit vom Unternehmensnetzwerk getrennt sein und einfachen aber auf Kunden begrenzten Zugang zum Internet bieten. Dieser Artikel soll deshalb zeigen, wie man ein Gäste-WLAN mit pfSense Captive Portal einrichtet.

Netzwerkstruktur und Allgemeines

Für das Gäste-Netz sollte man ein vollständig getrenntes Netz einrichten. Dieses kann man aber auch über die bestehende Infrastruktur mit VLAN Trennung betreiben, wenn es nicht möglich ist eine eigene Verkabelung für das Gäste-Netz zu verlegen. Zu Beachten sind dabei natürlich die Netzwerkauslastung und Spezifikationen der vorhandenen Hardware. Während die meisten im Unternehmensumfeld eingesetzten Switches VLAN fähig sind, ist die VLAN Funktionalität im WLAN häufig nur Enterprise Access Points vorbehalten.
pfSense kann man sowohl auf Hardware als auch als virtuelle Maschine für das Captive Portal nutzen.
Im Gegensatz zu der im Titelbild gezeigten Topologie könnte man je nach Anforderungen an Bandbreite und Sicherheit auch eine eigene Internetanbindung für die Gäste einrichten.

Interface Einrichtung für Gäste-WLAN mit pfSense Captive Portal

Zunächst sollte man ein funktionierendes pfSense System eingerichtet haben. In diesem legt man ein neues Interface für das Gäste-Netz an. Das Interface in diesem Beispiel heißt „GST“ und liegt auf einem VLAN Interface.

Captive Portal Interface Assignment

Anschließend konfiguriert man das Interface. Hierzu definiert man das gewünschte Netz für die Gäste in den Interface Einstellungen. Die Netzgröße wählt man nach der erwarteten Anzahl der Gäste. Dabei sind auch die Lease Zeiten des DHCP-Servers zu beachten. Bei vielen kurzzeitig wechselnden Gästen (z. B. in einem Kaffee) empfiehlt sich ein großes Netz und/oder kurze Lease Zeiten zu wählen. In diesem Beispiel wird ein /24 Netzwerk verwendet, welches IP-Adressen im Bereich 172.17.0.2 – 172.17.0.254 für die Gäste bereitstellen kann.

Captive Portal Interface Konfiguration

Firewall Regeln für das Gäste-WLAN

Firewall Regeln sind in einem Gäste-Netz sind nicht ganz einfach zu definieren. Man möchte Gäste nicht in der Funktion und Benutzung des Internets einschränken, trotzdem aber Missbrauch des Internetanschlusses verhindern. Auch deshalb kann ein eigens für die Gäste gebuchter Internetzugang sinnvoll sein.
Mindestens sollte man jedoch den Zugang auf interne Netzwerke für Gäste verhindern. In diesem Beispiel wurde dazu unter Firewall > Aliases ein IP-Alias mit dem Namen RFC1918 und den Netzen 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 angelegt. Das sind alle für den internen, privaten Bereich vorgesehenen IP-Adressen.
Als nächstes richtet man dann die gewünschten Firewall Regeln ein. Auf dem unten stehenden Screenshot ist die minimal notwendige Konfiguration zur Funktion gezeigt. Die Regeln greifen von oben nach unten.

  1. DNS Auflösung zur Firewall
  2. Ablehnen aller Anfragen zu internen Netzwerken
  3. Erlauben aller Anfragen ins Internet
Captive Portal Firewall Regeln

DNS-Server Konfiguration

Es wurde für diesen Artikel die pfSense als DNS-Server genutzt. Dies ist insofern kritisch, da man auch im DNS-Server eingerichtete interne Systeme auflösen könnte und so IP-Adressen aus dem internen Netz erfährt. Verbessern könnte man dies, indem man einen nur im Gäste-Netz verfügbaren DNS-Server betreibt.

Für die Verwendung des Captive Portals mit HTTPS Verschlüsselung benötigt man im DNS-Server einen Eintrag für „captiveportal.example.com“, welcher auf die GST Interface IP-Adresse zeigt. Dieser Eintrag sollte dem später gewählten Zertifikat entsprechen.

DHCP-Server Konfiguration

Unter Services > DHCP Server richtet man den DHCP Server ein. Hier aktiviert man die Checkbox „Enable“ und trägt Werte für die gewünschte Range ein.

Einrichtung des Captive Portal

Unter pfSense kann man einfach eine oder mehrere Captive Portal Zonen für einzelne oder mehrere Interfaces einrichten. Das Gäste-WLAN mit pfSense Captive Portal wird in den nächsten Schritten eingerichtet.

Anlegen der Zone

Dazu unter Services > Captive Portal auf „+Add“ klicken, um eine Zone hinzuzufügen. In dem folgenden Menü den gewünschten Zonen-Namen und eine Beschreibung eintragen und Save & Continue klicken.

Captive Portal Zone anlegen

Überblick

In die Konfiguration der Zone wechseln und die Checkbox für Enable aktivieren. In der Zonen-Konfiguration lassen sich je nach gewünschtem Szenario viele verschiedene Konfigurationen durchführen. Die hier gezeigte Konfiguration bezieht sich auf ein Gäste-WLAN, welches mit Voucher-Codes den Zugang für einen bestimmten Zeitraum ermöglicht. Es gäbe aber auch Möglichkeiten für komplett offen verwendbare Netzwerke, welche nur in dem nutzbaren Zeitraum oder der Bandbreite eingeschränkt sind und ganz viele weitere Möglichkeiten. Wenn Fragen zu anderen Szenarien bestehen stehen wir über Twitter gern mit Rat zur Seite.

Es gibt in der Konfiguration die folgenden Reiter:

Captive Portal Konfigurationsübersicht
  • Configuration: Ein Großteil der nötigen Konfiguration wird hier vorgenommen.
  • MACs: Hier kann man einzelne MAC Adressen erlauben, blockieren oder mit spezieller Bandbreiteeinschränkung versehen.
  • Allowed IP Addresses: Definiert IP-Adressen, welche ohne Authentifizierung am Portal im Internet surfen dürfen, oder welche IP-Adressen ohne Authentifizierung erreichbar sind (z. B. sinnvoll für Unternehmenswebseiten). Außerdem legt man spezielle Bandbreiten für einzelne IP-Adressen fest.
  • Allowed Hostnames: Wie IP-Adressen nur mit dem Hostname.
  • Vouchers: Bietet die Möglichkeit zur Verwaltung der Vouchers.
  • File Manger: Verwaltung abgelegter Dateien (z. B. eigene Logos für das Captive Portal).

Konfiguration der Zone

Zunächst legt man in der Zonen-Konfiguration das gewünschte Interface fest. Man hat außerdem die Möglichkeit gleichzeitige Zugriffe auf den HTTP/S Server zu limitieren. Bei Nutzung von HTTPS und schwacher Hardware kann es sinnvoll sein, diese auf einen geringeren Wert zu setzen.
Es können Timeout-Zeiten gesetzt werden, wenn man Nutzer nach einer bestimmten Zeit zum erneuten Login bringen möchte.

Konfiguration Teil 1

Der Vollständigkeit halber blenden wir hier Screenshots der gesamten Konfigurationsmöglichkeiten ein, auch wenn in den Abschnitten nichts konfiguriert wurde.

Konfiguration Teil 2

Da in diesem Beispiel-Setup nur ein schwacher Internet-Anschluss zur Verfügung steht, limitiert das Captive Portal für die Nutzer in diesem Netz die maximal nutzbare Bandbreite.
pfSense Captive Portal bietet außerdem die Möglichkeit eigene Logo- und Hintergrundbilder einzubinden. Alternativ kann man auch komplett eigene Login-Portal-Dateien im HTML-Format hochladen. Zusätzlich empfiehlt es sich unter Terms and Conditions eine Benutzerordnung einzurichten.

Konfiguration Teil 3

Als Authentication-Method wählt man für die Benutzung der internen Voucher-Funktion „Local Database“ als Authentication-Server aus.
Da Nutzer über das Captive Portal Zugangsdaten eingeben empfehlen wir dringend die Nutzung von HTTPS. Dazu wird ein Zertifikat benötigt. Hier kann man entweder kommerzielle Zertifikate erwerben oder z. B. mit Let’s Encrypt wie hier beschrieben kostenlose Zertifikate erstellen lassen.

Konfiguration Teil 4

Anschließend leitet pfSense beim ersten Verbinden mit dem Netzwerk nach dem Aufruf einer Webseite auf die Captive Portal Seite um. Die Login Seite kann zum Beispiel aussehen wie hier gezeigt:

Login Seite als Beispiel

Zum Login verwendet man entweder pfSense Benutzer (es funktionieren auch LDAP oder RADIUS Benutzer nach Einrichtung) oder Voucher Codes.

Erstellen von Voucher Codes

Das Erstellen von Voucher Codes im pfSense Captive Portal ist sehr unkompliziert und schnell. Dazu einfach unter Services > Captive Portal > Zone > Vouchers die Funktion auf „Enable“ setzen. Die standardmäßig ausgefüllten Werte hier sind ausreichend.

Anschließend im Bereich Voucher Rolls auf „+Add“ klicken und die gewünschten Einstellungen vornehmen. Dieses Beispiel erstellt 1023 Vouchers, welche für 1440 Minuten gültig sind. Die Roll zählt man bei weiteren erstellten Vocher Rolls hoch.

Voucher erstellen

Als Nächstes hat man im Abschnitt Voucher Rolls die Möglichkeit die erstellten Vouchers als CSV-Datei herunterzuladen. Der Inhalt sieht dann so aus wie im nachfolgenden Screenshot. Dabei sind die Codes ohne Anführungszeichen oder Leerzeichen die nutzbaren Voucher.