Djoin - Offline Domain Join

Mehrere Computer lassen sich in einer Domäne zusammenfassen, so dass Sie alle die gleiche Benutzerdatenbank, Gruppenrichtlinien etc. verwenden. Dazu muss der Computer am Anfang in die Domäne aufgenommen werden. Das ist einfach, wenn der Computer und der Domain Controller miteinander sprechen können. mit Djoin können Sie einen Computer auch ohne Verbindung zum Domain Controller in die Domäne aufnehmen.

Warum will ich das?

Die Aufnahme eines Computers in eine Domain ohne Verbindung zum Domaincontroller ist sicher nicht der Regelfall. Die meisten Computer werden einfach im LAN installiert und können sogar automatisch aufgenommen werden. Aber es gibt auch Situationen, in denen dies explizit nicht gewünscht ist oder nur aufwändig möglich ist. Das gilt insbesondere für mobile Anwender oder Homeoffice-Benutzer, bei denen keine transparente Netzwerkverbindung vorhanden ist.

Zwar bieten die meisten Firmen auch einen VPN-Zugang an, aber der ist heute stark abgesichert, so dass sie keine Verbindung mit einem "Fremden PC" allein mit Benutzername und Kennwort aufbauen können. Bei einem "Computer-VPN" muss sich der Client entsprechend ausweisen und kryptografische Informationen haben, was oft nur für verwaltete Domainmitglieder gilt.

  • Neuinstallation im Homeoffice
    Stellen Sie sich vor, dass ein Firmencomputer außerhalb des Firmennetzwerks gar nicht mehr startet und der Weg über eine Neuinstallation erfolgt. Er kommt so ja nicht an den Domain Controller
  • Massenumstellung
    Es gibt durchaus Firmen, bei denen das bestehende AD durch einen Hacker-Angriff nicht mehr vertrauenswürdig ist. Dann könnte es eine Lösung sein, ein neues AD aufzubauen und die PCs per Skript in die neue Domäne aufzunehmen.
  • Vorinstallation durch Lieferant
    Größere Firmen können "vorinstallierte" PCs bekommen, die mit einem Image des Kunden versehen sind. Theoretisch könnte der Kunden auch schon die Computerkonten im AD provisionieren und der Lieferant bereitet den Domainjoin vor.
  • Installation von Clients und Servern im Datacenter
    Durch die Integration von Djoin im System Image oder Unattended-File können Sie sehr schnell automatisiert viele Clients installieren ohne von Domain Controllern bei der Installation abhängig zu sein
  • RODC-Szenarien
    Speziell in "sichereren" Umgebungen werden ReadOnly-DCs genutzt. Normalerweise müsste der Clietn aber immer zum beschreibaren DC sich verbinden, um der Domäne beizutreten. Mit Djoin kann an Admin das Konto schon anlegen und zum RODC replizieren lassen, so das der Client keine Verbindung braucht.

Auch wenn es wenige Fälle sind, sollten Sie als Windows Administrator diesen Weg kennen, um Windows 7 und höher mit Windows 2021R2 Server oder höher auf diesem Weg zu verbinden

Djoin mit Arbeitsplatz-PC

Wir starten mit einem fertig installierten Windows Desktop, der ohne weitere Netzwerkverbindung in eine Domäne aufgenommen werden soll. Der Prozess besteht aus mehreren Schritten.

Schritt Erledigt

Anlegen des Computerkontos im Active Directory

Diesen Schritt machen Sie nicht mit der MMC für Benutzer oder New-ADComputer sondern mit dem Programm Djoin, welches das Computerkonto provisioniert und auch die erforderliche Datei erzeugt.

PS C:\>Djoin /provision /domain "MSXFAQ" /machine "PC1" /savefile pc1joindata.bin

Provisioning the computer...
Successfully provisioned [PC1] in the domain [MSXFAQ].
Provisioning data was saved successfully to [pc1joindata.bin].

Computer provisioning completed successfully.
The operation completed successfully.

Das Konto wird in der "Computers-OU" angelegt, wenn Sie nicht eine OU mit dem Parameter "machineou <OU Name>" mit angeben. Sie können optional noch Zertifikat-Templates, Zertifikate und Gruppenrichtlinien mit angeben, die Djoin mit integriert. Damit kann der Client danach sogar ein VPN mit Zertifikat, z.B. Direct Access, starten.

Datei kopieren

Nun müssen wir die im ersten Schritt angelegte Datei irgendwie auf den Client bekommen, der diese Datei später einliest um damit seine Domain-Mitgliedschaft zu erreichen.

Achtung
Die Datei ist BASE64 codiert aber nicht weiter verschlüsselt oder gesichert und enthält damit auch das Computer-Kennwort. Achten Sie daher auf die Datei, zumindest bist der Computer eine Verbindung zum DC aufbauen konnte und sein Kennwort geändert hat.

Es ist immer eine gute Idee sein AD auf Computer zu überwachen, die ihr Kennwort nicht regelmäßig ändern.

Client in Domäne Aufnehmen

Diese Datei wird auf dem Client mit Djoin genutzt, um die Domänenmitgliedschaft zu ändern. Sie müssen dazu "lokaler Administrator" sein:

E:\>Djoin /requestodj /loadfile .\pc1joindata.bin /windowspath c:\windows /localos
Die Bereitstellungsdaten werden aus der folgenden Datei geladen: [.\pc1joindata.bin].

Fehler bei der Anforderung zum Offline-Domänenbeitritt: 0x2e4.
Der angeforderte Vorgang erfordert erhöhte Rechte.

Die Bereitstellungsdaten werden aus der folgenden Datei geladen: [.\pc1joindata.bin].

Die Bereitstellungsanforderung wurde erfolgreich abgeschlossen.
Ein Neustart ist erforderlich, damit die Änderungen wirksam werden.
Der Vorgang wurde erfolgreich beendet.

Die Änderungen werden erst nach einem Neustart aktiv, den Sie aber selbst auslösen müssen.

Achtung
Djoin ändert nicht nur die Domäne sondern auch der Computernamen auf den Namen, der in der Datei hinterlegt ist.

Anmeldung als Domain User

Der Computer ist zwar nun in der Domäne aber eine Anmeldung mit Domänenkonten ist erst möglich, wenn der Client eine Verbindung zum DC aufgebaut hat. Solange können Sie sich nur als "lokaler Benutzer" weiter anmelden. Sinnvoll ist so ein Djoin, wenn Sie zugleich dafür sorgen, dass der Computer schon vor der Anmeldung des Anwender z.B. ein VPN zur Firma aufgebaut hat.

Djoin mit AzureAD

Auf der Seite Azure AD Join habe ich die verschiedenen Modelle beschrieben, die ein Client mit dem AzureAD hat. Ein per Djoin im lokalen AD addierter Client erscheint in der Cloud natürlich als "Hybrid AD Joined" Gerät und kann damit arbeiten. Interessant ist die Funktionsweise je nach Status des Computers:

Status

Verhalten

Workgroup

Der Computer wird Mitglied der Domäne aber nicht automatische zu AzureAD registriert oder gejoined. Hier heißt es warten, bis das Computerkonto von ADSync auch ins AzureAD übertragen wird und der Client dann Hybrid Joined wird.

AzureAD registered

Djoin nimmt den Computer ohne Rückfrage in die Domäne auf.

AzureAD Joined

Über die GUI und den Assistenzen können Sie so einen PC nicht in die Domäne aufnehmen mit Djoin hingegen funktioniert es. DAs macht es interessant, diesen Djoin-Job z.B. einem per INTUNE aus der Cloud verwalteten Computer zuzuweisen und damit nachträglich in die Domäne aufzunehmen.

Nach der Ausführung von Djoin ist der Computer dann Mitglied der Domäne.

Interessant war, dass der Computer bei mir Domänenmitglied ist und ADSync ihn auch einliest aber bislang kein Match erfolgt ist. In der Cloud wurde es noch kein "Hybrid Joined" Client.

Azure Hybrid Joined

Djoin sollten Sie hier nicht ausführen, denn der PC ist ja schon "Mitglied". Wenn Sie Djoin ausführen, dann wird der PC neu mit dem Computer-Namen aus der Datei in die Domäne aufgenommen.

Beachten Sie, dass Djoin mit einem neuen Computernamen die AzureAD-Registrierung nicht entfernt aber der Name des Computers nicht mehr mit dem AzureAD-Namen übereinstimmt.

Generell scheint es eine schlechte Idee zu sein, Computer durch Djoin nicht nur in die AD-Domäne aufzunehmen sondern auch noch den Computernamen zu ändern.

Hinweis:
Ein Computerkonto im AD wird nicht automatisch ins AzureAD repliziert. ADSync überträgt das Computerkonto nur in das Metaverse aber wartet dann darauf, dass aus der Cloud ein passendes Konto erscheint, um einen JOIN zu machen und dann die Daten weiter abzugleichen.

AzureAD <> AD-Konto

Angefangen habe ich mit einem Computer, der nicht in der Domäne war. Wenn ich einen Windows 10 PC neu installiere und ihm einen Internetzugang gebe, dann kann ich gar keine "lokalen Benutzer" mehr anlegen, sondern muss eine "Mailadresse" hinterlegen. Der Windows PC nutzt diese Information, um gleich mein "Microsoft Konto"  (vormals LiveID/Passport) oder mein AzureAD-Konto mit dem Computer zu verbinden. Ich habe also einen lokalen "Platzhalter"-Benutzer der mit dem Cloud-Konto verknüpft ist. Im Prinzip nicht schlecht, weil ich damit dann z.B. direkt im Browser auch meine Cloud-Dienste nutzen kann, Outlook den Server findet und OneDrive sofort meine Dateien vorhält.

In meinem Fall habe ich mein AzureAD-Konto genutzt, welches natürlich den gleichen UPN hat, wie das lokale AD-Konto. Mit dem lokalen AD-Konto kann ich mich aber nicht anmelden, da der PC ja noch nicht Mitglied der Domain ist.

Djoin hat dies geändert. Aus meinem "Workgroup-PC" der zugleich AzureAD Joined war, wurde dann ein Domain-Mitglied. Nach dem Neustart konnte ich mich nun an der Domäne anmelden. Dabei ist es egal, ob ich mich klassisch im NT4-Stiel mit "Domain\User" anmelde oder schon meinen Active Directory UPN nutzen. Der PC hat eine Ersteinrichtung durchgeführt und damit war klar, dass es ein "neues Konto" ist.

Der Windows PC war nicht in der Lage zu erkennen, dass das bereits bestehende Anmeldekonto, welches mit dem AzureAD-Benutzer und gleichem UPN verbunden ist, nun sich als lokales AD-Konto anmeldet.

Viel schlimmer war, dass ich noch keinen Weg gefunden habe, mich wieder mit dem Azure-AD Konto anzumelden. Aus Sicherheitsüberlegungen und Vereinfachung mag das sinnvoll sein. Allerdings muss eine Firma sich Gedanken machen, wie vielleicht Daten des Anwenders, die er mit seinem AzureAD-Konto erstellt hat, nun in das neue Profil übernommen werden. Werden die Daten eh schon in die Cloud synchronisiert, dann kommen Sie ja einfach wieder. Dann bleibt nur die Frage wie man das alte Profil sauber entfernt, damit der Festplattenplatz nicht doppelt belegt ist.

Djoin mit bestehendem Domainmitgliedschaft

Djoin nimmt auch keine Rücksicht auf bestehende Domänenmitgliedschaften.

Der Aufruf von Djoin mit einer passenden Import-Datei ändert ohne Rückfrage oder Warnung sowohl den Computernamen auf den Namen in der Datei und setzt auch die Domänenmitgliedschaft für den Computer.

Djoin forciert aber keinen Neustart

Sie müssen daher sicherstellen, dass der Computer durch Djoin oder einen anderen Prozess auch die erforderlichen Einstellungen bekommt, um eine Verbindung zur Domäne aufzubauen. Wenn der Computer sowieso im LAN ist, geht das vergleichsweise schnell. Ein Client im Hotel oder Home-Office müsste dazu schon ein Computer-VPN vorab aufbauen.

Änderungen am Computerobjekt

Ich habe das per Djoin im lokalen AD angelegte Computer-Objekt per LDIFDE exportiert und auch direkt nach dem ersten Reboot des PCs. Folgende Felder haben sich durch den Neustart des Computers geändert:

Feld Alt Neu

lastLogon

0

132549664868970697

pwdLastSet

132549654963310753

132549664117805587

logonCount

0

4

operatingSystem

<leer>

Windows 10 Enterprise

operatingSystemVersion

<leer>

10.0 (19042)

servicePrincipalName:

TERMSRV/pc1
TERMSRV/pc1.netatwork.de
RestrictedKrbHost/pc1
TERMSRV/pc1
TERMSRV/pc1.netatwork.de
RestrictedKrbHost/pc1

lastLogonTimestamp

<leer>

132549664099992820

msDS-SupportedEncryptionTypes

<leer>

28

Es sind ziemlich wenige Felder und alles sind aus meiner Sicht erklärbar. Der PC ändert wohl direkt sein Kennwort, aktualisiert die operatingSystem-Felder und das Active Directory aktualisiert entsprechende Zeitstempel.

ADSync und UserCertificate

Das von mir so hinterlegte Computerobjekt wurde aber von ADSync leider noch nicht erkannt. Es wird zwar in das Metaverse übertragen aber nicht weiter synchronisiert.

Ursache ist dabei das fehlende Feld "UserCertificate" beim Computerkonto (Siehe auch ADSync mit Devices), welches beim "AzureAD Join" des Computers generiert und dann in das Active Directory geschrieben wird. In meinem Beispiel war der Computer aber schon vorher "AzureAD joined". Der Beitritt ins AzureAD erfolgte zu einem Zeitpunkt, in dem der Computer noch nicht Domainmitglied war.

Ich habe mir dann beholfen, dass ich den Computer noch mal aus der Domäne entfernt und neu aufgenommen habe. Der Client hat dann wieder ein SelfSigned Zertifikat angelegt und im Active Directory veröffentlicht. Der Rest hat dann ADSync übernommen.

Hier passt mit DJoin noch etwas nicht, was ich noch nicht weiter analysiert habe. Der Fall ist aber auch nicht "üblich". Vielleicht hätte ich das Problem läsen können, indem ich einfach den AzureAD Join nochmal forciert hätte. Der PC ist ja nun Mitglied der AD-Domäne und damit über den Weg verwaltbar.

Nach der Aktion hatte ich dann aber zwei Geräte im AzureAD.

Das zweite Gerät konnte ich dann mit einem "dsregcmd /join" beschleunigt aufnehmen. Das würde ansonsten der Client irgendwann machen. Danach war das Gerät korrekt "Hybrid Joined"

Computerstatus abfragen

Wenn Sie nicht genau wissen, in welchem Status gerade ihr Computer und Konto ist, dann sollten Sie DSREGCMD kennen. Diese Kommandozeile liefert ihnen genaue Informationen über ihre Zugehörigkeit:

PS C:\> dsregcmd /status

+----------------------------------------------------------------------+
| Device State                                                         |
+----------------------------------------------------------------------+

             AzureADjoined : YES
          EnterpriseJoined : NO
              DomainJoined : YES
                DomainName : UCLABOR
               Device Name : PC1.UCLABOR.DE

+----------------------------------------------------------------------+
| Device Details                                                       |
+----------------------------------------------------------------------+

                  DeviceId : 6e2f7371-99d3-4e9c-a9fd-xxxxxxxxxxxx
                Thumbprint : 5686612A52C5D4B30B85305A8xxxxxxxxxxxxxxx
 DeviceCertificateValidity : [ 2021-01-12 20:01:21.000 UTC -- 2031-01-12 20:31:21.000 UTC ]
            KeyContainerId : 55bd5e38-01d8-4523-966b-2f057e956df2
               KeyProvider : Microsoft Software Key Storage Provider
              TpmProtected : NO
          DeviceAuthStatus : SUCCESS

+----------------------------------------------------------------------+
| Tenant Details                                                       |
+----------------------------------------------------------------------+

                TenantName : msxfaq.onmicrosoft.com_test
                  TenantId : 3c6855ff-e39f-4d09-a473-xxxxxxxxxxxx
                       Idp : login.windows.net
               AuthCodeUrl : https://login.microsoftonline.com/3c6855ff-e39f-4d09-a473-xxxxxxxxxxxx/oauth2/authorize
            AccessTokenUrl : https://login.microsoftonline.com/3c6855ff-e39f-4d09-a473-xxxxxxxxxxxx/oauth2/token
                    MdmUrl :
                 MdmTouUrl :
          MdmComplianceUrl :
               SettingsUrl :
            JoinSrvVersion : 2.0
                JoinSrvUrl : https://enterpriseregistration.windows.net/EnrollmentServer/device/
                 JoinSrvId : urn:ms-drs:enterpriseregistration.windows.net
             KeySrvVersion : 1.0
                 KeySrvUrl : https://enterpriseregistration.windows.net/EnrollmentServer/key/
                  KeySrvId : urn:ms-drs:enterpriseregistration.windows.net
        WebAuthNSrvVersion : 1.0
            WebAuthNSrvUrl : https://enterpriseregistration.windows.net/webauthn/3c6855ff-e39f-4d09-a473-xxxxxxxxxxxx/
             WebAuthNSrvId : urn:ms-drs:enterpriseregistration.windows.net
    DeviceManagementSrvVer : 1.0
    DeviceManagementSrvUrl : https://enterpriseregistration.windows.net/manage/3c6855ff-e39f-4d09-a473-xxxxxxxxxxx/
     DeviceManagementSrvId : urn:ms-drs:enterpriseregistration.windows.net

+----------------------------------------------------------------------+
| User State                                                           |
+----------------------------------------------------------------------+

                    NgcSet : NO
           WorkplaceJoined : YES
          WorkAccountCount : 1
             WamDefaultSet : NO

+----------------------------------------------------------------------+
| SSO State                                                            |
+----------------------------------------------------------------------+

                AzureAdPrt : NO
       AzureAdPrtAuthority :
             EnterprisePrt : NO
    EnterprisePrtAuthority :

+----------------------------------------------------------------------+
| Work Account 1                                                       |
+----------------------------------------------------------------------+

         WorkplaceDeviceId : 6e2f7371-99d3-4e9c-a9fd-xxxxxxxxxxxx
       WorkplaceThumbprint : 91509EEB713067AAEBE1xxxxxxxxxxxxxxxxxxx
 DeviceCertificateValidity : [ 2021-01-12 19:52:45.000 UTC -- 2031-01-12 20:22:45.000 UTC ]
            KeyContainerId : 940de35b-6032-46a0-9f0a-71e53a17ee64
               KeyProvider : Microsoft Software Key Storage Provider
              TpmProtected : NO
              WorkplaceIdp : login.windows.net
         WorkplaceTenantId : 3c6855ff-e39f-4d09-a473-xxxxxxxxxxx
       WorkplaceTenantName : msxfaq.onmicrosoft.com_test
           WorkplaceMdmUrl :
      WorkplaceSettingsUrl :
                    NgcSet : NO

+----------------------------------------------------------------------+
| Diagnostic Data                                                      |
+----------------------------------------------------------------------+

        AadRecoveryEnabled : NO
    Executing Account Name : PC1\Admin
               KeySignTest : PASSED

+----------------------------------------------------------------------+
| IE Proxy Config for Current User                                     |
+----------------------------------------------------------------------+

      Auto Detect Settings : YES
    Auto-Configuration URL :
         Proxy Server List :
         Proxy Bypass List :

+----------------------------------------------------------------------+
| WinHttp Default Proxy Config                                         |
+----------------------------------------------------------------------+

               Access Type : DIRECT

+----------------------------------------------------------------------+
| Ngc Prerequisite Check                                               |
+----------------------------------------------------------------------+

            IsDeviceJoined : YES
             IsUserAzureAD : NO
             PolicyEnabled : NO
          PostLogonEnabled : YES
            DeviceEligible : YES
        SessionIsNotRemote : YES
            CertEnrollment : none
              PreReqResult : WillNotProvision

For more information, please visit https://www.microsoft.com/aadjerrors

Wenn Sie im Bereich "Device Details" eine "DeviceID" finden, dann ist der PC "AzureAD Joined". Wenn Sie "nur" eine ""WorkstationDeviceID" finden, dann ist es ein "AzureAD Registered" Device.

Weitere Links