Dans le groupe Informatique et télématique IT3 de la Faculté ENAC (Environnement naturel, architectural et construit) nous nous sommes fixés comme objectif la création d'un domaine avec des clients Windows (2000 et XP), Mac OSX et un contrôleur de domaine Samba sur Linux, sans utiliser un Windows 2000 serveur.
Comme je l'avais déjà écrit dans mon article Partage de ressources dans un environnement Mac, PC et Unix-Linux paru dans le FI1/2002, http://ditwww.epfl.ch/SIC/SA/SA/publications/FI02/fi-1-2/1-2-page1.html) Samba nous permet non seulement de partager des ressources (dossiers et imprimantes) mais peut aussi jouer le rôle de PDC (Contrôleur Principal de Domaine) et ainsi authentifier des postes clients Windows9x, NT, 2000 et XP. Samba peut aussi faire partie d'un domaine (Windows2k) comme serveur membre ou comme serveur Stand Alone dans un WorkGroup selon la configuration choisie.
A l'époque, nous avions fait les essais avec des clients Windows NT et des comptes utilisateurs créés directement dans le système sur un Macintosh en système 10.01 basé sur un file system Unix BSD.
Plus récemment, nous avons refait l'expérience d'utiliser Samba comme PDC en nous passant de la fastidieuse opération de création de comptes (surtout si le nombre dépasse la centaine) et en laissant les utilisateurs s'authentifier directement sur le serveur ldap de L'EPFL.
Notre objectif était de permettre aux utilisateurs d'avoir un profil itinérant, d'avoir accès aux imprimantes et à des dossiers partagés, un partage DFS (Microsoft Distributed File) et une redirection du dossier My Documents pour les clients Windows.
Le but de cette expérience et de cet article n'est pas d'aller contre des stratégies déjà mises en place, mais de démontrer encore une fois que d'autres solutions sont possibles et qu'elles sont quelquefois mieux adaptées à des environnements de travail qui ne se prêtent pas à une gestion trop centralisée des ressources informatiques.
La partie la plus importante de la configuration passe par l'édition (en mode texte ou via script) des fichiers smb.conf pour Samba et des ldap.conf, system-authority et nsswitch.conf pour l'authentification. Voici les points importants pour que Samba devienne PDC:
[global] workgroup = nom du domaine netbios name =nom du serveur domain master =yes domain logons = yes local master = yes preferred master = yes os level = 66 encrypted passwords = yes
pour permetre de recevoir les mots de passe encryptés de clients Windows (à partir de Windows 98)
security = user
les options sont user pour un contrôleur de domaine, domain pour un serveur membre et share pour un serveur en stand alone
host msdfs = yes
pour activer le support DFS
logon path = \\serveur\profile\%u
emplacement où les profils itinérants seront stockés (le %u a la même signification que le %USERNAME% Windows.
logon scripts = .bat, .kix ou .vbs
les logon scripts peuvent être des scripts .bat ou .kix et doivent entrer dans le dossier Çnet logonÈ. Ces scripts seront téléchargés par la machine cliente et exécutés en local.
net use H: \\dasipc2\transfertateliers net time \\serveur /set /yes
if @WKSTA="arpc003" or
@WKSTA="arpc004" or
@WKSTA="arpc005"
ADDPRINTERCONNECTION ("\\DASIPC16\AAD001XeroxNB")
ADDPRINTERCONNECTION ("\\DASIPC16\AAD001XeroxColor")
;Installer l'imprimante par default
SetDefaultPrinter ("\\DASIPC16\AAD001XeroxNB")
USE H:\\dasipc2\TransfertSAR
Endif
On peut forcer l'exécution d'un script pour un utilisateur (toto par exemple) spécifique avec l'option:
logon script = %U.bat
avec un script appelé Toto.bat par exemple
idem pour une machine:
logon script = %m.bat
avec un script appelé dasipc2.bat par exemple
adduser user script = /usr/sbin/useradd -d /dev/null -g computers -s /bin/false -M %u
cette commande est très importante, elle permet d'introduire à partir du client la machine cliente dans le domaine sans créer le compte au préalable dans le pdc (opération à effectuer évidemment par un utilisateur ayant les droits d'administateur dans le domaine).
include = /etc/samba/smb.conf.%m
cette ligne permet de charger un fichier smb.conf spécifique pour une machine, le %m sera remplacé par le netbios name de la machine.
preexec = echo %T: %u connected on %m >> /var/log/samba/users.log postexec = echo %T: %u disconnected from %m>> /var/log/samba/users.log
Les commandes preexec et postexec permettent d'exécuter un script shell sur le serveur lors d'une connexion (contrairement à logon, script qui est exécuté sur le client). On peut se servir de cette possibilité pour alimenter un fichier de log de connexion-déconnexion. On peut avoir une vison on-line de l'activité du serveur avec la commande:
[linux1 :~]root % tail -f /var/log/samba/users.log [netlogon] comment = dossier où seront stockés les logon scripts path = /export/samba/logon public = no writable = no browseable = no create mask = 0644 [profiles] comment = partage pour stocker le profil itinérant des utilisateurs path = /home/samba/profiles writable = yes browseable = no create mode = 0644 directory mode = 0755
Au premier logon le système crée un profil local de l'utilisateur sur le poste client, au logoff le profil est copié sur le partage désigné dans [profiles]. Pour éviter qu'un poste client utilisé par plusieurs utilisateurs ne soit vite rempli avec la copie locale du profil itinérant il faut ajouter dans la clé de la base du registre:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon mettre la valeur DeleteRomingCache à 1, ou alors utiliser une stratégie de sécurité qui le fasse.
Il faut évidement créer les dossiers avant, par exemple:
[linux1:~] root% mkdir -m 0775 /usr/local/samba/netlogon [linux1:~] root% chown root:admin /usr/local/samba/netlogon [linux1:~] root% mkdir /usr/local/samba/profiles [linux1:~] root% chmod 1757 /usr/local/samba/profiles [dfs] comment = Partage DFS (Distributed File System) path = /home/samba/dfs msdfs root = yes
Pour le partage DFS on doit commencer par créer le dossier à partager.
[linux1:~] root% mkdir /home/samba/dfs
[linux1:~] root% chown root:root /home/samba/dfs [linux1:~] root% chmod 755 /home/samba/dfs
Après on crée les liens vers les partages
linux1:~] root% cd /home/samba/dfs linux1:~] root% ln -s Ômsdfs:serveur1\nom de partage1' alias1 linux1:~] root% ln -s Ômsdfs:serveur2\nom de partage2' alias2 exemple: ln -s Ômsdfs:dasipc2\transfertAteliers' transfertAteliers
Avec ces quelques lignes votre serveur Samba est prêt à intégrer des clients Windows, à authentifier des utilisateurs et à leur proposer des partages. Les utilisateurs Mac OSX pourront sans problème accéder au partage du domaine et configurer leur propre serveur Samba intégré (comme serveur stand alone) et l'intégrer dans le domaine principal.
Par exemple dans le fichier smb.conf ( du Mac ):
[global] workgroup = nom du domaine principal netbios name = nom de Mac os level = 17 domain logons = no domain master = no (...) [BoiteAlait] comment = mon partage publique path = /Users/boitealait public = yes writable = yesLe Mac sera visible dans le domaine principal et les utilisateurs autorisés pourront accéder aux ressources partagées. A chacun de configurer le fichier smb.conf de façon à l'adapter à son environnement et à ses besoins spécifiques.
Le fichier ldap.conf <
host ldap.epfl.ch
adresse du serveur ldap
base o=epfl, c=ch
base de recherche
pam_filter &(gidNumber=xxx*) (objectClass=posixAccount)
le filtre où l'on doit mentionner le numéro du ou des groupes autorisés à se connecter. Par défaut tout le monde est autorisé à se connecter.
nss_base_passwd ou=SIC-II, ou=PL-IT, ou=PL, o=epfl, c=ch nss_base_shadow ou=SIC-II, ou=PL-IT, ou=PL, o=epfl, c=ch nss_base_group ou=SIC-II, ou=PL-IT, ou=PL, o=epfl, c=ch
emplacement dans la hiérarchie ldap où le système cherche les utilisateurs. On peut mettre toute la racine ou uniquement la branche qui nous intéresse; dans notre cas:
nss_base_passwd ou=ENAC, o=epfl, c=ch nss_base_shadow ou=ENAC, o=epfl, c=ch nss_base_group ou=ENAC, o=epfl, c=ch *= numero de groupe (gid)
Ce qu'il faut ajouter dans le fichier:
auth sufficient /lib/security/pam ldap.so use_first_pass password sufficient /lib /security/pam_ldap.so use_authtok session optional /lib/security/pam_ldap.so
Ce qu'il faut ajouter dans le fichier:
passwd: files ldap shadow: files ldap group : files ldap
les fichiers complets smb.conf, ldap.conf, system-auth et nsswitch.conf sont à disposition à l'adresse: http://enacit3.epfl.ch/samba/.
Côté serveur, le minimum à faire
[global] hosts allow = 192.168.10. 192.168.11.
autorise la connexion des clients des subnets 10 et 11
hosts deny = ALL
interdit cette connexion à tous les autres
interfaces = 192.168.10.2/255.255.255.0 192.168.11.2/255.255.255.0
interfaces réseau utilisées par Samba:
browseable = no
cette option rend les partages sensibles invisibles au butinage (browsing). Et mettre les bonnes permissions sur les mêmes, surtout sur le partage net logon
[netlogon] writable = no
Un utilisateur malveillant pourrait mettre un exécutable dans ce partage et il serait exécuté par toutes les machines qui se connecteraient.
Ne pas accepter certains types de fichiers.
veto files = /*.exe/*.dll/*.bat/*.vbs/
Par exemple pour éviter le propagation de fichiers infectés dans le serveur.
Pour les clients Windows XP, une modification est nécessaire au niveau de la base de registres; il faut ajouter la clé:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters] "requiresignorseal"=dword:00000000
Les Mac OSX accèdent aux ressources par une interface graphique ou alors en mode commande.
Bien évidemment si l'on doit gérer un grand nombre d'utilisateurs et de clients, toutes les manipulations ci-dessus peuvent être très efficacement scriptées.
Plusieurs applications sont à disposition pour administrer Samba en mode graphique:
WebMin (http://www.webmin.com). Image 5 -interface Webmin Swat, distribué avec Samba. L'outil RedHat, RedHat-conf-Samba. Sur le miroir suisse de Samba (http://samba.epfl.ch/samba/samba.html) on peut trouver d'autres informations sur ce sujet.
Le cryptage du mot de passe sur ldap n'est pas le même que sur Samba. Les utilisateurs peuvent s'authentifier sur le PDC, mais pour accéder aux ressources partagées par Samba ils doivent retaper leur mot de passe au premier logon pour qu'il s'enregistre dans le fichier smbpasswd au bon format.
La configuration se fait en mode texte donc avec plus de clarté et plus de souplesse.
En cas de crash total de la machine, la sauvegarde des fichiers (smb.conf, smbpasswd, ldap.conf, system-auth) permet d'installer rapidement un autre PDC. L'expression administrer un domaine prend ici son vrai sens vu que la plupart des paramètres sont visibles et éditables avec un simple éditeur de texte.
Encore un mot à dire par rapport à une solution Forêt Active Directory où à partir d'un certain niveau, l'administrateur devient un simple exécutant qui obéit aux stratégies qui lui sont imposées et encore une fois la séduction de l'interface GUI ne lui laisse aucune chance de s'orienter dans les méandres du système. Son rôle se cantonne à appliquer des règles prédéfinies et le cas échéant, à passer des patches pour colmater les défauts obscurs du système.
Au niveau des stratégies de sécurité, Samba n'atteint pas encore;-) le degré de complexité d'un serveur Windows, mais dans un milieu académique la balance doit pencher du côté du prix, du gain de liberté et de souplesse dans l'utilisation des ressources informatiques que nous offrent les produits Samba et Linux.
La version Samba-3.0.0 RC2 est disponible . Entre autres nouveautés, citons les plus importantes:
© Flash informatique 2003