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
Test sans les paquets //dev//
sudo apt-get install acl attr dnsutils krb5-user
Est-ce que krb5-user est vraiment utile sur un DC ?
L'installation de krb5-user va installer via le mécanisme de dépendance krb5-config. Ce paquet va demander d'introduire premièrement le nom du royaume : EXAMPLE.COM, et deuxièmement, si la résolution dns de _kerberos._tcp.example.com ne donne pas de résultat, d'introduire les informations relatives aux serveurs kerberos du royaume ainsi qu'au serveur d'administration de kerberos.
Le paquet krb5-user va, entre autre, apporter les commandes *kinit* et *klist* qui permettent d'interroger et tester le serveur kerberos. Ce paquet n'installe pas un serveur kerberos.
Afin de bénéficier de l'ensemble des fonctionnalités de Samba, il est nécessaire d'activer les ACL et les attributs étendus (user_xattr) sur les partitions concernées par Samba. Pour ce faire, il faut ajouter dans le fichier /etc/fstab les options acl, user_xattr et barrier=1 aux partitions en question. 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 --backup=t /etc/samba/smb.conf /etc/samba/smb.conf.old
Et arrêter le service samba.
sudo service samba stop
Vérification
sudo service samba stop
Si les services nmbd et smbd sont toujours actifs, il faut les arrêter.
sudo service smbd stop sudo service nmbd 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 (visibles sous 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, ceci n'impacte pas votre installation.
L'option –interactive va poser quelques questions pour la création du domaine. Pour connaître, l'ensemble des options relatives à 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
Realm [EXAMPLE.COM]: Domain [EXAMPLE]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [192.168.10.1]: Administrator password: Retype password:
Notes importantes sur cette initialisation :
- Cette initialisation va créer le fichier /etc/samba/smb.conf
- 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 (par exemple : P@ssw0rd).
- 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/*
Démarrer Samba AD DC
Redémarer la machine.
sudo reboot
Le service Samba se gère via Upstart. Par exemple, pour connaître son status :
sudo initctl status samba-ad-dc samba-ad-dc start/running, process 1129
Pour connaître l'ensemble des services démarrés par samba :
sudo samba-tool processes Service: PID ----------------------------- dnsupdate 959 nbt_server 933 rpc_server 932 cldap_server 942 winbind_server 949 kdc_server 943 samba 0 dreplsrv 948 kccsrv 956 ldap_server 938
On y voit, dans l'ordre, les services suivants DNS, NetBIOS, RPC, Connection-less LDAP (CLDAP), WinBind, KDC (Kerberos Distribution Center), Replication (d?), KCC (Knowledge Consistency Checker), LDAP. Tous ces services sont configurés soit dans /etc/samba/smb.conf, soit dans les fichiers /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)
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