Bonjour à tous !

Cet article fait suite au tuto http://www.bidouilleit.com/2014/02/06/installation-configuration-et-administration-samba-4-ad/

L’une des premières commandes importantes est celle qui va nous permettre de savoir si Samba est bien démarré ou pas. La voici :

ps axf | egrep "samba|smbd|nmbd|winbindd"

Voici le résultat recherché si samba est démarré :

samba4_processus

I] Qu’est qu’un Active Directory ?

– Comprendre l’Active Directory

Avant de commencer les installations et le paramétrage je tiens à expliquer le fonctionnement de Kerberos qui est très important pour le bon fonctionnement d’un domaine Active Directory.

L’Active Directory consiste en une intégration particulièrement poussée d’un certain nombre de protocoles plus ou moins standardisés dans le but de fournir des services d’authentification, de configuration et d’administration (déploiement de logiciels et de configuration) centralisés.

Chaque serveur hébergeant l’Active Directory ou une partition de celui-ci est appelé un contrôleur de domaine ou DC.

Le nom de domaine DNS est par défaut utilisé pour le nommage du domaine Active Directory. Par exemple, si votre domaine DNS interne est bidouilleit.local, alors l’arborescence LDAP de l’Active Directory sera DC=bidouilleit,DC=local.

L’ensemble des domaines et sous-domaines regroupés au sein d’une même forêt partagent le même schéma Active Directory (et donc LDAP), ainsi que des relations d’approbation entre les domaines. La fonctionnalité « Catalogue Global » au sein d’un contrôleur de domaine permet à celui-ci de contenir une vue partielle des objets des autres domaines, afin de permettre la recherche d’objets situés dans d’autres domaines plus rapidement sans nécessiter une réplication complète du contenu des différents domaines.

Cependant, afin d’assurer l’unicité de certaines informations au sein du domaine ou de la forêt, certaines fonctionnalités sont uniques :

De par son fonctionnement, Active Directory utilise une réplication de type MultiMaster avec l’ensemble des contrôleurs de domaine. Toutefois, certaines opérations spécifiques ne peuvent s’effectuer via cette méthode. Et c’est pour cette raison que la notion de « Maître d’opération » constituée de 5 rôles a été introduite. Ces rôles, également appelés «Rôles FSMO » (Flexible Single Master Operations) peuvent être attribués sur plusieurs contrôleurs de domaines. Il convient toutefois d’en distinguer deux types :

  • Ceux situés à la racine de chaque forêt :
    • Maître de schéma
    • Maître d’attribution de noms de domaines
  • Ceux situés à la racine de chaque domaine :
    • Maître d’infrastructure
    • Maître des ID relatifs (RID)
    • Emulateur du contrôleur principal de domaine (PDC)

En résumé, on retrouvera ces 5 rôles sur le premier DC racine de la forêt, et les 3 autres rôles à la racine de chaque domaine enfant.

Comme vous avez compris, les rôles les plus importants de la forêt sont situés sur le premier contrôleur de domaine où on a lancé la création de la forêt. Nous verrons plus loin comment les transférer sur un autre serveur. Vous pouvez déjà regarder les informations sur les rôles FSMO de votre domaine en tapant la commande suivante :

root@srv-dc1:~# /usr/local/samba/bin/samba-tool fsmo show

InfrastructureMasterRole owner: CN=NTDS Settings,CN=SRV-DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=local

RidAllocationMasterRole owner: CN=NTDS Settings,CN=SRV-DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=local

PdcEmulationMasterRole owner: CN=NTDS Settings,CN=SRV-DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=local

DomainNamingMasterRole owner: CN=NTDS Settings,CN=SRV-DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=local

SchemaMasterRole owner: CN=NTDS Settings,CN=SRV-DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=local
samba-tool fsmo show

– Comprendre le fonctionnement de Kerberos

Maintenir la sécurité et l’intégrité du système au sein d’un réseau est essentiel, et il englobe tous les utilisateurs, application, service, et le serveur dans l’infrastructure du réseau.

Kerberos fournit un mécanisme qui permet aux utilisateurs et aux machines de se mettre en réseau, de les identifier et définir l’accès limité aux zones et aux services que l’administrateur a configuré. Kerberos authentifie des entités(les clients) en vérifiant leur identité, et Kerberos s’assure également que ces données d’authentification ne puissent être consultées et utilisées ou modifiées par un étranger(un hacker).

Pour mieux expliquer le fonctionnement Kerberos j’ai mis en ligne une petite animation : https://www.youtube.com/watch?v=zRPPbGrSZqo

  1. L’utilisateur ouvre sa session dans le domaine en s’authentifiant avec son mot de passe Active Directory.
  2. Le poste de travail récupère alors auprès du contrôleur de domaine un ticket dit TGT (Ticket Granting Ticket).
  3. Lorsque l’utilisateur veut accéder à un service qui requiert une authentification Kerberos, le poste client demande au contrôleur de domaine de lui fournir un ST (Service Ticket) pour le service précisé. Le ST est chiffré, et seul le service possède la clé de déchiffrement.
  4. Le contrôleur de domaine remet au poste client un Service Ticket, valable uniquement pour le service spécifié.
  5. Le poste client peut alors s’authentifier auprès du service, sans demander son mot de passe à l’utilisateur.

Pour identifier le service demandé et générer le Service Ticket adéquat, le contrôleur de domaine identifie les services par leur Service Principal Name (SPN).

II] Administration de Samba 4 AD

– Exploitation des logs

Il est très important d’avoir des logs qui donnent des infos pertinantes avec du détail. Par défaut samba est reglé sur un niveau de détail de 0.

Parfois, le fichier journal n’aura pas l’information dont vous avez besoin, vous devez donc augmenter le niveau des logs en ajoutant la ligne suivante à la section [global] de votre smb.conf (/usr/local/samba/etc/smb.conf):

log level = 3

– Problème d’entrée DNS lors de la mise au domaine

Je partage avec vous un problème que j’ai eu récemment. Il s’agit d’un bug referencé d’ailleurs sur le wiki de samba : https://wiki.samba.org/index.php/Fix_DNS_dynamic_updates_in_Samba_versions_prior_4.0.7

Cependant je n’ai pas eu à faire les manips samba-tool comme proposé par samba. Un simple ipconfig /registerdns sur le poste client a suffit pour résoudre le problème.

Ce problème concerne les postes Windows XP et 7.

– Sauvegarde

Un des points très importants est la sauvegarde. Alors, comment sauvegarder notre domaine via samba4 ?

Dans les sources que vous avez téléchargé afin de pouvoir compiler et installer, il y a des scripts très utiles. Des scripts que vous devriez les mettre de coté car ils peuvent être très utiles.

Allez dans le dossier où vous avez téléchargé et décompressé samba4 puis dans /samba-X.X.X/source4/scripting/bin. Moi je l’ai fait dans /Download et je suis en version 4.2.1 , je fais donc :

cd /Download/samba-4.2.1/source4/scripting/bin

Dans ce dossier, vous avez un script nommé ‘samba_backup’. Copiez le dans le dossier /usr/sbin par exemple.

cp /Download/samba-4.2.1/source4/scripting/bin/samba_backup /usr/sbin

modifiez les droits pour que seul root puisse l’exécuter :

chown root:root /usr/sbin/samba_backup
chmod 750 /usr/sbin/samba_backup

Si vous éditez votre fichier, vous verrez à l’intérieur dans les premières lignes, les lignes suivantes :

FROMWHERE=/usr/local/samba
WHERE=/usr/local/backups
DAYS=90

Ceux sont des variables. La variable FROMWHERE sert à définir l’emplacement où a été installé samba  (laissez par défaut sauf si vous n’avez pas fait une installation « standard »).

La variable WHERE, défini l’endroit où vous désirez sauvegarder votre AD. Vous pouvez modifez cette variable sans problème.

Quand à la variable DAYS, il s’agit de la rétention définie en jours pour votre sauvegarde.

Si non, vous pouvez lancer le script avec des arguments qui iront remplacer les valeurs par défaut du script :

/usr/sbin/samba_backup FROMWHERE WHERE DAYS

Attention ! Si vous avez laissé par défaut, il faut créer le répertoire pour la sauvegarde qui n’existe pas par défaut. Pour cela :

mkdir /usr/local/backups
chmod 750 /usr/local/backups

Pour lancer la sauvegarde, il suffit de taper :

/usr/sbin/samba_backup

Vous pouvez verifier si les fichiers ont bien été créés en allant dans le dossier de backup :

samba4_2

Il ne vous reste plus qu’à mettre cela dans la crontab pour que ce soit executé tous les jours par exemple !

– Restauration

Nous venons de voir comment sauvegarder. Maintenant regardons comment restaurer !

/!\ Attention ! Voici les recommandations de l’équipe de samba 4 :

– Ne faire qu’une restauration et qu’un changement de version à la fois! Toujours restaurer sur un système qui utilise la même version de Samba que celui où vous avez créé la sauvegarde!
– Restaurez sur un système avec la même adresse IP et le même nom d’hôte. Sinon, vous allez rencontrer des problèmes Kerberos et DNS.
– Recommandé: Faitez la restauration sur le même système d’exploitation que celui où vous avez créé la sauvegarde.
La chose la plus importante dans une situation de restauration est de mettre votre système à un état de fonctionnement. Faites des changements plus tard, si tout est en place et testé. Jamais avec une restauration!
Supprimez les dossiers, que nous allons restaurer (samba ne doit pas être en cours d’exécution) :
rm -rf /usr/local/samba/etc
rm -rf /usr/local/samba/private
rm -rf /usr/local/samba/var/locks/sysvol
Décompressez vos sauvegardes à leur emplacement :
# cd /usr/local/backups
tar -jxf etc.2015-05-07.tar.bz2 -C /usr/local/samba/
tar -jxf samba4_private.2015-05-07.tar.bz2 -C /usr/local/samba/
tar -jxf sysvol.2015-05-07.tar.bz2 -C /usr/local/samba/
Renommez tous les fichiers *.ldb.bak en *.ldb :
find /usr/local/samba/private/ -type f -name '*.ldb.bak' -print0 | while read -d $'\0' f ; do mv "$f" "${f%.bak}" ; done
Voilà ! Toute fois d’autres options existent si par exemple vous n’aviez pas activé les ACL étendus ou que vous n’utilisez pas le DNS intégré mais plutôt Bind. Je vous laisse découvrir tout ça sur le Wiki de Samba4.

– Configuration du pare-feu

Si vous désirez configurer le pare-feu sur votre serveur Samba4, sachez que la liste des ports utilisés par Samba est disponible sur leur wiki. La voici :
Service Port protocol
DNS* 53 tcp/udp
Kerberos 88 tcp/udp
End Point Mapper (DCE/RPC Locator Service) 135 tcp
NetBIOS Name Service 137 udp
NetBIOS Datagram 138 udp
NetBIOS Session 139 tcp
LDAP 389 tcp/udp
SMB over TCP 445 tcp
Kerberos kpasswd 464 tcp/udp
LDAPS (only if « tls enabled = yes ») 636 tcp
Dynamic RPC Ports** 1024-5000 tcp
Global Cataloge 3268 tcp
Global Cataloge SSL (only if « tls enabled = yes ») 3269 tcp
Multicast DNS 5353 tcp/udp
Si vous avez plusieurs interfaces sur votre serveur et que vous voulez que Samba n’écoute que sur une seule, vous pouvez le faire dans le fichier smb.conf, dans la section [Global] :

 

bind interfaces only = yes
interfaces = lo eth0

N’oubliez pas de redémarrez samba après cette modification.

– Ajout d’un serveur au domaine

Pour intégrer un serveur au domaine, il faut d’abord installer et compiler Samba4 comme dans mon tuto précédent jusqu’à l’étape « II] Configuration ». Cependant vous ne devez pas exécuter la commande « samba-tool domain provision »

Il peut être intéressant de le faire si vous voulez mettre en place un serveur de fichier sous samba.

root@srv-dc1:~# samba-tool domain join bidouilleit.local member -U administrator --realm=bidouilleit.local

Password for [BIDOUILLEIT\administrator]:

Joined domain DOMAIN (S-1-5-21-2813939429-2675192644-3843174914)

Si jamais, vous désirez faire évoluer ce serveur en tant que contrôleur de domaine vous pouvez via la commande suivante :

samba-tool domain dcpromo bidouilleit.local DC -U administrator

— Connexions ssh

Le fait que plusieurs serveurs puissent appartenir à un domaine Samba4 AD apporte un confort d’utilisation pour le service ssh. L’accès se fait grâce à l’authentification domaine.

Pour utiliser ssh avec samba 4, vous devez aussi bien configurer le client ssh que le serveur ssh.

/!\ Rappel ! Dans le cas du ssh le « serveur » est la machine sur laquelle vous allez vous connecter (machine cible). Le « client » est le système qui va lancer la connexion ssh.

  • Modification côté serveur ssh :

Modifiez les lignes suivantes dans le fichier /etc/ssh/sshd_config :

# Kerberos options
KerberosAuthentication yes
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes

#GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

UsePAM yes
  • Côte client :

Modifiez les lignes suivantes dans /etc/ssh/ssh_config :

host *.bidouilleit.local
GSSAPIAuthentication yes
GSSAPIDelegateCredential yes

Remplacez « bidouilleit.local » par le nom de votre domaine.

  • Modification de Putty (si vous l’utilisez sous Windows) :

putty

 

Il existe tellement d’autres aspects à voir sur Samba 4… mais je vais m’arreter là pour cette fois. Cela fait un moment que je dois sortir cet article et je n’ai jamais vraiment le temps de m’y consacrer. Je préfère donc publier un tuto « Light » mais le publier tout de même. J’espère que vous ne serez pas deçus et je vous invite vraiment à consulter le Wiki de Samba4 qui est régulièrement alimenté avec de nouvelles informations !

N’hésitez pas à partager votre avis et commenter cet article !

_____________________

A bientôt sur bidouilleit.com !

– Bruno Sousa –