Ajouter un AD Windows dans son domaine Samba Active Directory
Cette documentation s’adresse aux adminsys qui ont besoin d’un contrôleur de domaine MS-AD dans leur domaine Samba-AD pour des raisons techniques (Azure-Sync, etc.).
Indication
Depuis la version 4.12, Samba-AD gère un niveau de schéma 2012R2 mais toujours avec un niveau fonctionnel en 2008R2. Il est donc possible de joindre un Windows Server 2012R2 configuré en niveau fonctionnel 2008R2 avec un domaine Samba-AD comme AD.
Avertissement
En date du 2024-09-18, Samba-AD ne permet pas de rejoindre un MSAD 2016 ou 2019.
Microsoft Active Directory 2012R2
Préparer son Samba-AD pour la future jonction
Sauvegarder le Samba-AD car des modifications irréversibles vont être faites ;
Mettre à jour Samba pour être dans la dernière version 4.12 ;
Installer les dépendances nécessaires à la jonction du serveur Windows :
# RedHat8 and derived distributions yum install patch python36-markdown # Debian apt install patch python3-markdown
Puis lancer les commandes pour joindre le 2012R2 dans le domaine :
samba-tool domain schemaupgrade samba-tool domain functionalprep --function-level=2012_R2 --forest-prep --domain-prep
Vérifier la base de données de l’annuaire :
samba-tool dbcheck --cross-ncs --fix --yes
Indication
Il est possible que des erreurs remontent lors de la première commande, il suffit de la relancer une seconde fois.
Il manque un attribut dans Samba qui va générer des messages d’erreur dans la commande dcdiag. Pour résoudre le problème, recréer deux attributs
msDS-SDReferenceDomain
dans la partitioncn=configuration
qui pointent vers lerootDN
de l’Active Directory. Pour ce faire, vous pouvez exécuter le script suivant sur le serveur Samba-AD :# -*- coding: utf-8 -*- from samba.auth import system_session from samba.credentials import Credentials from samba.samdb import SamDB import optparse import samba.getopt as options parser = optparse.OptionParser("/etc/samba/smb.conf") sambaopts = options.SambaOptions(parser) lp = sambaopts.get_loadparm() domaine = sambaopts._lp.get('realm').lower() creds = Credentials() creds.guess(lp) samdbloc = SamDB(session_info=system_session(),credentials=creds, lp=lp) listdn = list(samdbloc.search(base='cn=partitions,' + str(samdbloc.get_config_basedn()), expression=('(|(dnsroot=ForestDnsZones.%s)(dnsroot=DomainDnsZones.%s))' % (domaine,domaine) ))) for dn in listdn: if not 'msDS-SDReferenceDomain' in dn : ldif_data = u"""dn: %s changetype: modify replace: msDS-SDReferenceDomain msDS-SDReferenceDomain: %s""" % (dn['dn'],str(samdbloc.get_root_basedn())) print(ldif_data) samdbloc.modify_ldif(ldif_data)
Préparer et joindre le Microsoft Active Directory 2012R2
Note
Il est recommandé d’utiliser une version anglaise de Windows Server pour les services d’infrastructure. Cela permet d’avoir des log en anglais et se sentir moins seul quand on cherche sur internet.
Si ce n’est pas déjà fait, passer en IP fixe le serveur et configurer le redirecteur DNS pour qu’il point vers l’AD principal ;
Installer les composants Active Directory. Dans une console PowerShell lancer les commandes suivantes :
Install-WindowsFeature AD-Domain-Services Add-WindowsFeature RSAT-ADLDS Add-WindowsFeature RSAT-ADDS-Tools Add-WindowsFeature RSAT-DNS-Server Add-WindowsFeature RSAT-DFS-Mgmt-Con Add-WindowsFeature GPMC
Maintenant que le rôle est installé, promouvoir le serveur en AD et le paramétrer ;
Note
La commande suivante va ouvrir une popup qui va demander les identifiants Domain Admins pour faire la jonction (en mode graphique), puis les identifiants pour le mode restauration AD (en mode texte).
Note
Il faut bien sûr modifier les valeurs Credential, DomainName, SiteName et ReplicationSourceDC.
Il y a un caractère back quote (`) à la fin de chaque ligne. il ne faut pas l’enlever sinon PowerShell va interpréter cette commande comme plusieurs commandes.
Install-ADDSDomainController ` -Credential (Get-Credential "MYDOMAIN\Administrator") ` -DomainName 'mydomain.lan' ` -SiteName 'Default-First-Site-Name' ` -ReplicationSourceDC srvads.mydomain.lan ` -CreateDnsDelegation:$false ` -DatabasePath 'C:\Windows\NTDS' ` -InstallDns:$true ` -LogPath 'C:\Windows\NTDS' ` -NoGlobalCatalog:$false ` -SysvolPath 'C:\Windows\SYSVOL' ` -NoRebootOnCompletion:$true ` -Force:$true
Note
À cette étape, l’Active Directory sous Windows est bien joint au domaine. Cependant, il faut ajuster quelques options sur la partie Sysvol, DNS et NTP.
Forcer l’activation du répertoire Sysvol sur le MS-AD :
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" -Name "SysvolReady" -Value "1"
Recopier le contenu du
sysvol
depuis le serveur Samba. Pour ce faire, dans un explorateur de fichier, tapez\\srvads\sysvol\
, puis aller dans le dossier correspondant au nom de votre domaine (par exemple ad.mydomain.lan) et copierPolicies
etScripts
dansC:\windows\SYSVOL\domain
(mais pas le nom de domaine). Après la copie on aura donc ces deux répertoires :C:\windows\SYSVOL\domain\Policies
;C:\windows\SYSVOL\domain\Scripts
;
Note
Il y a un lien de C:\windows\SYSVOL\sysvol\ad.mydomain.lan
vers C:\windows\SYSVOL\domain
.
Redémarrer le serveur MS-AD :
shutdown -r -t 0
Inverser les serveurs DNS de la carte réseau. Le premier serveur DNS doit être lui même (
127.0.0.1
), et en deuxième on indique le serveur Samba-AD (Microsoft fait l’inverse lors de la jonction).Dans la console DNS, changer le redirecteur DNS vers le récurseur du réseau (par défaut Windows met le premier contrôleur de domaine comme récurseur lors de la jonction).
Modifier ensuite la configuration NTP dans la base de registre du MS-AD :
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" -Name "Type" -Value "NTP"
Puis relancer le service NTP depuis une invite de commande sur le MS-AD :
net stop w32time net start w32time
Enfin, mettre à jour la configuration DNS et Kerberos du serveur Samba-AD en renseignant le nouveau serveur Windows. Pour cela modifier les fichiers
/etc/hosts
,/etc/resolv.conf
et/etc/krb5.conf
;
Avertissement
Samba ne gère pas les protocoles DFS-R ou FRS.
Donc, il sera nécessaire de synchroniser manuellement le répertoire SYSVOL
à chaque fois qu’une GPO est créée ou modifiée.
Windows 2016 et Windows 2019
Actuellement, les version de samba 4.12 et après ne supporte pas la jonction d’un Active Directory 2016 ou 2019.