Eines der wichtigsten Argumente für eine reine Microsoft-Umgebung ist die Möglichkeit, die Clients zentralisiert per Active Directory zu verwalten. Doch Canonical arbeitet seit einiger Zeit daran, Ubuntu diese Tricks beizubringen. Dieser Workshop führt zu einer Umgebung, in der Gruppenrichtlinien, Central Store sowie ADML und ADMX dank des ADSys-Pakets Ubuntu-Clients managen.
Zur Realisierung der Active-Directory-Funktionen setzt Canonical auf ein als ADSys [1] bezeichnetes Paket (Active Directory Bridging Tool Suite). Der Code ist vollständig unter der GPL 3.0 lizenziert, in der Praxis zeigt sich allerdings, dass ein Teil der AD-Funktionen den Premium-Varianten von Ubuntu vorbehalten sind. Nutzer der kostenlosen Variante sind auf die Authentifikation und das Verwalten der Desktop-Einstellungen über dconf beschränkt. Die Policies-Referenzliste [2] bestärkt diesen Eindruck, denn mehr als die Hälfte der Richtlinien steht nur zur Verfügung, wenn am Client Ubuntu Pro aktiviert ist. Wer mit Ubuntu Pro experimentieren möchte oder lediglich private Rechner verwaltet, dem sei [3] an Herz gelegt, denn für bis zu fünf Endpoints bietet Canonical den Dienst kostenlos an.
Vernetzen des DC in einem VM-Netz
Wir arbeiten in den folgenden Schritten mit virtuellen Maschinen. Als Host dient eine Ubuntu-Workstation mit ausreichend Arbeitsspeicher und VirtualBox-Version 7.0.20. Wichtig ist im ersten Schritt das in Bild 1 gezeigte Einrichten eines NAT-Netzwerks, mit dem Sie sowohl den Server als auch den Client verbinden. Die Checkbox zur Bereitstellung eines DHCP-Servers sollten Sie anfangs aktiviert lassen, um die Konfiguration des Windows-Servers in der VM zu erleichtern.
Bild 1: NAT-Netzwerke sind für die hier gewünschte Art der Vernetzung zwischen mehreren VMs ideal.
Auf Windows-Seite ist es wichtig, in den Netzwerk-Verbindungseinstellungen eine feste IP-Adresse zu vergeben. Danach folgt ein Wechsel in den Server-Manager, wo die AD-Konfiguration stattfindet. Relevant ist das Anklicken des Links "Promote this server to a domain controller", der nach den Payload-Deployments auf dem Bildschirm erscheint. Entscheiden Sie sich für die Erzeugung eines neuen Forests, um mit einem leeren Active Directory zu starten. Im Feld "Root Domain" ist ein String wie etwa "tamstest.local" einzugeben. Die in der Rubrik "DNS Options" erscheinende Warnung über die DNS-Delegation ist irrelevant. Auch der generierte NetBIOS-Name (hier "TAMSTEST") ist akzeptabel. Zu guter Letzt folgt ein Klick auf "Install", der die Konfiguration finalisiert. Nach dem Reboot des Servers ist es empfehlenswert, in der AD-Benutzerverwaltung einen neuen User hinzuzufügen. Beim gestartetem Windows-Server folgt ein Wechsel in die Netzwerkeinstellungen von VirtualBox. Dort deaktivieren Sie die Option für das Bereitstellen eines virtuellen DHCP-Servers.
Zur Realisierung der Active-Directory-Funktionen setzt Canonical auf ein als ADSys [1] bezeichnetes Paket (Active Directory Bridging Tool Suite). Der Code ist vollständig unter der GPL 3.0 lizenziert, in der Praxis zeigt sich allerdings, dass ein Teil der AD-Funktionen den Premium-Varianten von Ubuntu vorbehalten sind. Nutzer der kostenlosen Variante sind auf die Authentifikation und das Verwalten der Desktop-Einstellungen über dconf beschränkt. Die Policies-Referenzliste [2] bestärkt diesen Eindruck, denn mehr als die Hälfte der Richtlinien steht nur zur Verfügung, wenn am Client Ubuntu Pro aktiviert ist. Wer mit Ubuntu Pro experimentieren möchte oder lediglich private Rechner verwaltet, dem sei [3] an Herz gelegt, denn für bis zu fünf Endpoints bietet Canonical den Dienst kostenlos an.
Vernetzen des DC in einem VM-Netz
Wir arbeiten in den folgenden Schritten mit virtuellen Maschinen. Als Host dient eine Ubuntu-Workstation mit ausreichend Arbeitsspeicher und VirtualBox-Version 7.0.20. Wichtig ist im ersten Schritt das in Bild 1 gezeigte Einrichten eines NAT-Netzwerks, mit dem Sie sowohl den Server als auch den Client verbinden. Die Checkbox zur Bereitstellung eines DHCP-Servers sollten Sie anfangs aktiviert lassen, um die Konfiguration des Windows-Servers in der VM zu erleichtern.
Bild 1: NAT-Netzwerke sind für die hier gewünschte Art der Vernetzung zwischen mehreren VMs ideal.
Auf Windows-Seite ist es wichtig, in den Netzwerk-Verbindungseinstellungen eine feste IP-Adresse zu vergeben. Danach folgt ein Wechsel in den Server-Manager, wo die AD-Konfiguration stattfindet. Relevant ist das Anklicken des Links "Promote this server to a domain controller", der nach den Payload-Deployments auf dem Bildschirm erscheint. Entscheiden Sie sich für die Erzeugung eines neuen Forests, um mit einem leeren Active Directory zu starten. Im Feld "Root Domain" ist ein String wie etwa "tamstest.local" einzugeben. Die in der Rubrik "DNS Options" erscheinende Warnung über die DNS-Delegation ist irrelevant. Auch der generierte NetBIOS-Name (hier "TAMSTEST") ist akzeptabel. Zu guter Letzt folgt ein Klick auf "Install", der die Konfiguration finalisiert. Nach dem Reboot des Servers ist es empfehlenswert, in der AD-Benutzerverwaltung einen neuen User hinzuzufügen. Beim gestartetem Windows-Server folgt ein Wechsel in die Netzwerkeinstellungen von VirtualBox. Dort deaktivieren Sie die Option für das Bereitstellen eines virtuellen DHCP-Servers.
Im nächsten Schritt kehren Sie zum Win-dows-Server zurück, wo Sie die Rolle des DHCP-Servers zu den Diensten hinzufügen. Wichtig ist außerdem noch die Konfiguration eines Scopes, um IP-Adressen an auftauchende Clients zu vergeben. Beachten Sie, dass die Aktualisierung der diversen Netzwerkeinstellungen von VirtualBox das Herunterfahren aller verbundenen VMs erforderlich macht – ein Neustart der Host-Maschine wäre aber ebenfalls ein gangbarer Weg. Zur Finalisierung fehlt dann noch der Wechsel in die "Active Directory Benutzer und Computer"-Konsole. Ein Rechtsklick auf die Computer-Rubrik öffnet die Option "Delegate Control", wo sowohl dem Administrator als auch dem neu angelegten User Rechte zuzuweisen sind.
Active Directory verbinden
Canonical versucht, Administratoren die Integration neuer Systeme in die AD-Managementumgebung so weit wie möglich zu vereinfachen. Als erster Versuch soll eine Ubuntu-VM dienen. Die in VirtualBox festgelegten Hardwareeinstellungen sind unkritisch, solange das Netzwerk-Subsystem mit dem zuvor angelegten NAT-Netzwerk verbunden ist. Dies ist erforderlich, weil der Client sonst keinen Kontakt zum Domaincontroller aufnehmen kann. Wichtig ist außerdem, die Checkbox "Skip Unattended Installation" zu markieren – VirtualBox würde sonst eine beschleunigte Installation des Gastbetriebssystems durchführen, die interessante Aspekte des Installationsassistenten überspringt.
Ein wichtiger Hinweis, bevor wir fortfahren: Geht dem Ubuntu-Host beim Betrieb der virtuellen Maschinen der Arbeitsspeicher aus, ist es nicht erforderlich, eine Repartitionierung des Dateisystems durchzuführen. Neben den als Hibernations- Medium geeigneten Swap-Partitionen kennt Linux die Möglichkeit, dynamische Swapfiles zu erzeugen. Diese taugen zwar nicht als Hibernations-Speicher, lassen sich dafür aber im laufenden Betrieb in die Arbeitsspeicherverwaltung einbinden [4].
Im Rahmen der Einrichtung zeigt Ubuntu im ersten Schritt ein Fenster zur Eingabe eines lokalen Kontos samt dazugehöriger Konfiguration. Wichtig ist, dass das Anklicken der Checkbox "Use Active Directory" nicht ausreicht. Es ist unbedingt erforderlich, ein lokales Benutzerkonto festzulegen. Die von uns verwendete Testkonfiguration präsentiert sich wie in Bild 2. Zu beachten ist, dass Überprüfungen des Verbindungsaufbaus durch den Test "domain connectivity"-Knopf keine Statusmeldung einblenden. Solange keine rote Fehlermeldung erscheint, ist der Verbindungsaufbau gelungen.
Bild 2: Diese Ubuntu-Einstellungen sind für die Verbindung zum AD erforderlich.
Durch Drücken der Windows-Taste lässt sich im Ubuntu-Installer ein Terminalfenster öffnen, in dem die korrekte Zuweisung einer IP-Adresse aus dem DHCP-Bereich des Windows-Servers überprüfbar ist. In der Praxis kam es bei uns an dieser Stelle meist zu der Situation, dass der Fortschritt-Knopf durch einen drehenden Fortschrittsbalken blockiert war. Weitere Informationen darüber, was im Hintergrund schiefging, liefert der Installer im Interesse der Benutzerfreundlichkeit nicht. Aus diesem Grund ist es empfehlenswert, beim Auftreten von Problemen im ersten Schritt eine gewöhnliche lokale Installation durchzuführen und danach im zweiten Schritt wie bei der Konfiguration einer vorhandenen Workstation fortzufahren.
Workstations hinzufügen
Eine grüne Wiese ist der Idealzustand beim Aufbau neuer Umgebungen, doch die Praxis konfrontiert den Admin mit gewachsenen Umgebungen. Erschwerend kommt hinzu, dass die beschriebenen Probleme im Hause Canonical gut bekannt sind. Ein Beispiel hierfür ist der Fehlerbericht unter [5]. Unserer Einschätzung nach arbeitet Canonical nicht wirklich daran, dies zu beheben.
Als nächste Aufgabe wollen wir unsere VM deshalb mit deaktivierter Checkbox "Use Active Directory" konfigurieren, um ein gewöhnliches System vor uns zu haben. Um die für eine vollständige AD-Infrastruktur benötigten Komponenten in der neu installierten Ubuntu-VM zu installieren, folgt jetzt die Eingabe von
Zum Freischalten der fortgeschrittenen Möglichkeiten im Bereich AD-Konfiguration nehmen wir außerdem das Angebot an, eines der fünf kostenlos verfügbaren Tokens zwecks Entsperrung der Ubuntu-Pro-Funktionen in der VM einzupflegen.
Wie beim Hostnamen des Domaincontrollers müssen auch die einzelnen Clients über einen FQDN ansprechbar sein. Dies lässt sich durch folgende Befehle bewerkstelligen, die an den vom Ubuntu-Installationsprogramm festgelegten Maschinennamen das Suffix des Active Directory anhängt:
FQDN="<drzaovirtualbox.tamstest.local>"
sudo hostnamectl set-hostname "$FQDN"
Im nächsten Schritt empfiehlt sich die Eingabe von
realm discover <tamstest.local>
Dies prüft die Kommunikationsfähigkeit zwischen Ubuntu und Domaincontroller. Bei korrekter Konfiguration zeigt eine nicht verbundene virtuelle Maschine den in Bild 2 gezeigten Screen. Der eigentliche Verbindungsaufbau erfolgt durch
realm join <tamstest.local>
systemctl restart sssd
Das Kommando erfragt sowohl das Administrator-Passwort des Windows-Servers als auch das der lokalen Maschine. Dies ist logisch, da vergleichsweise umfangreiche Modifikationen an beiden Enden der Konfiguration erforderlich sind. Zum Überprüfen der korrekten Einrichtung bietet sich dann das abermalige Aufrufen des soeben verwendeten Befehls realm discover <tamstest.local> an. Wichtig ist, dass er nun den String "configured: kerberos-member" zurückliefert. Alternativ dazu wechseln Sie im Windows-Server in die Geräteliste des Active Directory, wo nach einer manuellen Aktualisierung die VM als Teil der Computerflotte erscheint.
Zum Abschluss der Arbeiten empfiehlt sich die Eingabe des folgenden Befehls in eine root-Shell:
pam-auth-update --enable mkhomedir
Dies konfiguriert die notwendigen Speicherbereiche, um AD-Usern Zugriff auf Heimverzeichnisse und sonstige Informationen zu ermöglichen.
Bild 3: Die Ubuntu-VM kann den Windows-Server ansprechen, ist aber noch nicht als Client konfiguriert.
Login-Probleme beheben
Nun sollten Sie sich aus der Ubuntu-VM ausloggen. Über die Option "Not listed" lässt sich ein Login-Fenster öffnen, das im Hilfetext durch Ausgeben des nach dem Schema "user@domain" aufgebauten Benutzernamens zur Anmeldung mit AD-Account animiert. Im Idealfall klappt dies sofort, doch in der Praxis verifiziert Ubuntu oftmals die eingegebenen Credentials, um die Verarbeitung danach unter Ausgabe der Fehlermeldung "Failure setting user credentials" zu verweigern. Zur Fehlersuche nutzen Sie
id drzao@<tamstest.local>
su - drzao@<tamstest.local>
Der ID-Befehl liefert dabei eine Liste aller zu einem bestimmten User gehörenden IDs. Auf diese Weise lässt sich feststellen, ob der AD-Benutzer bereits in der Verwaltung des vorliegenden Linux-Systems eingepflegt ist.
Von besonderem Nutzen ist die vom zweiten Befehl zurückgegebene Fehlermeldung, denn sie informiert über im Rahmen der Abarbeitung des Login-Versuchs gegen den Domaincontroller anfallende Ereignisse und Fehler. Ein typisches Problem bei unseren Tests war die Authentifikation der Benutzerkonten mit ADSys. Zur Lösung reicht es aus, den grafischen Login-Konfigurationsmanager durch Eingabe von sudo pam-auth-update zu starten. Dort deaktivieren Sie die Zeile "ADSys authentication" und drücken Enter, um die Einstellungen zu speichern. Nach getaner Arbeit lässt sich über den su-Befehl ein Wechsel der angemeldeten Identität durchführen. Der Username-Teil des Prompts verändert sich, was auf die erfolgreiche Rekonfiguration hinweist.
GPO-Unterstützung einrichten
Ubuntu bietet systemimmanent einen komplett anderen Satz an Einstellungen an, als er auf Windows-Clients verfügbar ist. In der Theorie könnte Canonical eine Abstraktionsschicht realisieren, die als Makler zwischen den aus Windows bekannten Settings und ihren Pendants der Linux-Welt agiert. Doch dies ist in der Praxis wenig produktiv, denn Canonical müsste erstens permanent "hinterheradministrieren" und zweitens sorgen massive konzeptionelle Unterschiede zwischen Unix und Windows dafür, dass sich der Gutteil der Einstellungen eines Windows-Clients niemals eins zu eins auf einem Unix-Betriebssystem widerspiegeln lässt.
Mit der als Group Policy Administrative Template bezeichneten Funktion bietet das Active Directory die Möglichkeit, mehr oder weniger beliebige Regeln als AD-Parameter festzulegen. Dieses Feature kommt auch in der Microsoft-Welt häufig zum Einsatz, beispielsweise zur Konfiguration von zusätzlichen Einstellungen für Office. Dafür ist es erforderlich, zwei Dateien mit den Endungen ADML und ADMX in den Domaincontroller hochzuladen. Zu ihrer Erzeugung bieten sich dabei zwei Wege an: Zunächst findet sich unter [6] ein Repositorium, in dem Canonical immer die aktuellsten Varianten der Files zur Verfügung stellt. Das Unternehmen stellt dabei übrigens zwei Dateivarianten bereit: der Unterordner "lts-only" enthält die für die zuletzt ausgelieferte LTS-Version von Ubuntu geeigneten Dateien, während das Verzeichnis "all" den aktuellsten Stand der Entwicklung abbildet. Aus der Logik folgt, dass die in "all" enthaltenen Funktionen nicht unbedingt auf älteren Versionen des Systems funktionieren.
Die auf GitHub verfügbaren Versionen sind insofern bequem, als dass Sie lediglich die URL im Browser des Windows-Servers aufrufen müssen. Der Nachteil ist allerdings, dass diese Files immer den aktuellsten in ADSys implementierten Entwicklungsstand abbilden – es ist also vorstellbar, dass die lokale Variante des Clients mit einigen der dort deklarierten GPOs nichts anzufangen weiß. Dies kann in der Praxis zu seltsamem oder undefiniertem Verhalten des Serververbunds führen.
Der zweite Weg zum Erzeugen der relevanten Dateien ist eine auf der lokalen Workstation arbeitenden Anwendung, die die auf dem jeweiligen Rechner gültigen Einstellungen exportiert. Dazu geben Sie die folgenden Befehle ein:
sudo apt-get install polkitd-pkla
sudo apt-get install smbclient
Bugreports in der Canonical-Umgebung weisen darauf hin, dass das Vorhandensein dieser Werkzeuge die AD-Administration erleichtert. Im nächsten Schritt legt
sudo adsysctl policy admx all
die erforderlichen Dateien "Ubuntu.adml" und "Ubuntu.admx" im aktuellen Arbeitsverzeichnis der Konsole ab.
Im nächsten Schritt ist das Anlegen eines zentralen GPO-Einstellungsspeichers [7] erforderlich. Im Windows Explorer wechseln Sie in das Verzeichnis "\SYSVOL\ <Ihr Server>\Policies\PolicyDefinitions". Falls der Ordner "PolicyDefinitions" noch nicht existiert, lässt er sich wie ein gewöhnliches Verzeichnis erstellen.
Die Datei "Ubuntu.admx" wandert in der hier gezeigten Domänen-Konfiguration dann in den Ordner "…\Policies\PolicyDefinitions", während die sprachspezifische Datei "Ubuntu.adml" im Unterverzeichnis "…\Policies\PolicyDefinitions\en-US" landet. Weisen die in der lokalen Konfiguration verwendeten Domänen einen anderen Namen auf, müssen die Sie Pfade natürlich an Ihre Situation anpassen.
Nach dem Abspeichern der beiden Dateien folgt die Aktivierung der GPO-Managementkonsole (gpmc.msc), in der ein zur jeweiligen Domäne gehörendes GPO-Objekt entsteht. Bei korrekter Platzierung erscheinen danach, wie in Bild 4 zu sehen, Ubuntu-spezifische Stellschrauben, die per Active Directory die Anpassung des Systemverhaltens erlauben. Besondere Aufmerksamkeit verdient, dass sich viele der Einstellungen für spezifische Versionen von Ubuntu ändern lassen.
Bild 4: Dieses GPO bringt spezifische Parameter zur Konfiguration von Ubuntu mit.
Allgemein gilt, dass angepasste GPO-Änderungen im Laufe der Zeit automatisch vom Domänencontroller in Richtung der Ubuntu-Maschinen wandern. Ein sofortiger Synchronisierungslauf, der über eventuelle Fehler informiert, lässt sich nach folgendem Schema in einer Kommandozeile auslösen:
adsysctl policy update -av
Fazit
Obwohl das Einrichten der Verbindung zwischen Active Directory und Ubuntu etwas hakelig ausfällt, gilt, dass die Remote-Administration im Großen und Ganzen funktioniert. Wer ein Active Directory vorhält, kann seine Linux-Systeme nun ebenfalls darüber verwalten – eine erhebliche Komfortsteigerung, die in der täglichen Administration wertvolle Arbeitszeit einspart, auch wenn dies nur mit einer Ubuntu-Pro-Lizenz klappt.