Server für UniFi WifiManager
Inhaltsverzeichnis
WLAN-Infrastrukturen in Schulen richten wir auf Basis des Produkts UniFi ein. Leider ist die UniFi-Software für Linux lange nicht aktualisiert worden und es werden teils alte Software-Komponenten benötigt (MongoDB << Version 4.0, Java JRE v8). Diese Anleitung beschreibt, wie man einen UniFi-Controller auf Basis von Debian 11 aufsetzt und diese Installation durch die veralteten Software-Komponenten ergänzt.
Im Allgemeinen richten wir wifimanager.backbone auf dem ersten Virtualisierungs-Server virt-man-01.backbone ein. Hardware-Voraussetzung für einen WifiManager-Server sind: 2 Kerne, 2048MB RAM, 60GB Festplattenspeicherplatz).
Hinweis: Die Ordner /var/lib/unifi und /var/lib/mongodb werden "ausgelagert" auf eine separate Partition. Da MongoDB (wird als Abhängigkeit von UniFi mit-installiert) einiges an Speicherplatz benötigt, bitte /srv mit mind. 10G erstellen. Nach der Installation des Pakets 'unifi' dann aus /var/lib/ sowohl die Ordner unifi, als auch mongodb nach /srv verschieben und dann für beides einen Symlink nach /var/lib legen.
Der WifiManager-Server benötigt im Virtualisierungs-Server nur eine Netzwerkschnittstelle. Die VM wifimanager.backbone ist mit dem BackBone-Netzwerk verbunden.
Installationshinweise
Die virtuelle Maschine wifimanager.backbone wird zunächst mit einer Debian 11 Minimal Installation aufgesetzt, die WebGUI des UniFi-Controllers wird nach Fertigstellung der Installation einfach via https://wifimanager.backbone:8443 von einem der Virtualisierungs-Server aufgerufen, die VM wifimanager.backbone benötigt keine eigene Desktop-Umgebung o.ä.
Natürlich muss die VM über einen SSH-Server erreichbar sein, dieses Feature kann bei der Basis-Installation des System ausgewählt werden. Wichtig ist, dass man bei der Installation den Punkt "Desktop Environment" explizit abwählt.
Installation von UniFi auf der VM
sudo touch /etc/apt/sources.list.d/100-ubnt.list
1. In /etc/apt/sources.list.d/100-ubnt.list folgende APT Quelle eintragen:
deb http://www.ubnt.com/downloads/unifi/debian stable ubiquiti
2. Dann Hinzufügen des nötigen GPG-Keys für das UniFi APT Repository mit
wget -O /etc/apt/trusted.gpg.d/unifi-repo.gpg https://dl.ui.com/unifi/unifi-repo.gpg
3. In /etc/apt/sources.list.d/mongo-server-3.6.list die MongoDB 3.6 Quelle hinzufügen (Hinweis: hier muss leider auf sehr alte Software zurückgegriffen werden):
deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/3.6 main
4. Dann Hinzufügen des nötigen GPG-Keys für MongoDB 3.6 mit
wget -qO /etc/apt/trusted.gpg.d/mondodb-server-3.6.asc https://www.mongodb.org/static/pgp/server-3.6.asc
5. UniFi läuft leider nur mit Java 8 (OpenJDK 1.8), diese veraltete Java Version beziehen wir aus Debian stretch (Eintrag in /etc/apt/sources.list.d/stretch.list:
deb http://deb.debian.org/debian stretch main deb http://security.debian.org/ stretch/updates main
6. Installieren von UniFi-Controller-Software
sudo apt-get update sudo apt-get install openjdk-8-jre sudo apt-get install unifi
Nötigen Anpassungen der Netzwerkeinstellungen in /etc/network/interfaces
# The primary network interface allow-hotplug eth0 iface eth0 inet static address 172.16.0.99 netmask 255.255.255.0 network 172.16.0.0 broadcast 172.16.0.255 gateway 172.16.0.253 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 172.16.0.253 dns-search backbone
Einbinden eines UniFi-Access-Points
Login via WebGUI unter https://172.16.0.99:8443.
Anpassungen der Einstellungen:
Einstellungen > Neues Drahtlosnetzwerk hinzufügen > SSID > "Hier SSID-Namen einfügen"
IP-Anpassungen:
Gerät > Uplink Kabelgebunden > Konfiguration > Netzwerk
Statische IP: 172.16.0.150 Netzwerkmaske: 255.255.255.0 Bevorzugte DNS: 172.16.0.253 Gateway: 172.16.0.253
> Zur Warteschlange > Ausstehende Änderungen anwenden Geräte > Gerät einbinden (Überträgt Daten aus Einstellungen (s. unten))
Nach kurzer Wartezeit und einem Neustart ist der Access-Point nun einsatzbereit.
Anpassungen in Einstellungen/Erstellen der WLAN-Netze
In der Web-GUI von wifimanager.backbone auf Einstellungen > Drahtlose-Netzwerke > Drahtlos-Netzwerk hinzufügen gehen und folgenede Eintragungen vornehmen:
Neues RADIUS-Profil hinzufügen:
Profilname: TJENER IP: 172.16.0.41 Port: 1812 PW: <pwgen 24>
Benutztes PW danach bitte dokumentieren.
Für WLAN-teachers:
SSID: WLAN-teachers WPA-Enterprise VLAN-ID: 21 WPA-Modus: Nur WPA2 RADIUS-Profil: TJENER
Für WLAN-students:
SSID: WLAN-students WPA-Enterprise VLAN-ID: 22 WPA-Modus: Nur WPA2 RADIUS-Profil: TJENER
Für WLAN-edu:
SSID: WLAN-edu WPA-Enterprise VLAN-ID: 23 WPA-Modus: Nur WPA2 RADIUS-Profil: TJENER
Für WLAN-guests:
SSID: WLAN-guests Offen VLAN-ID: 24
Danach wechseln nach Geräte, den zu konfigurierenden AP auswählen und provisionieren auswählen. Die Konfiguration wird jetzt an den AP geschickt und dort gespeichert.
Anpassungen für Freeradius (u.A. LDAP)
Config aus /etc/freeradius/* übernehmen von tjener.kath oder tjener.ebg und entsprechend an neue Schule anpassen.
Anpassungen in /etc/freeradius/modules/ldap
ldap { # # Note that this needs to match the name in the LDAP # server certificate, if you're using ldaps. server = "ldap.intern" identity = "cn=freeradius,ou=freeradius,dc=skole,dc=skolelinux,dc=no" password = <24-stelliges Freeradius Tjener-Profil Passwort> basedn = "dc=skole,dc=skolelinux,dc=no" filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})" #base_filter = "(objectclass=radiusprofile)"
Nötige Anpassungen in LDAP
Mit Tool ldapvi (hier mit mcedit als Editor):
sudo VISUAL=mcedit ldapvi --discover -D cn=admin,ou=ldap-access,dc=skole,dc=skolelinux,dc=no -h ldap.intern -ZZZ PW: <LDAP Admin-PW aus itzks-creds>
Aus Freeradius-PW einen SSHA-Hash erstellen:
sudo slappasswd <Passwort>
Vorzunehmende Änderungen/Anpassungen:
copy "2 ou=people,..."-block > add ou=freeradius,dc=skole,dc=skolelinux,dc=no objectClass: top objectClass: organiuationalUnit ou: freeradius copy "11 cn=admin,..." > add cn=freeradius,ou=freeradius,dc=skole,dc=skolelinux,dc=no objectClass: top objectClass: organizationalRole objectClass: simpleSecurityObject cn: freeradius description: Freeradius Service-Account userPassword: {SSHA}<output von slappasswd>
Anpassungen in /etc/freeradius/clients.conf
Secret mit pwgen 24 erstellen und hinzufügen. Secret dann in itzks-creds unter dem Eintrag für das Tjener Freeradius-Profil vermerken.
Setup-Test
Installieren von freeraidus-utils mit
sudo apt-get install freeradius-utils
Testen der Freeradius-LDAP-Anbindung mit dem Tool radtest (idealerweise vorher Gosa-PW ändern, da das benutzte PW in der Bash-History zu sehen ist.):
Da der Freeradius-Dienst auf dem Tjener läuft, muss dessen IP-Adresse angegeben werden.
sudo radtest -x <UID> <Test-PW> 172.16.0.41 10 <Secret>
Nutzungshinweise für UniFi
Nutzungshinweise finden sich hier.