Bonjour à tous !

Aujourd’hui nous vous proposons un tuto (voir un cours) sur Samba 4.

Nous commençons par féliciter toute l’équipe du projet samba pour leur super boulot !

A ce jour, Samba AD est à la version 4.1.1. Cette version est livrée avec

  • Un annuaire LDAP Active Directory ;
  • Un serveur d’authentification Kerberos KDC ;
  • Un serveur DNS dynamique sécurisé ;
  • Le support de la version 3.0 du protocole SMB ;
  • Un serveur RPC (Remote Procedure Call) ;
  • La prise en charge des GPO ;
  • Le support de configuration via le service RSAT depuis un client Windows.
  • L’administration du domaine en ligne de commande se fait grâce à l’utilitaire samba-tool.

Tous les services fonctionnent sous un seul processus nommé samba.

** Avant de commencer!
Si vous souhaitez le mettre en place en entreprise, prenez le temps de bien le tester avant. Le Serveur qui sera mis en production devra être propre et l’installation de Samba doit se passer sans problème et sans bidouille :). Rappelons que Samba 4 ressemble beaucoup à un contrôleur de domaine Windows. Il est donc aussi fragile 😉

Notre exemple va être effectué sous Debian Wheezy 7.2 et Samba 4.1.1 .

I] Préparation & Installation

* Prévoir une machine Debian/Ubuntu et une en Windows 7

Toutes les manipulations seront faites sous root. Pour se connecter en root taper su puis le mot de passe. Sous ubuntu il faut activer root avant, pour cela faire

sudo passwd root

puis taper le mot de passe voulu.

  • Tout d’abord, vous devez configurer votre interface réseau en IP statique. (nous allons utiliser 192.168.1.140 comme IP pour ce contrôleur de domaine, debian01 pour le nom de la machine et CESI.LAN comme nom de domaine)

Editez votre fichier /etc/network/interfaces

Changez iface eth0 inet dhcp en iface eth0 inet static .

address 192.168.1.140
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.140 192.168.1.1 (j'utilise ici le DNS de ma boxe, on peut également utiliser 8.8.8.8 dns de google)
dns-search cesi.lan
  • Configurez le fichier /etc/hosts .
127.0.0.1 localhost.localdomain localhost
192.168.1.140 debian01.cesi.lan debian01
  • Configurez le fichier /etc/hostname .
debian01.cesi.lan

puis rédemarrer le service hostname et network ou rédémarrez votre serveur :

/etc/init.d/hostname restart
/etc/init.d/networking restart
  • Configurer le montage du système de fichier

Editer le fichier /etc/fstab :

/dev/sda1 / ext4 defaults,user_xattr,acl,barrier=1 1 1

puis…

mount / -o remount,acl,user_xattr,barrier=1

pour que ce soit tout de suite pris en compte. Par sécurité, je préfère également redémarrer le serveur.
Pour utiliser les fonctionnalités avancées de Samba4 vous avez besoin d’un système de fichiers qui prend en charge les ACL et les attributs étendus.
L’option barrière=1 garantit que les transactions tdb (Tide Data Base) sont protegées contre les pertes de courant inattendues. Beaucoup ont corrompu leur base de données AD dans sam.ldb parce qu’ils n’avaient pas activé cette option.

  • Mettre à jour son système et installer les paquets nécessaires :
apt-get update && apt-get upgrade
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 acl krb5-user docbook-xsl libcups2-dev libpam0g-dev ntpdate ntp -y

/!\ UPDATE : Sous Debian Jessie (v.8) le paquet libgnutls-dev n’existe plus et est remplacé par :  libgnutls28-dev . /!\

Vous allez être interrogé par kerberos sur le domaine etc… entrez cesi.lan et debian01 pour le serveur.

kerberos

  • Télécharger les sources de Samba 4 :
wget http://ftp.samba.org/pub/samba/samba-latest.tar.gz
  • Compiler les sources :
tar zxvf samba-latest.tar.gz
cd samba-latest
./configure --enable-debug --enable-selftest
make && make install

Tout dépend de la performance de votre ordinateur, cela peut prendre entre 10 à 30 min.

II] Configuration

  • Création du domaine (équivalent du dcpromo pour windows)

Attention! Il est préférable de supprimer /usr/local/samba/etc/smb.conf avant de lancer samba-tool. (Il se peut également que l’installation ne l’ai pas créé).

/usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive

L’option –use-rfc2307 active les attributs posix de l’AD de Samba. Cela crée aussi les informations NIS dans l’AD, ce qui vous permet d’administrer les UIDs/GIDs et autres paramètres UNIX (dans la table « Unix attributes » de l’ADUC…Active Directory Users and Computers). Il est plus simple de l’activer durant cette préparation (Provisioning), plutôt que par la suite. De plus, même si vous n’en avez pas (encore) besoin, ça n’impacte pas votre installation.
Par défaut la création de la forêt et du domaine va se faire en niveau fonctionnel Windows 2003. Il est possible de « upgrader » plus tard ou de le définir dès maintenant. Pour cela il faut inclure –function-level=2008_R2 à la commande de samba-tool.

Realm [CESI.LAN]: (press Enter)
Domain [CESI]: (press Enter)
Server Role (dc, member, standalone) [dc]: (press Enter)
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: (press Enter)
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.1.1]: (press Enter)
Administrator password: <your_secret_admin_password>
Retype password: <your_secret_admin_password>

Par défaut Samba4 installe SAMBA_INTERNAL, on peut également choisir d’utiliser Bind9 mais j’ai choisi de rester avec samba et la raison est simple: Bind ne gère pas les zones intégrées à l’Active Directory.

  • Rédemarrage du serveur
shutdown -r now
  • Démarrage de Samba

Note: si vous avez 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 prevoyez d’utiliser samba comme server de production, tapez simplement :

/usr/local/samba/sbin/samba

Cela démarre samba en mode ‘standard’, ce qui est préconisé en mode production. Samba ne dispose pas encore de scripts d’initialisation pour chaque plateforme, mais en écrire un pour votre plateforme ne présentera pas de difficulte, il y a des exemples de scripts sur la page Init-Script de Samba4. Si vous exécutez samba à des fin de développement, exécutez :

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

Si la commande échoue, redémarrer samba :

killall samba
/usr/local/samba/sbin/samba
  • Vérifier les version de samba et smbclient

Note : Pour que Samba tourne sans problème, il faut que service smbclient installé sur le poste soit de la même version que le service samba.

/usr/local/samba/sbin/samba -V
/usr/local/samba/bin/smbclient -V

Les deux commandes doivent retourner la même version.

  • Tester les partages administratifs de SysVol, Netlogon, etc…
/usr/local/samba/bin/smbclient -L localhost -U%

Normalement il doit vous retourner quelque chose qui ressemble à ça :

Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.1.1)
  • Maintenant testons l’authentification :
/usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator%"votre password" -c 'ls'

Nota : Il se peut que vous obteniez une erreur. Essayez donc la commande suivante :

/usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c ‘ls’

Enter Administrator’s password:

il devrait vous afficher :

Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 4.1.1]
. D 0 Sun Nov 17 21:40:08 2013
.. D 0 Sun Nov 17 21:42:36 2013
  • Nous devons finir la configuration DNS. Editez le fichier /etc/resolv.conf :
domain CESI.LAN
search CESI.LAN
nameserver 192.168.1.140

Vérifier que le DNS redirecteur est bien configuré dans samba :

nano /usr/local/samba/etc/smb.conf
verifier l'existance de la ligne :
dns forwarder = 192.168.1.1
  • Configurons maintenant Kerberos :

Editez le fichier /usr/local/samba/share/setup/krb5.conf et remplacez $(REALM) par CESI.LAN . Attention à toujours mettre le nom de domaine en majuscules dans kerberos!

copier ce fichier crée par samba dans /etc.

cp /usr/local/samba/share/setup/krb5.conf /etc

EDIT 07/05/2015 :

Le mieux est tout de même que soit mis à jour automatiquement si vous le modifiez au niveau de samba. Pour ça, créez un lien symbolique au lieu de copier le fichier :

ln -sf /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf
  • Redémarrage du serveur puis démarrage du service samba (vu précédemment)
  • Testons le dns puis kerberos :
host -t SRV _ldap._tcp.cesi.lan

_ldap._tcp.cesi.lan has SRV record 0 100 389 debian01.cesi.lan.

host -t SRV _kerberos._udp.cesi.lan

_kerberos._udp.cesi.lan has SRV record 0 100 389 debian01.cesi.lan.

host -t A debian01.cesi.lan

debian01.cesi.lan has address 192.168.1.140.

Tester la connexion Kerberos :

kinit [email protected]
klist -e
klist -e
klist -e

Si vous recevez une erreur similaire à celle ci :

kinit: Generic preauthentication failure while getting initial credentials

Vous devrez régénérer le mot de passe pour le compte Administrator à l’aide de :

samba-tool user setpassword Administrator
  • Pour avoir une bonne configuration il faut configurer la synchronisation horaire avec NTP :
nano /etc/ntp.conf

ntp utilise plusieurs serveurs pour se mettre à l’heure, afin d’augmenter sa précision en cas d’indisponibilité ou d’erreurs d’un serveur. Leurs adresses sont écrites dans le fichier /etc/ntp.conf, dans les différents champs server. Pour le moment, Debian y a placé une liste de serveurs répartis dans le monde, mais il est plus efficace d’utiliser des serveurs proches, situés dans le même pays. Si vous êtes en France, vous pouvez donc remplacer ces lignes par :

server 0.fr.pool.ntp.org iburst dynamic
server 1.fr.pool.ntp.org iburst dynamic
server 2.fr.pool.ntp.org iburst dynamic
server 3.fr.pool.ntp.org iburst dynamic

L’option iburst signifie qu’en cas d’indisponibilité du serveur, ntp essaiera plusieurs fois avant d’abandonner. L’option dynamic permet de conserver dans la configuration les serveurs indisponibles, au cas où ils seraient à nouveau accessibles plus tard.

ntp est en fait un démon, qui tourne en permanence sur votre système afin de maintenir l’horloge à l’heure et de corriger sa dérive. Après avoir modifié sa configuration, vous devez donc le relancer :

/etc/init.d/ntp restart

III] Administration

Votre DNS ne dispose pas encore de zone inversé (comme sous windows), il faut donc la créer.

Pour la zone inversé , il est plus facile à faire à partir de la console dnsmgmt.msc sur un client Windows XP mais si vous voulez le faire en ligne de commande il suffit d’utiliser la commande suivante:

samba-tool dns zonecreate xxx.xxx.xxx.in-addr.arpa --username=administrator (où xxx.xxx.xxx son les premiers 24 bits de l’adresse réseau)
samba-tool dns zonecreate debian01 1.168.192.in-addr.arpa --username=administrator (le réseau est 192.168.1.x)

Actuellement votre domaine est au niveau fonctionnel 2003. Si vous n’avez pas utilisé l’option –function-level=2008_R2 lors de la création de domaine vous pouvez le faire maintenant:

  • Élever le niveau du domaine:
/usr/local/samba/bin/samba-tool domain level raise --domain-level=2008_R2
  • Élever le niveau de la forêt:
/usr/local/samba/bin/samba-tool domain level raise --forest-level=2008_R2

Par défaut le mot de passe Administrator expire au bout de 42 jours. Pour le désactiver, utilisez la commande suivante :

/usr/local/samba/bin/samba-tool user setexpiry administrator --noexpiry

On peut créer des utilisateurs par exemple en ligne de commande comme ci-dessous :

user add

EDIT 26/11/2014 : Pour vous faciliter la vie vous pouvez ajouter les outils de samba4 dans $PATH.

Pour cela :

echo "export PATH=$PATH:/usr/local/samba/sbin:/usr/local/samba/bin" >> /root/.bashrc
source /root/.bashrc

 

  • Administration depuis Windows :

Nous pouvons joindre un PC windows au domaine puis installer les outils d’administration pour gérer l’AD et le DNS depuis l’interface windows:

Nota : Pour joindre un pc au domaine il faut bien rajouter dans les paramètres DNS l’addresse IP du serveur Samba4.

ip_dns_samba4

Joindre un pc au domaine: bien mettre cesi.lan dans le nom de domaine. ATTENTION ! Le nom d’utilisateur est Administrator et non Administrateur !

Jonction au domaine Bienvenue dans le domaine...

Pour pouvoir administrer l’AD depuis Windows, il faut télécharger les outils RSAT pour Windows 7 :

AD + GPO

On peut également utiliser la console DNS pour gérer le serveur DNS.

——————————

Un tuto sur l’administratation avancée du serveur samba4 est également disponible ici : http://www.bidouilleit.com/2015/10/23/administration-avancee-de-samba4-ad/

A bientôt sur bidouilleit.com !

– Bruno Sousa –