Outils pour utilisateurs

Outils du site


samba_domcontroller

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

samba_domcontroller [2014/12/21 19:42] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Préambule ======
  
 +Il est possible de spécifier à Samba de jouer le rôle d'un contrôleur de domaine primaire.
 +
 +L'​intérêt majeur est d'​assurer une authentification centralisée et sécurisée des utilisateurs.\\
 +\\
 +L'​organisation en domaine permet également la gestion centralisée des scripts d'​ouverture de session et des profils utilisateurs.\\
 +L'​objectif est de renforcer la possibilité de connexion depuis un poste de travail quelconque, c'est à dire, un utilisateur peut retrouver son environnement de travail sur n'​importe quel ordinateurs relié au contrôleur de domaine.
 +
 +**__Note__** :
 +
 +//En revanche, Samba ne peut pas '​encore'​ jouer le rôle d'un contrôleur de domaine en environnement ​ purement Active Directory.\\
 +
 +Samba, ne propose donc pas de gestion d'​annuaire,​ de gpo etc...il faut se tourner vers openldap pour le moment ou attendre la version 4 de Samba qui le proposera.//​
 +
 +
 +
 +
 +
 +====== A. Adaptation du smb.conf ======
 +
 +__Il y a 6 directives à ajouter au fichier de configuration dans la section__ **[global]**
 +
 +  * Wins support
 +  * domain master
 +  * local master
 +  * preferred master
 +  * os level
 +  * domain logons
 +
 +
 +**__Wins support__**
 +
 +On définit notre serveur samba en tant que serveur Wins.\\
 +Par défaut sur les stations XP, 2000, 2003 la résolution de noms se fait d'​abord par une résolution DNS et si il n'y a pas de réponses, il y a basculement sur une résolution des noms NetBios.\\
 +\\
 +En revanche sur des machines clientes 95,98,Me et serveur NT4, il y a d'​abord une résolution NetBios puis résolution DNS.\\
 +\\
 +Un serveur Wins est déclaré afin d'​éviter un  engorgement du réseau à cause des requêtes de diffusion (broadcast).
 +
 +**__Fonctionnement du serveur Wins__**
 +
 +Un client utilise le serveur WINS pour faire enregistrer son propre nom et adresse ip.\\
 +Cet enregistrement est renouvelé périodiquement. Quand le pc s'​arrête normalement,​ le client informe le serveur WINS et peut libérer le nom NetBIOS.
 +
 +Le fichier "​**__LMHOST__**"​ peut-être utilisé si il n'y a pas de serveurs WINS sur le réseau.\\
 +Cela évite le recours aux requêtes de diffusion.
 +
 +Le fichier "​**__host__**"​ est la même chose mais concernant le DNS.
 +
 +**__domain logons__**
 +
 +Acceptation des connexions de type domaine
 +
 +**
 +__domain master__** ​
 +
 +Spécifie que le serveur SAMBA doit jouer le rôle de contrôleur de domaine.
 +
 +
 +**__Note__** :
 +__
 +Si Samba doit jouer le rôle de DC alors il faudra ajouter 2 nouvelles directives__ :
 +
 +  * Local Master
 +
 +//​Participation à l'​élection du Maître explorateur.//​
 +
 +  * os level 
 +
 +//Valeur des élections du voisinage réseau//
 +**
 +__Preferred master__** ​
 +
 +Provoquer une élection du "​**local master browser**"​.
 +**
 +__Explications__** :
 +
 +Dans un groupe de travail, un ordinateur est désigné pour maintenir une liste actualisée des systèmes accessibles.
 +
 +Cet ordinateur est baptisé « **__local master browser__** ».  Cela évite que chaque clients du réseau émettent des requêtes de diffusion.
 +
 +Au démarrage de Samba, l'​option "​**preferred master**"​ provoque une élection.
 +La valeur de l'"​**os level**"​ lui permet de battre le systèmes windows.
 +
 +**__Comment est défini l'os level__** ?
 +
 +  * Windows Xp = 64
 +  * Windows NT/​2000/​2003 jouant le rôle d'un PDC = 32
 +  * Windows NT/​2000/​2003 ne jouant pas ce rôle = 16
 +  * Windows 95/98/Me = 1
 +
 +Pour être sur que votre serveur remporte l'​élection,​ un "**os level**"​ de  255 est idéal.
 +Néanmoins, si vous avez d'​autres serveurs Samba dans votre réseau, la même configuration provoquerait des conflits dans l'​élection du "​**local master browser**"​.
 +
 +Il faut pour cela diminuer la valeur "**os level**"​ et désactiver l'​option "​**preferred master**"​.
 +
 +**__Votre fichier smb devrait ​ ressembler à ça__** :
 +
 +<​code>​[global]
 +        workgroup = Kameleon
 +        netbios name = srvsamba
 +        server string = Serveur Samba
 +        security = user
 +        wins support = yes
 +        domain master = yes
 +        local master = yes
 +        preferred master = yes
 +        os level = 255
 +        domain logons = yes</​code>​
 +
 +**__Pourquoi security = user__** ?
 +
 +L' authentification des utilisateurs se fait sur le serveur samba.
 +Une « **security = domain** » correspond à une authentification gérée par d' autres serveurs.
 +
 +**//A partir de cette étape, il va falloir vérifier que la résolution de nom se fasse.\\
 +C'est une étape obligatoire,​ si cela ne fonctionne pas, il n'est pas nécessaire d'​aller plus loin.//**\\
 +\\
 +**__Pour tester la résolution de nom__** :
 +
 +<​code>​nbtstat -a nomnetbios du serveur samba</​code>​
 +
 +Si la résolution ne se fait pas, __alors vérifier les points suivants__ :
 +
 +  * Les demons smbd et nmbd sont ils redémarrés ?
 +  * Avez-vous ajouté l'​adresse du serveur Wins dans vos paramètres TCP/IP ?
 +  * Avez-vous fait un "​testparm"​ afin de vérifier la conformité de votre fichier smb ?
 +  * Etes-vous dans même "​groupe de travail"​ ?
 +
 +
 +
 +**__Note__** :
 +
 +A réaliser à partir d'une machine Windows
 +
 +
 +
 +====== B. Intégrer sa machine client au domaine ======
 +
 +**__Sur votre Windows__** :
 +
 +
 +  * Proprité sur "Poste de Travail",​
 +  * Nom de l'​ordinateur,​
 +  * Mofier > Domaine
 +  * Entrer le nom netbios du serveur
 +
 +Si tout se passe bien, une fenêtre d'​authentification devrait apparaître.
 +
 +  * Saissir le login et le mot de passe de l'​administrateur du serveur (root + pass).
 +
 +A cet étape l'​authentification échoue et c'est normal.
 +
 +Dans le monde Windows, une machine est globalement gérée comme un utilisateur et dispose d'un compte dans un domaine.
 +
 +Une machine dont le nom netbios est « **machine** » dispose dans le domaine un compte « **machine$** ».
 +
 +Il existe 2 méthodes pour intégrer la machine au domaine.
 +
 +__**Soit**__ :
 +
 +  * Manuellement
 +  * via une option dans le smb.
 +
 +
 +
 +
 +
 +
 +
 +
 +===== 1er méthode =====
 + 
 +
 +**__Procédures__** :
 +
 +  - Afin de mieux comprendre le fonctionnement nous allons nous même ajouter une machine cliente (windows xp ici) dans le fichier « **/​etc/​passwd** » et dans la base SAM du serveur Samba.
 +
 +
 +<​code>​
 +useradd machine$
 +smbpasswd -a -m machine</​code>​
 +
 +"​**-m**"​ specifie que l'​utilisateur ajouté (-a) est un nom de machine existant (-m)
 +
 +**__Note__** :
 +
 +//​Interrogez la base SAM avec "​**pdbedit -L**" afin de vérifier l'​inscription du pc.//
 +
 +  - __Il faut modifier votre fichier de configuration « smb » et y ajouter la section suivante__ :
 +
 +<​code>​
 +[netlogon] (répertoire a créer, chmod 755)
 +path = /​home/​netlogon
 +writable = no
 +browsable = no
 +</​code>​
 +
 +**__netlogon__** ​
 +
 +Cette section est obligatoire pour permettre les connexions de type domaine.
 +
 +Ce partage n'a pas besoin d'​apparaitre dans le voisinage réseau et il n'est pas nécessaire d'en activer le partage (writable).
 +
 +  * Créer le répertoire **[netlogon]**\\
 +  * Créer le répertoire qui contiendra le profil de l'​utilisateur qui doit se connecter au domaine.\\
 +  * Modifer les droits « **chown** » par « **propriétaire=utilisateur;​ groupe = root** »\\
 +  * Modifier les droits « **chmod** » en « **770** » (suggestion).\\
 +
 +**__Note__** :
 +
 +Dans ce cas, seul « **l'​utilisateur** » et le groupe « **root** » ont un « **accès total** » sur le répertoire. \\
 +Les autres groupes ne peuvent pas en consulter le contenu.
 +
 +Si le répertoire n'est pas crée, l'​utilisateur se connectera au domaine mais ses fichiers ne seront pas envoyés au DC.
 +Pour tout problèmes aidez vous du « **log.smbd** » qui est très bavard
 +
 +  * Créer l'​utilisateur « **root** » dans la base SAM de samba. Pour des questions de sécurité, il serait judicieux de mettre un mot de passe différent qui celui utilisé sur le système par « **root** »
 +
 +  * Rejoindre le domaine avec « **root + mp** » 
 +  * Se connecter au domaine avec le « **login** » d'un utilisateur présent dans la base SAM.
 +  * Si il n'y a pas de messages d'​erreurs,​ fermez votre session et vérifiez que l'​envoi du profil de l'​utilisateur à bien été effectué. Vous devriez obtenir quelque chose de semblable.
 +
 +{{manuel:​profil.jpg|}}
 +
 +
 +===== 2ème méthode =====
 +
 +Nous allons ajouter une option dans notre script pour que les machines distantes s'​inscrivent automatiquement lors de l'​inscription au domaine.
 +Cela concerne également la création automatique des répertoires contenant le profil des utilisateurs.
 +
 +Pour cela nous allons éditer notre fichier « **smb** » et ajouter dans la section **[global]** cette option.
 +
 +
 +<​code>​
 +add machine script = /​usr/​sbin/​useradd -d /​var/​lib/​nobody -M -g 100 -s /bin/false %u</​code>​
 +
 +**__Explications__** :
 +
 +Le compte ne sera pas utilisé en tant que compte interactif mais uniquement pour les besoins internes de Samba. ​
 +Il est donc inutile de prévoir un répertoire de connexion (-d /​var/​lib/​nobody -M) et judicieux de lui associer un shell invalide (-s /​bin/​false).
 +
 +La variable "​**%u**"​contiendra le nom Netbios de l'​ordinateur client.
 +La ligne adéquate sera ajoutée dans "​**/​etc/​passwd**"​
 +
 +Il vous est possible à partir de ce moment d'​intégrer une machine windows dans votre domaine sans en ajouter son nom dans le fichier « **passwd** » (useradd) et dans la « **base SAM** » (smbpasswd) de votre serveur.
 +
 +Après enregistrement du pc dans le domaine, vérifier dans « **pdbedit-L** » que son nom Netbios apparaît.
 +
 +
 +
 +
 +====== C. Les profils errants ======
 +
 +Il faut ajouter une nouvelle option dans **[global]** et ajouter la section **[profiles]** à notre fichier de conf.
 +
 +
 +<​code>​
 +[global]
 +logon path = \\%L\profiles\%U
 +#time server = yes
 +</​code>​
 +
 +<​code>​
 +[profiles]
 +path = /​home/​profiles
 +browsable = no
 +writable = yes
 +create mask = 0600
 +directory mask = 0700
 +</​code>​
 +
 +**__Explications__** :
 +
 +  * **logon path**
 + 
 +
 +On spécifie l'​emplacement des profils itinérants (en anglais roaming profiles)\\
 +
 +**%L** > reprend le nom Netbios du serveur Samba\\
 +**profiles** > le dossier de partage à créer avec un chmod 777\\
 +**%U** >​Identité souhaité par l'​utilisateur du partage\\
 +
 +  * **time server**
 +
 +
 +Avec cette option, le serveur jouera également "​**serveur de temps**"​. ​
 +Il permet de synchroniser l'​heure des machines clientes avec celle du serveur.
 +
 +L'​option est désactivée puisqu'​ elle nécessite d'​ajouter une option dans les scripts de démarrage que nous verrons par la suite.
 +
 +  * **Create Mask**
 +
 +
 +Adopte la notation octale des droits UNIX.
 +Le propriétaire des nouveaux fichiers aura les droits « **rw-** ».
 +
 +  * **Directory Mask**
 +
 +
 +Le propriétaire des nouveaux répertoires aura les droits « **rwx** ».
 +
 +
 +
 +====== D. Définir un groupe Unix en « membre de .... » sur le Domaine. ======
 +
 +Par défaut tous les utilisateurs crées sur votre distribution sont des « **Utilisateurs du domaine** ».
 +Il en est de même pour l'​utilisateur « **root** ».
 +
 +Pour passer le groupe "​**root**"​ en "​**Administrateur du domaine**"​ il va falloir entrer cette commande dans votre shell.
 +
 +<​code>​
 +net groupmap add rid=512 ntgroup="​Domain Admins"​ unixgroup=root
 +</​code>​
 +
 +__Pour vérifier quels sont les groupes Unix mappés avec les groupes du Domaine, il faut utiliser la commande__:
 +
 +<​code>​
 +net groupmap list
 +</​code>​
 +
 +__Vous devriez obtenir un résultat de ce type__ :
 +
 +<​code>​Domain Admins (S-1-5-21-2547222302-1596225915-2414751004-512) -> domadmin</​code>​
 +
 +
 +
 +====== E. Scripts de démarrage ======
 +
 +Il est possible d'​ajouter un script de démarrage, il faut pour cela ajouter l'​option "​**logon script**"​ dans **[global]**. La section [netlogon] contiendra nos différents scripts.
 +
 +<​code>​
 +[global]
 +logon script = logon.bat
 +</​code>​
 +
 +Ce partage n'a pas besoin d'​apparaitre dans le voisinage réseau et il ne nécessite pas le droit d'​écriture.
 +
 +**__Note__** :
 +
 +//A la création du script, veillez bien à le faire sur une machine windows.
 +En effet, sous Unix les saut de lignes saut définies par \n alors que sous Windows il s'agit de \r \n
 +\\
 +Il vous suffira d'​envoyer votre script sur un de vos partages samba.//
 +
 +**__Exemple de script__** :
 +
 +<​code>​net use z: \\ipserveur ou nomnetbios\votre dossier de partage
 +net time \\serveur /​set/​y</​code>​
 +
 +**__Erreurs possibles__** :
 +
 +Si votre script ne se lance pas, vérifiez le chmod de votre fichier. Les utilisateurs peuvent ils l'​exécuter. ​
 +
 +  * **chmod -r** permet d'​attribuer les permissions de manière récursive.
 +
 +  * Seul l' utilisateur défini en tant qu' « **Administrateur** » peut l'​éxecuter. Cela est normal. ​
 +Les utilisateurs n'ont pas le droit de modifier l'​heure et la date.
 +
 +
 +
 +
 +
 +Dans global il est possible d'​ajouter l'​option
 +
 +<​code>​logon drive = lettre lecteur réseau</​code>​
samba_domcontroller.txt · Dernière modification: 2014/12/21 19:42 (modification externe)