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 DirectoryDiesen 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 kopierenNun 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 Es ist immer eine gute Idee sein AD auf Computer zu überwachen, die ihr Kennwort nicht regelmäßig ändern. |
|
Client in Domäne AufnehmenDiese 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 |
|
Anmeldung als Domain UserDer 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"
- ADSync mit Devices
- Azure AD Join
- Device Registration
-
Understanding Azure AD Connect 1.4.xx.x and device disappearance
https://docs.microsoft.com/en-us/azure/active-directory/hybrid/reference-connect-device-disappearance - Digging into Hybrid Azure AD Join
https://oofhours.com/2020/05/23/digging-into-hybrid-azure-ad-join/ - How To: Plan your hybrid Azure Active Directory join implementation
https://docs.microsoft.com/en-us/azure/active-directory/devices/hybrid-azuread-join-plan - userCertificate required on AD Computer account for AAD Connect to sync
https://GitHub.com/MicrosoftDocs/azure-docs/issues/5872 - Azure AD Connect: Device options
https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-device-options - Azure AD Connect: Enabling device writeback
https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-device-writeback - (2019-10-08) Synched Computers/Devices Being Cleaned Up From Azure AD
https://jorgequestforknowledge.wordpress.com/category/active-directory-domain-services-adds/active-directory-users-and-computers/ - Understanding Azure AD Connect 1.4.xx.x and device disappearance
https://docs.microsoft.com/en-us/azure/active-directory/hybrid/reference-connect-device-disappearance - (2019-10-06) Examining Pending Export Deletions In Azure AD Connect
https://jorgequestforknowledge.wordpress.com/2019/10/06/examining-pending-export-deletions-in-azure-ad-connect/ - Azure AD Hybrid Join and the
UserCertificate Attribute
https://www.amobileattempt.com/2018/07/hybrid-join-azure-ad-and.html
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.
- Find The Azure AD Join Type
https://www.petenetlive.com/KB/Article/0001597
Weitere Links
- Azure AD Join
- Windows/Infrastruktur
- Device Registration
- Offline Domain Join (Djoin.exe)
Step-by-Step Guide
https://go.microsoft.com/fwlink/?LinkId=195444
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd392267(v=ws.10) - Djoin.exe
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/ff793312(v=ws.11) - Top 5 myths on Offline Domain Join
https://dirteam.com/sander/2013/02/27/top-5-myths-on-offline-domain-join/ - New features in Active Directory Domain
Services in Windows Server 2012, Part 19:
Offline Domain Join Improvements
https://dirteam.com/sander/2012/09/17/new-features-in-active-directory-domain-services-in-windows-server-2012-part-19-offline-domain-join-improvements/ -
Mit Windows 10 oder Server 2016 offline
einer Domäne beitreten
https://www.windowspro.de/wolfgang-sommergut/windows-10-server-2106-offline-einer-domaene-beitreten -
Step by Step How to use offline Domain join
(Djoin.exe) Active Directory in Windows
Server 2016
https://newhelptech.wordpress.com/2017/07/05/step-by-step-how-to-use-offline-domain-join-Djoin-exe-active-directory-in-windows-server-2016/