Samba 4

Samba 4 peut s’exécuter  comme un contrôleur de domaine (DC). Dans un environnement de production, il est recommandé d’exécuter plusieurs DC pour des raisons de « basculement ». Samba 4 est administrable depuis un client Windows à l’aide des outils RSAT.

Prérequis

  • Une machine Linux debian de préférence.
  • Configurer le serveur DHCP en pointant l’adresse du serveur DNS primaire vers le futur DC.
  • Un serveur NTP opérationnel.
  • Un nom de domaine : dom.jbsky.fr

Comme Microsoft et Samba4 préconise d’utiliser un nom DNS réel, j’ai mis un nom de domaine réel en 3 parties (Active Directory Naming FAQ). Soit le contrôleur de domaine n°1 aura un FQND : dc1.dom.jbsky.fr.

Configurer le serveur

  • Configurer une adresse IP statique pour le DC À vérifier que le fichier /etc/hosts  résout correctement son FQND  :
127.0.0.1     localhost.localdomain      localhost
192.168.0.1   dc1.dom.jbsky.fr     dc1
  • Modification du fichier fstab, on ajoute dans les options pour chaque montage « acl,user_xattr,barrier=1 ».
UUID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX /               ext4    errors=remount-ro,user_xattr,acl,barrier=1    0       1
UUID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX /home           ext4    defaults,user_xattr,acl,barrier=1        0       2 
UUID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX /usr            ext4    defaults,user_xattr,acl,barrier=1        0       2 
UUID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX /var            ext4    defaults,user_xattr,acl,barrier=1        0       2 
UUID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX none            swap    sw              0       0
  • On met à jour son système et on installe les paquets nécessaires :
apt-get update && apt-get upgrade
apt-get install ca-certificates build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls28-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr acl docbook-xsl libcups2-dev libpam0g-dev ntpdate ntp -y

Purge des précédentes installations

  • Attention, désinstallé aussi tous les serveur DNS comme unbound/dnsmasq!
apt-get remove krb5-config smbldap-tools libcrypt-smbhash-perl libnss3 \
libnss-mdns libnss-ldapd  libnss-ldap samba-libs samba-common samba-doc \
samba-libs:amd64 ldb-tools samba --purge --auto-remove

rm /usr/include/samba-4.0/ -R
rm /usr/lib/samba -R
rm /etc/samba/smb.conf
rm /usr/lib/python2.7/dist-packages/samba -R
rm /var/lib/samba/ -R

Compilation/Installation de samba 4:

cd /usr/src
wget http://ftp.samba.org/pub/samba/samba-latest.tar.gz
tar xvf samba-latest.tar.gz
  • A l’heure où j’écris, nous sommes à la version 4.5.5.
cd samba-4.5.5
./configure --enable-debug --enable-selftest --prefix=/usr --enable-fhs \
--sysconfdir=/etc \
--localstatedir=/var \
--with-lockdir=/var/run/samba \
--with-statedir=/var/lib/samba \
--with-cachedir=/var/cache/samba
make
make install

Création de l’AD

samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2

Vérifier que la ligne ci-dessous, dans le fichier smb.conf, pointe bien sur le serveur DNS habituel de votre réseau.

dns forwarder = 8.8.8.8

Il est possible d’ajouter un répertoire de partage dans le fichier smb.conf, par exemple :

echo "[home$]" >> /etc/samba/smb.conf
echo -e "\tpath = /home/%U" >> /etc/samba/smb.conf
echo -e "\tread only = No" >> /etc/samba/smb.conf

Le signe $ indique que le partage est caché.

On lance le service.

samba

On vérifie que samba écoute bien sur le port 53.

 netstat -aneptu |grep ":53 "
 tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      0          60722       16374/samba
 tcp6       0      0 :::53                   :::*                    LISTEN      0          60720       16374/samba
 udp        0      0 0.0.0.0:53              0.0.0.0:*                           0          60723       16374/samba
 udp6       0      0 :::53                   :::*                                0          60721       16374/samba

Test du DNS :

cat "nameserver 127.0.0.1" > /etc/resolv.conf
dhost -t SRV _ldap._tcp.dom.jbsky.fr
host -t SRV _kerberos._udp.dom.jbsky.fr 
host -t A dc1.dom.jbsky.fr

ajout de la zone de recherche inversé, évite une erreur 41 avec nslookup.

samba-tool dns zonecreate dc1 10.168.192.in-addr.arpa --username=administrator

Si tout est ok jusqu’ici et que les pares feux correctement ouvert, on peux maintenant joindre un Client au domaine.

/!\

*Suite a un duplication de profil (à force de test), j’ai du nettoyer dans le registre de la machine cliente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-XXXXXXXX-XXXXXXXXX-XXXXXXX-XXXX

Mappage des Groupes

Scénario deluge

Deluge est un serveur de téléchargement de torrent.

Prérequis

  • J’ai ajouté dans le fichier smb.conf le partage deluge.
  • Enfin, j’ai un user/group Unix du nom de deluge qui possède les droits sur le répertoire. L’idéal est que l’uid correspond bien au gid sur les futurs répertoires partagé..
  • Créer un groupe deluge et un utilisateur appartenant au groupe deluge avec les outils RSAT.

Configuration

  • La base de donnée de mappage idmap.ldb se situe dans le répertoire /var/lib/samba/private/.
  • Elle est accessible par la commande ci-dessous:

 

ldbedit -e nano -H /var/lib/samba/private/idmap.ldb
  • La commande qui nous intéresse pour trouver les SID correspondant aux groupes et utilisateurs du domaine et wbinfo.
wbinfo --help
-n, --name-to-sid=NAME                             Converts name to sid
-u, --domain-users                                 Lists all domain users
-g, --domain-groups                                Lists all domain groups
-s, --sid-to-name=SID                              Converts sid to name
-S, --sid-to-uid=SID                               Converts sid to uid
-Y, --sid-to-gid=SID
  • La procédure est un peu lourde dans le sens où il faut d’abord obtenir le SID (option -n) grâce au nom soit du groupe (option -g) soit de l’utilisateur (option -u). * Ensuite, voir la correspondance (option -Y) et la créer si elle n’existe pas.
  • Enfin, il est possible de changer le numéro xid dans la base de donnée de mappage.
  • En dernier lieu, vérifier si le numéro correspond enfin au numéro unix.
wbinfo -g
DOM\deluge
  • Pour obtenir le numéro SID :
wbinfo -n "DOM\deluge"
# S-1-5-21-466102154-213423172-5412416656-1108 SID_DOM_GROUP (2)
wbinfo -Y S-1-5-21-466102154-213423172-5412416656-1108
# 3000012
ldbedit -e nano -H /var/lib/samba/private/idmap.ldb objectsid=S-1-5-21-466102154-213423172-5412416656-1108
# 0 adds  1 modifies  0 deletes

forcer la mise à jour du mappage

  • il faut nettoyer le cache.
net cache flush #Permet de mettre à jour le mapage
wbinfo -Y S-1-5-21-466102154-213423172-5412416656-1108
# 129

Personnellement, j’ai créée une fonction adedit dans /usr/local/sbin

#!/bin/bash
if [[ "$1" == "" ]] then
       ldbedit -e nano -H /var/lib/samba/private/idmap.ldb
else
       ldbedit -e nano -H /var/lib/samba/private/idmap.ldb objectsid=`wbinfo -n "$1" | cut -d" " -f1`;
fi

Dans mon cas, je souhaite que seulement le groupe DOM/deluge ait les droit rxw sur le repertoire /home/deluge

setfacl -b -R /home/deluge/ #nettoyage des ACL
setfacl -m g:deluge:rwx -R /home/deluge/ 
getfacl  /home/deluge
# file: home/deluge/
# owner: deluge
# group: deluge
user::rwx
group::rwx
group:deluge:rwx
mask::rwx
other::r-x
  • Quand ça ne mappe pas correctement, vérifier la base de donné pour voir s’il n’y a pas des doublons au niveau des SID ou des xid.
ldbedit -e nano -H /var/lib/samba/private/idmap.ldb

=> Cette commande affiche le fichier de base de donnée de mappage.

  • Avoir la liste complète des users/groupes
getent group
getent passwd

boot

  • Téléchargement
wget https://raw.githubusercontent.com/jbsky/jbsky/master/debian/rootfs/etc/init.d/samba
  • Rendre le script exécutable
chmod 755 /etc/init.d/samba
  • Activation du script au démarrage de la machine.
update-rc.d samba defaults

Changer le mot de passe

samba-tool user Julien –noexpiry
samba-tool user setpassword Julien

source

https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller
https://wiki.samba.org/index.php/Active_Directory_Naming_FAQ
Pour la compilation, je m’appuie essentiellement sur cet article.
http://www.bidouilleit.com/2014/02/06/installation-configuration-et-administration-samba-4-ad/