Ceci est une ancienne révision du document !


Samba - Active Directory Domain Controller (AD DC)

Le projet Samba est surtout connu pour le partage de fichiers selon le protocol SMB dévellopé par Microsoft. La version 4 de ce logiciel apporte la fonctionnalité supplémentaire d'un contrôleur de domaine Active Directory (Active Directory Domain Controller - AD DC). Cette fonctionnalité inclue en natif les services DNS, LDAP, Kerberos, RPC et SMB 3.0 + distribution des GPO.

Une connaissance préalable du AD DC de Microsoft et des fonctionnalités tels que DNS, LDAP, Kerberos, RPC, GPO, SMB, … est un atout pour la bonne compréhension et mise en oeuvre de Samba AD DC. Cette documentation s'adresse donc principalement aux administrateurs réseau.

Samba AD DC permet de créer un DC compatible avec les produits de Microsoft allant de Windows Server 2000, 2003, 2008 et 2012. Cependant, toutes les fonctionnalitées avancées ne sont pas encore implémentées. Selon les cas, probablement au sein des PME, Samba AD DC pourrait parfaitement remplacer ces produits.

Samba en version 4 fut premièrement disponible via le paquet samba4. Ce paquet est disponible pour toutes les versions d'Ubuntu allant de Lucid (10.04) à Trusty (14.04 LTS). Cependant, il s'agit là d'un paquet de transition.qui ne sera pas conservé sur le long terme. Samba en version 4 devient la version de base du paquet samba à partir de Trusty (14.04 LTS). Il est donc conseillé aux utilisateurs de Trusty et des versions qui suiveront de ne plus utiliser le paquet samba4 mais bien le paquet samba. Sous Trusty, samba est fourni en version 4.1.3.

Remarque : Sous Trusty, les paquets samba4 et samba co-exiistent. Le premier sert de transistion. Son seul rôle est d'installer par le mécanisme de dépendance le paquet samba.

Samba en version 3 et 4 ne devraient pas co-exister sur une même machine. Si Samba est déjà installé, vous pouvez en vérifier sa version en tapant :

samba -V

La documentation qui suit est basée sur Ubuntu Trusty avec samba en version 4.1.3. L'ensemble des manipulations qui suivent requiert des droits administrateurs (local sur la machine ou domaine).

Pré-requis

Le projet Samba recommande d'installer quelques paquets avant d'installer Samba 4 (cfr OS Requirements) :

sudo apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev \
libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev \
dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl
Ces paquets ne sont pas tous repris dans la liste des dépendances du paquet samba. Quels sont ceux vraiment nécessaires ? Quels sont ceux uniquement nécessaires pour compiler les sources ?

Par ailleurs, il est nécessaire d'activer les ACL et les attributs étendus (user_xattr). Pour ce faire, il faut ajouter dans le fichier /etc/fstab les options acl, user_xattr et barrier=1 aux partitions utilisées par samba. L'option barrier=1 protège les transactions tdb contre la corruption des fichiers (notamment sam.ldb) lors les coupure d'électricité (ou autre crash système).

Exemple d'une partition dans le ficher /etc/fstab

UUID=8059560e-4a78-445b-a363-b3c197b4c7ea      /      ext4      defaults,acl,user_xattr,barrier=1     0     1

Après avoir modifié le fichier /etc/fstab, il faut redémarrer la machine ou remonter la partition pour que la modification soit effective

sudo reboot

ou

sudo mount -o remount /

Le noyau d'Ubuntu Trusty provenant des dépôts a bien les options XATTR, SECURITY et POSIX_ACL pour les systèmes de fichier ext3 et ext4. Toute autre situation nécessitera de vérifier que ces options aient bien été activées pour le système de fichier choisi lors de la compilation du noyau.

A partir des dépôts

Cette solution a l'avantage d'être très simple à mettre en oeuvre.

sudo apt-get install samba

A partir des sources

Cette solution s'adresse aux personnes qui connaissent déjà bien le sujet et qui savent ce qu'apporte une version plus récente que celle disponible dans les dépôts. N'hésitez pas à vous reporter à la page suivante : https://wiki.samba.org/index.php/Build_Samba

wget http://www.samba.org/samba/stable/samba-4.1.4.tar.gz
tar xvzf samba-4.1.4.tar.gz
cd samba-4.1.4
./configure
make && make install

En résumé, ces quelques lignes permettent de télécharger, décompresser, compiler et installer samba à partir des sources.

Il peut être utile (voir indispensable) d'installer les "samba-tool" :

 sudo apt-get install samba-common-bin 

ou pour les version avant Trusty :

 sudo apt-get install samba4-common-bin 

Ceci constitue l'étape unique qui va créer le premier domaine dans la forêt.

Les autres possibilités sont :

  • La création de DC alternatifs dans un même domaine.

:: Si vous souhaitez configurer le serveur Samba comme un contrôleur de domaine additionnel dans un domaine existant, référez-vous au guide Joining a Windows Domain Controller as an additional DC in a Domain.

  • La création d'un DC supportant un nouveau domaine dans la même forêt.

Paramètres généraux

Le reste de cette documentation se basera sur les paramètres suivants :

Nom du serveur ubndc01
Nom de domaine example.com
Royaume (realm) EXAMPLE.COM
Nom de NetBIOS example
Adresse IP 192.168.1.11
Rôle du serveur DC (contrôleur de domaine)

Initialisation de Samba

Préalablement à l'iniatilisation de Samba, il faut supprimer ou renommer le fichier smb.conf

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.old

Et arrêter le service samba.

sudo service samba stop

L'initialisation va créer plusieurs fichiers type base de données ainsi que le fichier smb.conf

 sudo samba-tool domain provision --use-rfc2307 --interactive

L'option –use-rfc2307 active les attributs Posix et crée les informations NIS dans l'AD. Ceci permet d'administrer les UIDs/GIDs et autres paramètres UNIX (dans l'onglet "Unix attributes" de l'ADUC). Il est plus simple de l'activer durant l'initialisation, plutôt que par la suite. De plus, même si vous n'en avez pas (encore) besoin, ça n'impacte pas votre installation.

L'option –interactive va poser quelques questions pour la création du domaine. Pour connaître, l'ensemble des paramètres relatifs à l'initialisation, il est recommandé d'exécuter

samba-tool domain provision --help 

Si les valeurs satisfont, il ne faut alors que les valider par ENTER

  • ??
  • ??

Notes importantes sur cette initialisation :

  • Par défaut, l'initialisation propose le serveur DNS interne de Samba comme serveur DNS. Il est possible d'utiliser Bind comme serveur DNS d'arrière-plan (backend). Ce choix n'est pas définitif. A tout moment, il sera possible de changer de serveur DNS d'arrière-plan.
  • Le mot de passe du compte Administrator du domaine doit respecter les règles de complexité, à savoir : au moins une majuscule, un chiffre et 8 caractères de long.
  • Dans le cas d'une ré-initialisation, en plus des mesures déjà décrites ci-dessus, il sera nécessaire de préallablement supprimer les fichiers de base de données privés de Samba
rm -rf /var/lib/samba/private/*

Mise à jour depuis un domaine Samba de type NT4 vers un AD

Si vous prévoyez la migration depuis un domain Samba NT4 existant vers un domaine Samba AD, reportez-vous à Classicupgrade HowTo (http://wiki.samba.org/index.php/Samba4/samba-tool/domain/classicupgrade/HOWTO)

Démarrer votre AD DC Samba

Note: si vous des services smbd, nmbd ou winbind d'une précédente installation, il est nécessaire de les arrêter avant de démarrer samba Si vous prévoyez d'utiliser samba comme serveur de production, tapez simplement :

 /usr/local/samba/sbin/samba

Cela démarre samba en mode 'standard', ce qui est préconise en mode production.
Pour le démarrage automatique au démarrage du serveur, Samba ne dispose pas encore de scripts d'initialisation pour ubuntu, mais il y a des exemples de scripts sur la page Init-Script de Samba4. Si vous exécutez samba a des fin de développement, exécuter :

 /usr/local/samba/sbin/samba -i -M single

Cela démarrera Samba avec tous les messages log vers stdout, limite a un seul processus. Ce mode permet un débogage de Samba avec gdb :

 gdb --args /usr/local/samba/sbin/samba -i -M single

Test de connexion a votre contrôleur de domaine AD Samba

Vérifiez tout d'abord que vous avez la bonne version de smbclient en tapant :

 /usr/local/samba/bin/smbclient --version

Cela doit retourner un version commençant par "Version 4.x" Exécutez ensuite la ligne suivante pour lister les partages définis sur votre serveur:

 /usr/local/samba/bin/smbclient -L localhost -U%

       Sharename       Type      Comment
       ---------       ----      -------
       netlogon        Disk
       sysvol          Disk
       IPC$            IPC       IPC Service (Samba 4.x.y)

le retour doit être similaire aux informations ci-dessus. Les partages netlogon et sysvol sont par défaut sur un serveur Active Directory et crée dans votre fichier de configuration smb.conf lors de la configuration initiale (provisioning) ou mise a jour. Si la commande échoue, redémarrer samba :

 killall samba
 /usr/local/samba/sbin/samba

Pour vérifier que l'authentification fonctionne, vous devez essayer de vous connecter au partage netlogon en utilisant le compte Administrateur crée durant le configuration initial (provisioning). Le retour doit être similaire aux informations ci-dessous:

 smbclient //localhost/netlogon -UAdministrator% -c 'ls'

Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.x.y]
  .                                   D        0  Tue Dec 11 20:00:00 2012
  ..                                  D        0  Tue Dec 11 20:00:00 2012

Configuration du serveur DNS

Une configuration fonctionnelle du DNS est essentielle pour assurer le bon fonctionnement de Samba et de l'AD. Sans les bons paramètres, Kerberos ne fonctionnera pas, entraînant le non-fonctionnement de services de base! Une configuration hâtive, non fonctionnelle, vous fera perdre du temps pour définir la cause des dysfonctionnement du DNS. Pour gérer les paramètres DNS, vous pouvez utilisez l'utilitaire samba-tool (voire l'outil MMC DNS de Windows). Pour plus d'information, consulter DNS Administration et administrer Samba AD depuis windows

DNS Backends

Pour plus d'information sur la configuration du serveur DNS et trouver celle qui répond à vos besoins, consultez la page DNS
Lors de l'initialisation, il vous est proposé quatre choix comme "DNS Backend" : SAMBA_INTERNAL (par défaut), BIND9_FLATFILE (obsolète?), BIND9_DLZ (si vous mettez en place un serveur DNS avec BIND), NONE (si, c'est possible!).

Serveur DNS interne à samba (SAMBA_INTERNAL)

Par défaut, Samba utilise son propre serveur DNS interne et aucune configuration supplémentaire n'est nécessaire.
Il est souvent nécessaire de définir le serveur DNS vers lequel renvoyer les demandes qui ne sont pas du ressort du DNS interne, pour cela ajouter :

 dns forwarder = {adresse IP du serveur DNS vers lequel transmettre}

dans votre fichier smb.con puis redémarrer Samba.
Nota : cette ligne peut avoir été renseignée durant l'initialisation (provisioning) !

Pour que le serveur DNS interne puisse fonctionner, le port 53 udp/tcp ne doit pas être utilisé par d'autres programmes (tel qu'un autre serveur DNS, Dnsmasq, etc…). Vous aurez des erreurs dans le logfile si Samba ne peut utiliser le port 53, telle que :

 Failed to bind to 0.0.0.0:53 TCP - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED 

Pour vérifier quel programme est sur le port 53, exécuter avec les droit d'administrateur :

 netstat -tunpe | grep ":53" 
Interfaçage avec un serveur BIND (BIND9_DLZ)

Si vous choisissez BIND9_DLZ lors de votre initialisation (provisioning), référez-vous au wiki the Bind as DNS backend HowTo pour connaître les instructions à suivre. Vous trouverez aussi plus d'informations sur le wiki pour la configuration de BIND en général et comment le configurer pour l'utiliser avec Samba AD. Si vous avez initialiser avec le DNS interne, vous pouvez basculer vers BIND lorsque cela est nécessaire.

Configuration du fichier /etc/resolv.conf

Pour résoudre les recherches local de DNS, il est nécessaire de modifier le fichier /etc/resolv.conf. L'exemple suivant doit être suffisant pour résoudre le DNS correctement (adapter au domaine et adresse IP dans votre environnement):

domain samdom.example.com
nameserver 192.168.1.1

Tests du serveur DNS

Configuration de Kerberos

Si vous ne connaissez pas le fonctionnement de Kerberos, voici un lien pour vous éclairer :
http://irp.nain-t.net/doku.php/320kerberos:start
La configuration de Kerberos se trouve dans le fichier krb5.conf. Ce fichier doit être déposé dans le répertoire /etc
Lors de l'initialisation, ce fichier est créé et déposé dans /usr/loca/samba/share/setup/krb5.conf. Son contenu par défaut est :

[libdefaults]
        default_realm = ${REALM}
        dns_lookup_realm = false
        dns_lookup_kdc = true

Note : si vous avez oublié votre nom de "royaume", exécutez

/usr/local/samba/bin/samba-tool testparm --suppress-prompt | grep realm

Tests de Kerberos

Le test le plus simple est d'utiliser la commande kinit comme cela:

 kinit administrateur@SAMDOM.EXAMPLE.COM 

Note: vous devez saisir le nom de "royaume" en lettres majuscules !

Note: selon la distribution, kinit peut juste retourner un prompt, mais sous certaines distributions le retour est du type

Warning: Your password will expire in x days on ...  

(Attention: votre mot de passe expirera dans x jours, le… )

Pour vérifier quelle version de Kerberos est utilisée, et qu'elle vous retourne un ticket, taper :

klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@SAMDOM.EXAMPLE.COM
 
Valid starting     Expires            Service principal
02/10/13 19:39:48  02/11/13 19:39:46  krbtgt/SAMDOM.EXAMPLE.COM@SAMDOM.EXAMPLE.COM

Si ni kinit ni klist n'existe sur votre système, référez-vous à la page Samba_4_OS_Requirements ou au début de ce document.

Vous pouvez aussi tester Kerberos à partir d'un poste client, mais vous devez tout d'abord configurer le fichier krb5.conf and resolve.conf du poste client comme illustré ci-dessus.

Note: Si vous utilisez un poste client derrière un serveur NAT vous devez ajoter la ligne suivante dans le fichier krb5.conf de controleur de domaine:

<code>[kdc]

      check-ticket-addresses = false<code>

Note: Si l'initialisation (provisionning) génère un mot de passe et que vous le perdez, vous pouvez utilisez samba-tool user setpassword administrator en administrateur pour le réinitialiser.

Configuration NTP

Contributeur principal : bcag2

  • utilisateurs/quentin/samba_active_directory_domain_controller.1393583803.txt.gz
  • Dernière modification: Le 28/02/2014, 11:36
  • par Qedinux