Hide navigation sidebar
Hide table of contents sidebar
Skip to content
SAMBA 4.22
Back to top
View this page
Toggle table of contents sidebar

# 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.20, Samba-AD gère un schéma 2022 avec un niveau fonctionnel 2016.

## Microsoft Active Directory 2016

### 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;

- Modifier la section [global] de `/etc/samba/smb.conf` avec le paramètre suivant sur chaque Contrôleur de Domaine Samba :

    ad dc functional level = 2016

- Redémarrer le service Samba sur chaque Contrôleur de Domaine :

    # Redhat and derivative distributions
    systemctl restart samba
    # Debian
    systemctl restart samba-ad-dc

- Installer les dépendances nécessaires à la jonction du serveur Windows :

      # RedHat9 and derivative distributions
      yum install patch python3-markdown
      # Debian
      apt install patch python3-markdown

- Puis lancer les commandes pour joindre le 2016 dans le domaine :

      samba-tool domain schemaupgrade --schema=2019
      samba-tool domain functionalprep --function-level=2016
      samba-tool domain level raise --domain-level=2016 --forest-level=2016

- 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 partition `cn=configuration` qui pointent vers le `rootDN` 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 2016

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 copier `Policies` et `Scripts` dans `C:\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.