OPNsense Integration Alias-Synchronisation - Captive Portal (Voucher & Sessions)

Hallo zusammen,

ich möchte euch kurz ein Projekt vorstellen, das wir auf Basis der Anforderungen einiger Schulen, die wir betreuen, entwickelt haben. Es verbessert die Integration von linuxmuster.net mit OPNsense – insbesondere bei der Alias-Synchronisation sowie beim Captive Portal (Voucher & Sessions).

1) linuxmuster-opnsense (CLI-Tools + Hooks)

Das Repo linuxmuster-opnsense ist eine Sammlung von Integrationstools für die Anbindung von linuxmuster.net an OPNsense. Enthalten sind u.a.:

  • Synchronisation von IP-Aliasen auf der OPNsense (z.B. Rollen, Räume, Hardwaregruppen)
  • Verwaltung von Captive-Portal-Vouchern (erstellen / listen / löschen)
  • Aktive Captive-Portal-Sessions auflisten und gezielt trennen
  • Hooks, z.B. automatisches Aktualisieren der Aliase nach einem Geräte-Import

Konfiguration erfolgt pro Schule über eine .ini unter /etc/linuxmuster/opnsense/… (API Key/Secret, base_url, optional SSL-Checks etc.).

Beispiele (CLI):

# Aliase aktualisieren (Rollen/Räume/HW-Gruppen je nach INI)
opn-update-aliases --school MEINE_SCHULE

# Voucher-Gruppen anzeigen / Voucher erzeugen
opn-captive-voucher list
opn-captive-voucher create test --count 5 --validity 4h --expiry 1d

# Captive-Portal Sessions anzeigen / trennen
opn-captive-sessions
opn-captive-sessions --kill-username alice

(Die Subcommands/Optionen sind im README ausführlich beschrieben.)

Zusätzlich gibt es u.a. einen Hook, der beim Entfernen eines Users aus der Gruppe wifi (optional via kill_session = True) dessen Captive-Portal-Sessions automatisch beendet.

2) linuxmuster-opnsense-webui (WebUI-Plugin lmn_opnsense)

Das zweite Repo liefert ein Plugin für die linuxmuster WebUI (lmn_opnsense), um typische OPNsense-/Captive-Portal-Aufgaben komfortabel über die Oberfläche zu erledigen, z.B.:

  • Captive-Portal Sessions: listen (inkl. Filter), Pagination, Sessions trennen (einzeln oder alle eines Users)
  • Voucher-Verwaltung: Voucher mit Gültigkeit/Ablauf erzeugen, CSV-Export, einzelne Voucher expirieren, ganze Gruppen löschen

Wofür ist das praktisch?

Typische Use-Cases sind z.B.:

  • Gäste-/Projekt-WLAN mit Voucher-Codes (schnell neue Voucher erzeugen, aufräumen, exportieren)
  • Dynamische Firewall-Regeln über automatisch gepflegte Aliase (Räume/Rollen/HW-Gruppen), die nach Geräteimporten direkt aktualisiert werden
  • Troubleshooting/Missbrauch: Sessions schnell finden und trennen

Repos

Viele Grüße
Kevin

6 „Gefällt mir“

Hallo Kevin,

wie cool ist das den?
Vielen Dank!
Ihr habt also scripte für den lmn Server geschrieben, die die API des Captiv Portals auf der OPNsense ansprechen und dann noch ein WebUI Plugin gemacht, damit man das auch in der WebUI steuern kann.

Ist das ein global-admin Plugin, oder kann dann jeder Lehrer selber Voucher erstellen und Sitzungen trennen, die mit „seinen“ Vouchern eröffnet wurden?
Captiv Portal Sitzungen, die per „Benutzername und Passwort“ eröffnet wurden tauchen da auch auf?
Also welche die nciht „von“ Vouchern stammen?
Aber das ist dann nicht mehr Lehrern zuordnungsbar, oder?

LG
Holger

Hallo Holger,

Ja, genau. Im Grunde sprechen wir die OPNsense-API an und stellen die Funktionen zusätzlich über ein WebUI-Plugin bereit.

Das Plugin ist so ausgelegt, dass jeder Lehrer selbst Voucher erstellen kann. Was noch ergänzt werden muss: Auch Benutzer, die als Staff angelegt sind, sollen (optional) Voucher erstellen dürfen. Ich bin mir aber noch nicht sicher, ob das in der Praxis wirklich eine gute Idee ist.

Ja. Es gibt aktuell ein Fenster (momentan nur für Global-Admins/Schuladmins), das Sitzungen anzeigt, die per Benutzername/Passwort aufgebaut wurden. Standardmäßig werden alle Zonen angezeigt, die es in der OPNsense gibt – man kann aber auch nach Zonen-ID filtern. Zusätzlich gibt es ein separates Fenster für Lehrer, in dem Voucher erstellt werden können.

Wir verwenden das meistens mit drei SSIDs/VLANs:

  • Schüler-WLAN (Captive Portal mit LDAPS-Auth für alle in der Gruppe wifi, damit auch die Funktionen der Schulkonsole funktionieren).
    Zusätzlich gibt es einen Hook, der sofort alle Sessions eines Schülers trennt, sobald im Webinterface die Gruppe wifi entfernt wird. So entsteht kein Delay und der Schüler hat unmittelbar kein WLAN mehr.
  • Lehrer-WLAN (Captive Portal mit LDAPS-Auth für alle in der Gruppe teachers)
  • Voucher-WLAN (Captive Portal mit Voucher-Auth-Server der OPNsense)

Man kann Schüler- und Voucher-Zugänge aber auch problemlos über ein WLAN abbilden.

Noch nicht im WebUI, aber in der OPNsense selbst schon. Alle Voucher werden unter der jeweiligen Gruppe mit Benutzernamen angelegt (siehe Screenshot):

Grüße
Kevin

2 „Gefällt mir“

Hallo Kevin,

Ich habe noch keine Zeit gehabt es genauer anzuschauen, aber ich finde es sehr cool, danke !

Gruß

Arnaud