UniFi Controller, Anzeige von RADIUS-Logins

Vor einiger Zeit las ich einen Artikel (auf Habr, der aber nicht wiedergefunden werden konnte), in dem beschrieben wurde, wie die Anzeige von Anmeldungen autorisierter RADIUS-Benutzer im webbasierten Control Panel der auf dem * nix-System installierten Steuerung konfiguriert wird. Ich habe festgestellt, dass diese spezielle Lösung nur für * .nix geeignet ist. Daher habe ich mich inspiriert dafür entschieden, diese auf Windows + NPS (auch bekannt als RADIUS-Server) zu implementieren.

Außerdem finden Sie unter der Katze Informationen zum Übertragen von Daten von Windows-Ereignissen an die Scheduler-Task.

War




Wird sein




Wenn Sie keine Informationen zum Einrichten von APs und NPS erhalten, können Sie die Publikation "Authentifizieren von drahtlosen Clients mit Active Directory-Konten" zur Überprüfung verwenden . Ich möchte darauf hinweisen, dass in meinem Fall der NPS-Server nur für die Wi-Fi-Authentifizierung verwendet wird und sich der Unifi-Controller auf demselben Computer befindet wie er. Im Folgenden finden Sie Hinweise zur Vorgehensweise, wenn Ihre Konfiguration anders ist.

Wir fahren direkt mit der Umsetzung des Plans fort. Zunächst müssen wir den Moment der erfolgreichen Benutzerautorisierung erfassen und wichtige Informationen abrufen, womit ich die MAC-Adresse des Clientgeräts und das Login des autorisierten Benutzers meine. Erstellen Sie dazu im Windows-Scheduler eine Aufgabe, deren Auslöser ein Ereignis der erfolgreichen Autorisierung durch den NPS-Server ist (Protokoll: "Sicherheit", Quelle: "Microsoft Windows-Sicherheitsüberwachung", Ereigniscode: 6272). In den Aktionen geben wir unsere zukünftige CMD an (wir werden später darauf zurückkommen).

Einstellungen auslösen


Es ist nicht möglich, die Datenübertragung vom Ereignis zum Skript über die Windows-GUI zu konfigurieren. Dies ist jedoch kein Problem. Wir exportieren unsere Aufgabe in XML und öffnen sie in einem Texteditor. Wir interessieren uns für den EventTrigger-Block:

true

Fügen Sie den ValueQueries-Block mit den aus dem Ereignis ausgeliehenen Parametern ein:

true
Event/EventData/Data[@Name='SubjectUserName']Event/EventData/Data[@Name='CallingStationID']

Der vollständige Text der Aufgabe, ohne optionale Parameter (der Habraparser aß> <, dh, sie sollten sich im Subscription-Block statt in spitzen Klammern befinden, da sonst der Import fehlschlägt.)
trueEvent/EventData/Data[@Name='SubjectUserName']Event/EventData/Data[@Name='CallingStationID']C:\name_for_mac_unifi.cmd
      $(SubjectUserName) $(CallingStationID)


Wir kehren zum Scheduler zurück, löschen die zuvor erstellte Aufgabe und importieren das korrigierte XML. Fügen Sie dem Skript die folgenden Argumente hinzu: $ (SubjectUserName) $ (CallingStationID)

Über Ereignisse und Optionen
Informationen zum Übertragen von Ereignisparametern an die Task finden Sie hier .

Wenn der NPS-Server nicht nur ein Wi-Fi-Netzwerk bedient und viele Richtlinien vorhanden sind, zeigt der obige Link, wie den Aufgabenbedingungen (Abonnementblock) zusätzliche Filter hinzugefügt werden können. In diesem Fall können Sie nach dem Namen der NPS-Richtlinie filtern.

Nachdem wir alle notwendigen Daten haben, gehen Sie zum Skript. Darin wird die von Unifi Controller verwendete Mongo-Datenbank bearbeitet, dh in der Benutzersammlung des Datensatzes mit der MAC-Adresse des Client-Geräts wird die Eigenschaft name gleich dem Login des Benutzers gesetzt (regelmäßige Aktualisierung). In CMD sieht das so aus:

@ECHO off
set user=%1
set mac=%2
:: меняем в маке - на :
set mac=%mac:-=:%
:: в случае если это первый логин устройства - мака в базе еще нет, ставим "sleep"
ping -n 60 127.0.0.1 > nul
:: mongo регистрозависим, поэтому средствами встроенного в mongo js приводим мак к нижнему регистру
mongo.exe 127.0.0.1:27117/ace  --eval "var mac='%mac%'; db.user.update({ mac:mac.toLowerCase()},{$set:{name:'%user%'} });"

Ein bisschen über MONGO Client und Server
Unter den Mongo-Binärdateien ist kein Client im Lieferumfang des Unifi Controllers enthalten. Es muss separat heruntergeladen werden, während der zum Herunterladen vorgeschlagene Client aktueller als der Server war und keine Aktualisierung durchführen wollte. Es wird gelöst, indem der Client der gleichen Version heruntergeladen wird.

Überprüfen Sie die Client- und Serverversionen wie folgt:

C:\>mongo.exe 127.0.0.1:27117/ace
MongoDB shell version: 2.2.2
connecting to: 127.0.0.1:27117/ace
> db.version()
2.2.2
> version()
version: 2.2.2
>

Es gibt keinen Link zum Herunterladen dieser Version auf der MongoDB-Website , aber kein Problem.

Verlinken Sie auf eine beliebige Version für die gewünschte Plattform: fastdl.mongodb.org/win32/mongodb-win32-i386-2.2.7.zip

. Ersetzen Sie die von uns benötigte Version von

mongo durch fastdl .mongodb.org / win32 / mongodb-win32-i386-2.2.2.zip

C 2.2.2 hat "Hurra" weitergegeben.

Und ja, ich konnte keine Verbindung von einem Computer eines Drittanbieters herstellen. Vielleicht waren die Einstellungen der Basis schuld, ich habe es nicht verstanden, da es keine Notwendigkeit gab. Aber selbst wenn keine Remoteverbindung zur Datenbank hergestellt werden kann, stört es niemanden, einen lokalen Befehl auf dem Computer mit dem Mongo-Server auszuführen.

Das ist alles, viel Glück! Ich akzeptiere Korrekturen / Kritik.

Unifi API
Nachdem ich die gesamte Idee umgesetzt und den Artikel gestartet hatte , stieß ich auf eine Erwähnung von unifi api (anscheinend wurde sie in dem eingangs erwähnten Originalartikel darauf implementiert), aber die Links und die Suche im offiziellen Wiki gaben die Informationen nicht preis. Die Informationen in den Repositories enthüllten das Geheimnis einiger Methoden.

Ich glaube, dass Sie zum Ändern der Anmeldung auf $ baseurl / api / cmd / stamgr verweisen und die Zeile json = {'cmd': 'update-sta', 'mac': '$ {mac}', 'name': '$ 2 übergeben können ',' email ':' $ 3 '} .

Jetzt auch beliebt: