RADIUS-Konfiguration zwischen NPS-Servern synchronisieren mit PowerShell

    RADIUS-Konfguration in NPS importierenWenn man einen RADIUS-Server mittels Network Policy Server (NPS) bereit­stellt, dann wird häufig ein zweiter Server eingesetzt, um Ausfall­sicherheit zu gewähr­leisten. Aller­dings gibt es von Haus aus keine Möglich­keit, um die Konfi­guration der NPS-Server zu synchro­nisieren. Das Problem lässt sich mit Power­Shell lösen.

    Die schlechteste Variante bestünde darin, dass ein Administrator jede Änderung am NPS doppelt vornimmt, was natürlich erheblichen Mehr­aufwand und Zeit­verlust bedeutet. Eine weitere Möglichkeit wäre ein manueller Ex- und Import der RADIUS-Konfiguration. Dies ist mittels der NPS-Konsole möglich.

    RADIUS-Konfiguration per GUI übertragen

    Hierzu öffnet man die NPS-Konsole, klickt mit der rechten Maustaste auf NPS (Local) und wählt dort Export Configuration aus.

    RADIUS-Konfguration über die NPS-Konsole exportieren

    Danach bestätigt man den Hinweis, dass die Secrets (also die Passwörter) ebenfalls exportiert werden.

    Der Export der Secrets muss extra bestätigt werden

    Zum Schluss speichert man die Konfiguration in eine XML-Datei, um sie später importieren zu können.

    Speichern der RADIUS-Konfiguration in einer XML-Datei

    Diese Datei kann man nun auf den zweiten Server kopieren und dort importieren. Dazu öffnet man die NPS Konsole, macht wieder einen Rechtsklick auf den auf NPS (local) und wählt dann Import Configuration aus.

    Import der exportierten RADIUS-Konfiguration auf dem Ziel-Server

    Im darauf folgenden Dialog wählt man die kopierte XML-Datei aus, klickt auf Open und bringt damit beide Server auf dem gleichen Konfigurations­stand.

    Dieser Vorgang ist zwar schneller als alle Einstellungen doppelt einzugeben, verlangt aber dennoch ein wenig Aufwand. Daher habe ich ein kleines Skript vorbereitet, das diesen Prozess für uns automatisiert. Jeder Schritt in diesem Skript ist mit einem Kommentar versehen. Trotzdem erläutere ich kurz seinen Ablauf.

    NPS-Server über PowerShell synchronisieren

    Das Skript wird auf dem Haupt-Server ausgeführt, also dort, von wo man die Konfiguration kopieren möchte. Mit dem Befehl Export-NpsConfiguration wird die Konfi­guration einmal mit einem Zeitstempel (als Backup) und einmal ohne Datums­angabe im Dateinamen exportiert.

    Die Version ohne Zeitstempel wird dann per Copy-Item auf den Ziel-Server kopiert. Dort exportiert das Skript dann ebenfalls zur Sicherheit die aktuelle Konfiguration, und anschließend importiert es die Einstellungen des Quell-Servers mittels Import-NPSConfiguration.

    Das Skript sieht folgendermaßen aus:

    Das Skript setzt auf beiden Servern die Ordnerstruktur C:\admin\NPS\Backup voraus, und der Benutzer muss natürlich Administrator sein. Zudem muss der Variablen $NPSDestServer der jeweilige Name des Ziel-Servers als Wert zugewiesen werden, und zwar in der Anweisung

    $NPSDestServer = "SecondRADIUS"

    Nach einer Konfigurations­änderung kann der Administrator dieses Skript einmal ausführen und danach sind beide Server sofort auf dem gleichen Stand. Hier noch einmal bildlich veranschaulicht:

    Diagramm zur Veranschaulichung der RADIUS-Synchronisierung

    Zeitgesteuerte Synchronisierung

    Aber wie wir wissen, vergisst man solche Sachen gerne, und schon weicht die Konfiguration der beiden Server voneinander ab. Daher empfehle ich, die Server einmal oder mehrmals am Tag mittels eines Tasks zu synchronisieren. Hierzu richtet man einfach einen Task in der Aufgaben­planung ein, der das Skript dann regel­mäßig ausführt.

    Ich will schließlich noch darauf hinweisen, dass beim Export keine Templates abgespeichert werden. Dies sollte man immer beachten, falls man Templates einsetzen will.

    Keine Kommentare