18 0 371KB
Implémenter le serveur de partage SAMBA Sommaire 1. 2. 3. 4. 5. 6. 7. 8. 9.
Introduction Présentation de Samba Fonctionnalités de Samba Démons de Samba et services apparentés Types de serveur SAMBA Fichier de configuration de serveur SAMBA Configuration de serveur SAMBA Le voisinage réseau sous Linux Le voisinage réseau sous Windows
1. Introduction Samba est une implémentation Open Source du protocole Server Message Block (SMB). Il permet l'interaction sur un réseau de Microsoft Windows®, Linux, UNIX et d'autres systèmes d'exploitation, permettant ainsi l'accès à des fichiers basés sur Windows et à des partages d'imprimantes. L'utilisation de SMB par Samba lui permet d'apparaître comme un serveur Windows aux clients Windows.
2. Présentation de Samba La troisième version principale de Samba, la version 3, a incorporé de nombreuses améliorations par rapport aux versions précédentes, y compris : La possibilité de faire partie d'un domaine Active Directory au moyen de LDAP et Kerberos ; La prise en charge intégrée d’Unicode pour l'internationalisation ; La prise en charge de connexions client Microsoft Windows XP Professional aux serveurs Samba sans devoir toucher à la base de registre local ;
3. Fonctionnalités de Samba Samba est une application serveur performante et versatile. Ce que Samba peut accomplir : Mettre des arborescences de répertoires et des imprimantes à la disposition de clients Linux, UNIX et Windows ; Aider lors de la navigation du réseau (avec ou sans NetBIOS) ;
Fournir la résolution du serveur de noms Windows Internet Name Service (WINS) ; Authentifier les connexions de domaines Windows; Agir en tant que contrôleur principal de domaine (ou PDC) de type Windows NT® ; Agir en tant que Contrôleur de Domaine Secondaire (ou BDC, de l'anglais Backup Domain Controller) pour un contrôleur principal (PDC) basé sur Samba ; Agir comme un serveur membre du domaine Active Directory ; Joindre un PDC Windows NT/2000/2003 ;
Ce que Samba ne peut pas effectuer : Agir comme un BDC pour un PDC Windows (et vice versa) Agir comme le contrôleur d'un domaine Active Directory
4. Démons de Samba et services apparentés a. Présentation des démons
Samba est composée de trois démons (smbd, nmbd et winbindd). Deux services (smb et windbind) contrôlent la manière selon laquelle les démons sont démarrés et arrêtés et ainsi que d'autres fonctionnalités en relation avec les services. Les paquetages nécessaires pour l’installation de serveur Samba : o samba-common-3.6.23-41.el6.x86_64 o samba4-libs-4.2.10-9.el6.x86_64 o samba-winbind-3.6.23-41.el6.x86_64 o samba-3.6.23-41.el6.x86_64 Les paquetages nécessaires pour l’installation de client Samba : o samba-client-3.6.23-41.el6.x86_64 o samba-winbind-clients-3.6.23-41.el6.x86_64
b. Le démon smbd Le démon serveur smbd fournit des services de partage de fichiers et d'impression aux clients Windows. En outre, il est responsable de : L'authentification des utilisateurs, Du verrouillage des ressources et du partage des données par le biais du protocole SMB. Les ports par défaut sur lesquels le serveur est à l'écoute de tout trafic SMB sont les ports TCP 139 et 445. Le démon smbd est contrôlé par le service smb.
c. Le démon nmbd Le démon serveur nmbd comprend et répond à toutes les requêtes de service de résolution de nom NetBIOS telles que celles produites par SMB/CIFS dans des systèmes basés sur Windows. Ce démon joue également un rôle au niveau des protocoles de navigation qui constituent l'affichage du voisinage réseau (Network Neighborhood) de Windows. Le port par défaut sur lequel le serveur attend du trafic NMB est le port UDP 137. Le démon nmbd est contrôlé par le service nmb.
d. Le démon winbindd Le service winbind effectue la résolution entre les informations relatives aux utilisateurs et aux groupes sur un serveur Windows NT et les rend utilisables par des platesformes UNIX. Cette opération est possible grâce à l'utilisation d'appels RPC de Microsoft, du système PAM (Pluggable Authentication Module, ou module d'authentification enfichable) et du NSS (Name Service Switch). Le démon winbindd est contrôlé par le service winbind, séparément du service smb.
5. Types de serveur SAMBA Il existe différentes manières selon lesquelles un serveur Samba peut être configuré.
a. Serveur autonome Un serveur autonome peut être le serveur d'un groupe de travail ou un membre de l'environnement d'un groupe de travail. Un serveur autonome n'est pas un contrôleur de domaine et ne joue aucun rôle dans un domaine. Existe quatre configurations pour un serveur autonome: 1. Anonyme en lecture-seule ; 2. Anonyme en lecture/écriture ; 3. Serveur d'impression anonyme ; 4. Fichier en lecture/écriture et serveur d'impression sécurisés.
b. Serveur membre d'un domaine Un membre d'un domaine, bien qu'étant semblable à un serveur autonome, est connecté à un contrôleur de domaine (soit Windows, soit Samba) et soumis aux règles de sécurité de ce domaine. Existe deux configurations pour un serveur: 1. Serveur membre du domaine Active Directory 2. Serveur membre d'un domaine basé sur Windows NT4
c. Contrôleur de domaine Un contrôleur de domaine dans Windows NT joue essentiellement le même rôle qu'un service d'information réseau (ou NIS, Network Information Service) dans un environnement Linux. Les contrôleurs de domaine et les serveurs NIS hébergent tous les deux des bases de données d'informations utilisateurs/groupes sur les hôtes, ainsi que sur les services apparentés. Dans un environnement Samba, il ne peut y avoir qu'un seul PDC et aucun ou plusieurs BDC. Existe trois configurations pour un serveur autonome:
1. Contrôleur de domaine principal (PDC) utilisant tdbsam ; 2. Contrôleur de domaine principal (PDC) utilisant LDAP ; 3. Contrôleur de domaine secondaire (BDC) utilisant LDAP
6. Fichier de configuration de serveur SAMBA La configuration de Samba est une opération assez simple. Toutes les modifications apportées à Samba ont lieu dans le fichier de configuration /etc/samba/smb.conf. Bien que le fichier par défaut smb.conf soit bien documenté. Voici le contenu sans la documentation (lignes qui commence par # et ;) [global] workgroup = MYGROUP server string = Samba Server Version %v # logs split per machine log file = /var/log/samba/log.%m # max 50KB per log file, then rotate max log size = 50 # Mode de sécurité security = user # Type de mot de passe passdb backend = tdbsam # Options générale de l’impression load printers = yes cups options = raw [homes] comment = Home Directories browseable = no writable = yes [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes
Ce fichier est composé de sections dont le nom est entre [crochets] : [global] : contient les paramètres généraux et les paramètres par défaut des différents partages ; [printers] et [print$] sont spécifiques au partage d'imprimantes ;
[homes] est spécifique au partage du répertoire personnel d'un utilisateur ; [le_nom_d'un_partage] pour chaque partage
a. Modes de sécurité pour Samba Il existe seulement deux types de modes de sécurité pour Samba, à savoir : share-level Mot de passe par partage. security = share user-level o Authentification par utilisateur. security = user o Mode de sécurité domaine security = domain o Mode de sécurité Active Directory security = ADS o Mode de sécurité serveur security = server
7. Configuration de serveur SAMBA a. Les étapes de la configuration du serveur Pour notre TP, on va utiliser la topologie suivante :
Nous allons réaliser les opérations suivantes : 1 - Déclarer les ressources partagées, 2 - Vérifier et valider le fichier de configuration, 3 - Créer des comptes utilisateurs pour SAMBA. 4 - Tester la configuration à partir d'un client Linux ou Windows. Attention : Un compte système n'est pas un compte SAMBA. Faites bien la distinction entre les deux.
b. Scénarios On va déployer un serveur SAMBA autonome, pour ses deux types : 1. Anonyme en lecture-seule ; 2. Anonyme en lecture/écriture ; 3. Fichier en lecture/écriture sécurisés.
c. Configuration de serveur SAMBA en mode partage Avant de commencer la configuration, dupliquer le fichier /etc/samba/smb.conf. Editez le fichier /etc/samba/smb.conf et ajouter à la fin de fichier ces ligne qui concernent les dossiers à partager : [global] … workgroup = WORKGROUP netbios name = CentOS_SRV security = share … # Sections REPERTOIRES PARTAGES # CAS n° 1 : Anonyme en lecture-seule [cdrom] # Le commentaire associé au CDROM comment = Le CDROM # Point de montage du CDROM path = /cdrom/ # Empêche la modification des utilisateurs dans ce dossier # Synonyme writable = no Read only = yes # Partage le CDROM de manière anonyme # Synonyme public = yes guest only = yes # La ressource partagée est parcourable browseable = yes # CAS n°2 : Anonyme en lecture/Ecriture [prive] # Le commentaire associé au répertoire comment = Un répertoire partagé en lecture/Ecriture # Emplacement du répertoire partagé path = /prive/ # Support en lecture / écriture # synonyme de read only = no writable = yes # Partage anonyme désactivé (cas par défaut) # synonyme de guest ok = yes public = yes #Quel que soit l’utilisateur connecté, il sera identifié par force user = nobody force group = nobody # Options supplémentaires create mask = 0644 directory mask = 0755
Utiliser la commande # testparm -s qui lit le fichier smb.conf et permet de vérifier qu'il n'y a pas d'erreur de syntaxe. Redémarrer le service smb et nmb : # service smb restart && service nmb restart Pour recharger le fichier de configuration, suite à une modification par exemple, privilégiez la commande # service smb reload à # service smb restart, cela ne coupera pas les accès en cours. Le dossier /cdrom et /prive avec le droit pour les autre o+w. La commande # smbstatus -v permet de connaitre les partages en activité et leur utilisation. N’oublier pas de rendre le filtrage SELinux « Permissive ». Pour effectuer un test rapide : o Vérifier le partage avec la machine Windows à partir « Centre Réseau et partage ». o Désactiver « le partage protégé par mot de passe » à partir de « Centre Réseau et partage ».
d. Configuration de serveur SAMBA en mode utilisateur On veut forcer le serveur SAMBA à demander l’authentification à l’utilisateur qu’ils veulent accéder au partage, ainsi on veut définir une liste d'utilisateurs qui ont le droit d'accéder au partage, et enlever ce droit aux autres. Et bien pour faire cela, il faudra une politique de sécurité différente de security = share. [global] … workgroup = WORKGROUP netbios name = CentOS_SRV security = user … # CAS n° 1 : Lecture-seule pour tout le monde, écriture pour quelques utilisateurs. [cdrom] # Le commentaire associé au CDROM comment = Le CDROM # Point de montage du CDROM path = /cdrom # Empêche la modification des utilisateurs dans ce dossier read only = yes # Partage le CDROM de manière anonyme guest only = yes # La ressource partagée est parcourable browseable = yes # Affecter le droit de création a quelques utilisateur write list = utilisateur1, utilisateur2, @groupe1
# CAS n°2 : lecture/Ecriture sécurisé [prive] # Le commentaire associé au répertoire comment = Un répertoire partagé en lecture/Ecriture # Emplacement du répertoire partagé path = /prive # Support en lecture / écriture # Synonyme de read only = no writable = yes # Partage anonyme désactivé (cas par défaut) guest ok = no #Les utilisateurs qui ont le droit d'accéder au partage valid users = utilisateur1, utilisateur2, @groupe1 # Options supplémentaires create mask = 0644 directory mask = 0755
e. Déclaration et gestion des utilisateurs pour Samba Pour créer les comptes Samba, il faut utiliser la commande pdbedit. Cette commande ajoute un compte déjà créé dans le système Linux dans la base de données d’utilisateur SAMBA. i. Déclaration des utilisateurs et groupe # groupadd smbgusers # useradd –s /bin/false –g smbgusers -d /dev/null win_user01 # useradd –s /bin/false –g smbgusers -d /dev/null win_user02 # useradd –s /bin/false –g smbgusers -d /dev/null win_user03 # useradd centos_user01
ii. Ajout à la base de données SAMBA # pdbedit –a win_user01 w password: retype new password: # pdbedit –a win_user02 # pdbedit –a win_user03 # pdbedit –a centos_user01
Note : Il existe une ancienne commande qui est équivalent de pdbedit est « smbpasswd ». iii. Vérification de la base de données SAMBA # pdbedit –L –v # pdbedit -v centos_user01
Redémarrer le service smb et nmb : # service smb restart && service nmb restart Vérifier avec la machine Windows à partir « Centre Réseau et partage ».
8. Le voisinage réseau sous Linux a. Sous la console Voici une liste des commandes de smbclient les plus utiles (à chaque fois il vous demandera de taper votre mot de passe pour le domaine Windows) : i. Pour avoir la liste des machines du voisinage réseau : # smbclient -L nom_DNS_ou_NetBIOS_du_serveur -U win_user01
ii. Pour voir les partages de l'ordinateur ordi1 : # smbclient -L ordi1 -U win_user01
iii. Pour télécharger le fichier fichier1.txt disponible dans le partage partage1 de l'ordinateur ordi1 : # smbclient //ordi1/partage1 -U win_user01 smb: \> ls smb: \> cd répertoire_distant smb: \> lcd répertoire_local smb: \> get fichier1.txt smb: \> quit
iv. Pour imprimer le fichier PostScript fichier2.ps sur l'imprimante printer2 partagée par l'ordinateur ordi2 : # smbclient //ordi2/printer2 -U win_user01 smb: \> print fichier2.ps smb: \> quit
v. Pour déposer le fichier fichier3.txt sur le partage incoming partagé en écriture par l'ordinateur ordi3 : # smbclient //ordi3/incoming -U win_user01 smb: \> put fichier3.txt smb: \> quit
vi. Pour changer son mot de passe du voisinage réseau Windows : # smbpasswd -r nom_DNS_ou_NetBIOS_du_serveur -U win_user01
b. Monter un partage du voisinage réseau Avant de commencer le montage des dossiers partagés, il faut s’assurer que le serveur DNS fonctionne correctement. Vérifier la résolution des noms NetBIOS au niveau du client SAMBA, avec la commande : # nmblookup -S WORKGROUP
Si vous voulez utiliser le nom NetBIOS, il faut activer l’option de fichier /etc/samba/smb.conf netbios name = serveur01
Pour monter le partage partage1 de l'ordinateur ordi1 dans le répertoire /mnt/test/ déjà existant : # mount -t cifs //ordi1/partage1 /mnt/test -o username=login_Windows Ou # mount -t cifs //@IP/partage1 /mnt/test -o username=login_Windows Ou # mount -t cifs //nom_de_domaine/partage1 /mnt/test -o username=login_Windows
c. Monter un partage sécurisé permanent
La méthode la plus rapide pour un partage permanent et d’ajouter la ligne suivant dans le fichier /etc/fstab : //servername/sharename
/media/windowsshare
cifs
username=msusername,password=MSPASSWORD,iocharset=utf8
0
0
Ce n’est pas une bonne idée de mettre le mot de passe dans fichier lisible par tout le monde. La solution est de créer un fichier au niveau de client SAMBA qui contient les informations d’identification (credentials file). # vim /root/.smbcredentials
Qui va contenir les lignes suivant: username=win_user01 password=password
Changer les droits de ce fichier. # chmod 600 /root/.smbcredentials
Ensuite éditer le fichier /etc/fstab : //servername/sharename
/media/windowsshare
cifs
credentials=/root/.smbcredentials,iocharset=utf8
0
0
Activer le montage avec la commande: # mount -a
d. Montage avec permissions spécial Si vous avez besoin des permissions spécial (comme chmod), dans votre montage, vous avez besoin d’ajouter à la ligne de fstab les options uid et gid. //servername/sharename
/media/windowsshare
cifs
uid=user01,credentials=/root/.smbcredentials,iocharset=utf8
Où :
0
0
iocharset=utf8 permet l’utilisation du jeu de caractères UTF-8(noms de dossiers et fichiers accentués) ; uid=1000 ou uid=user01 rendre cet utilisateur le propriétaire de point de montage, autorisant lui de renommer les fichiers ; _netdev : indique que la source du partage est située sur un serveur distant; rw (écriture) n'est plus nécessaire, elle est maintenant "par défaut" dans la version actuelle de cifs ; Si le chemin de dossier à partager contient des espaces, vous devez remplacer les espaces par \040, par exemple //server01/Mes\040Documents\
Note : Pour un montage anonyme via /etc/fstab : //servername/sharename
/media/windowsshare
cifs
guest,iocharset=utf8
0
0
guest indique que vous n’avez pas besoin de mot de passe lors de l’accès au partage.
9. Le voisinage réseau sous Windows a. Avec MS-DOS > net view > net view \\ordi\ > net use x: \\servername\sharename /user:user01 /persistent:yes
Note: au lieu de mettre une lettre de drive bien précise, tu mettre « * » pour laisser le système de choisir une lettre libre. Pour vérifier le point de montage : > net use x:
a. Avec Power SHELL Tout d’abord, il faut vérifier la version de votre power Shell, car la commande concerné fonctionne sous la version 3 ou supérieure. Affiche la version de PowerShell installé PS> $PsVersionTable
Créer un point de montage PS> new-PSDrive –name x –Root \\servername\sharename -PSProvider FileSystem -Credential user01 -Persist
Vérifier le point de montage PS> get-PSDrive
Supprimer le point de montage PS> remove-PSDrive
10.
Samba4 et le mode « share »
A partir de version quatre de serveur samba, les développeurs de serveur samba ont supprimé le mode « share » à cause de leur vulnérabilité et aussi le dysfonctionnement à mainte reprise.
a. Samba4 et partage publique On peut réaliser un partage public avec le mode « user », on suit les étapes suivantes : Premièrement, Editer le fichier /etc/samba/smb.conf : [global] … workgroup = WORKGROUP netbios name = CentOS_SRV security = user map to guest = Bad User … [sharedoc] comment = Public Stuff path = /smbsmb/ public = yes writable = yes printable = no browseable = yes force user = nobody
[Anonymous] comment = Anonymous File Server Share path = /anonymous browsable =yes writable = yes guest ok = yes read only = no force user = nobody [Partage$] comment = Anonymous File Server Share path = /anonymous01 browsable =yes writable = yes guest ok = yes read only = no
force user = nobody
La directive « map to guest » est très importante puisqu'elle permet aux utilisateurs qui n'ont pas de compte d'être autorisés à se connecter. La syntaxe de la directive est « map to guest = value », et les valeurs autorisé sont : o S'il est défini sur « Bad User », permet aux utilisateurs sans compte sur le système Samba de se connecter et de se voir attribuer le compte invité. Cette option peut être utilisée dans le cadre de la création de partages publics pour toute personne à utiliser. o S'il est défini sur « Bad Password », les utilisateurs qui tapent mal leurs mots de passe seront connectés au compte invité au lieu du leur. Comme aucun avertissement n'est donné, la valeur du « Bad Password » peut être extrêmement déroutante (C’est déconseillé). o Le paramètre par défaut « Never », empêche les utilisateurs sans compte de se connecter. La directive « guest ok = yes » ne suffit pas, car le mode de sécurité est « user », ce qui implique une authentification avant de fournir le nom de la ressource. Samba fait une correspondance des comptes invités vers le compte « nobody » pour la gestion des droits. On peut le constater en regardant les droits sur les fichiers déposés dans le partage.
Deuxièmement, affecter le propriétaire et le groupe des propriétaires au dossier partagé : # chown -R nobody:nobody /smbsmb/ # chown -R nobody:nobody /anonymous/