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.
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.
Versions
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.
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).
Installation de Samba
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
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
Création du premier DC dans une nouvelle forêt
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
Informations optionnelles et complémentaires
Remonter vos succès/échecs
Références
- wiki Samba : http://wiki.samba.org/index.php/Samba_AD_DC_HOWTO
- articles dans linux pratique n°79 de sept/oct 2013 (pages 68 à 73) et linux pratique n°80 de nov/déc (pages 70 à 76)
Contributeur principal : bcag2