[Samba] Sécurité des partage et exclusion de répertoire

Sécurité des partage et exclusion de répertoire [Samba] - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 08-10-2007 à 14:38:22    

Bonjour à tous
 
Je viens d'acheter un Nas Linkstation que j ai flashé pour mettre une distrib Linux. Mes connaissances en Linux sont basiques (j'ai appris les bases à la fac mais j'ai jamais pratiqué plus). J ai donc installé Samba dessus et tout marche plutot bien mis à part quelques interrogations :
 
- Tout d abord je suis en sécurité "user", le niveau par défaut dans samba. La chose que je ne comprends pas, même après avoir potasser la doc, c est pourquoi il est necessaire de mapper l'utilisateur linux avec celui sous windows dans le fichier "smbusers". Admettons que j ai un réseau local chez moi (pas de domaine, pas de PDC, simple réseau). Voici le cas suivant :
          - Sur mon serveur j ai un utilisateur "totoLinux" qui a acces à 3 partages : shareA, shareB, shareC
          - Sur mon ordi "A" j ai un utilisateur totoWin.  
          - Dans le fichier "smbuser" j ai  la ligne "totoLinux = totoWin"
          - Quand totoWin se connecte il voit donc les 3 partages. Jusque la rien d anormal.
 
Maintenant qu'est ce qui empeche quelqu'un sur un ordi "B" de creer un utilisateur "totoWin" pour usurper mon identité, car visiblement quand je me connecte aux partage il ne me demande pas le mot de passe de l'utilisateur "totoLinux" et moi c est ce que je voudrais en fait. Que mes utilisateur ne puissent se connecter à leur partages en connaissant impérativement le passe de l'utilisateur auquel ils sont mappé dans la config Samba.
 
2ème question : Comment exclure un répertoire d'un  partege
 
Si dans "ShareA" j ai 3 répertoire "dirA", "dirB" et "dirC". Je veux par exemple que dirB ne soit accessible uniquement à certains utilisateurs. J ai essayé avec le paramètre "Dont' Descend". Le problemes c est qu'on voit le répertoire mais pas son contenu (moi je ne veux pas qu'on voit le répertoire ET le contenu). Et gros problème si l'user connait le chemin direct d'un sous rép ou d un fichier il a quand même accès.
 
Voili voilou
 
Merci pour votre aide

Reply

Marsh Posté le 08-10-2007 à 14:38:22   

Reply

Marsh Posté le 08-10-2007 à 16:02:23    

Oreste a écrit :

Bonjour à tous
 
 
- Tout d abord je suis en sécurité "user", le niveau par défaut dans samba. La chose que je ne comprends pas, même après avoir potasser la doc, c est pourquoi il est necessaire de mapper l'utilisateur linux avec celui sous windows dans le fichier "smbusers".  


les utilisateurs samba servent uniquement pour l'authentification des utilisateurs windows
une fois authentifie, ce sont les droits unix sur les fichiers qui sont pris en compte
c'est pour ca qu'il faut qu'il y ait un lien entre entre ton utilisateur windows et un utilisateur unix
donc il faut que ton utilisateur windows existe dans /etc/samba/smbpasswd et dans /etc/passwd
 
si tu veux les nommer de maniere differente, il faut que tu utilises smbusers pour que samba sache faire la correspondance entre l'utilisateur windows et l'utilisateur unix effectif
 

Citation :


Admettons que j ai un réseau local chez moi (pas de domaine, pas de PDC, simple réseau). Voici le cas suivant :
          - Sur mon serveur j ai un utilisateur "totoLinux" qui a acces à 3 partages : shareA, shareB, shareC
          - Sur mon ordi "A" j ai un utilisateur totoWin.  
          - Dans le fichier "smbuser" j ai  la ligne "totoLinux = totoWin"
          - Quand totoWin se connecte il voit donc les 3 partages. Jusque la rien d anormal.
 
Maintenant qu'est ce qui empeche quelqu'un sur un ordi "B" de creer un utilisateur "totoWin" pour usurper mon identité, car visiblement quand je me connecte aux partage il ne me demande pas le mot de passe de l'utilisateur "totoLinux" et moi c est ce que je voudrais en fait. Que mes utilisateur ne puissent se connecter à leur partages en connaissant impérativement le passe de l'utilisateur auquel ils sont mappé dans la config Samba.


avec ta conf de samba (donc serveur autonome), samba en a rien a faire que totoWin soit connecte sur A ou B, pour lui c'est le meme utilisateur
si tu veux tenir compte du PC de connexio, tu devras passer par des domaines
 
pour samba, un utilisateur totoWin essaie de se connecter, il va donc demander le mot de passe de ce totoWin et va le verifier avec ce qu'il  a dans smbpasswd
si c'est bon, samba va regarder si totoWin est mappe avec un utilisateur unix dans smbusers, si oui, samba va utiliser les droits unix de totoLinux pour l'acces reel aux fichiers, sinon, samba va chercher totoWin dans /etc/passwd et prendre les droits qui sont attribues aux fichiers accedes  
 
 

Citation :


2ème question : Comment exclure un répertoire d'un  partege
 
Si dans "ShareA" j ai 3 répertoire "dirA", "dirB" et "dirC". Je veux par exemple que dirB ne soit accessible uniquement à certains utilisateurs. J ai essayé avec le paramètre "Dont' Descend". Le problemes c est qu'on voit le répertoire mais pas son contenu (moi je ne veux pas qu'on voit le répertoire ET le contenu). Et gros problème si l'user connait le chemin direct d'un sous rép ou d un fichier il a quand même accès.
 
Voili voilou
 
Merci pour votre aide


tu vas devoir utiliser les ACL pour ça (en tout cas, c'est la seule solution  que je vois
pour plus de details, je te renvoie sur http://www.kelus.net/dokuwiki/doku [...] on_des_acl (pub inside)
il faudra que tu enleves les droits rx a l'utilisateur qui n'aura pas acces a dirB

Reply

Marsh Posté le 08-10-2007 à 16:19:37    

Merci beaucoup Kelus pour tes réponses :
 
donc si j ai bien compris en pratique (dans mon cas) le login / password sous linux ne sert à rien, si ce n est que c est obligatoire pour faire le mapping windows = linux. A aucun moment ce login / mdp sera demandé aux utilisateurs sur le réseau. Précision quand je parles de totoWin qui se connecte de A ou de B, je parles de deux comptes bien distincts (un sur la machine A avec son mot de passe et idem sur la machine B, les deux n ayant aucun lien). Mais je pense que la réponse est la même vu que dans le fichier smbusers le lien se fait sur le nom donc pas moyen de differencier plus...
 
Pour les ACL je vais jeter un coup d oeil :)

Reply

Marsh Posté le 08-10-2007 à 16:34:19    

euh, j'ai pas du etre tres clair :D  
 
bon reprenons, tu as besoin de :
- un utilisateur windows (propre au PC)
- un utilisateur samba (ajoute avec smbpasswd)
- un utilisateur unix (ajouter avec adduser)
pour acceder a un partage samba
 
l'utilisateur windows, on s'en fout un peu en fait dans ton cas, car pour te connecter a ton partage samba, il va falloir rentrer un nom d'utilisateur et un mot de passe qui correspondent en fait a un utilisateur samba, et qui sont totalement independants du pc client et de l'utilisateur windows
ca aurait un interet dans le cas d'un domaine ou l'utilisateur windows se servirait directement de samba pour s'authentifier sur le domaine
 
le compte samba sert uniquement a pouvoir t'authentifier sur le partage, donc le mot de passe est assez important :D  
 
pour l'utilisateur linux, en effet, le mot de passe, on s'en moque un peu, vu que l'authentification sera deja faite par samba, la seule chose qui t'interesse ce sont ses droits sur les repertoires partages
 
pour les histoires de mappage, tu n'en as en fait pas forcement besoin
si l'utilisateur samba a le meme nom que l'utilisateur linux, tu n'en as pas besoin
 
totoWin, ce sont des utilisateurs windows, ou des utilisateurs samba ?  
car dans le 1er cas, les mots de passe peuvent etre differents, car pour windows, ce sont des comptes locaux propres au pc
dans le 2eme cas, ce sont forcement le meme utilisateur car pour samba, il n'y a qu'un seul utilisateur totoWin

Reply

Marsh Posté le 08-10-2007 à 16:34:54    

plus j'ecris, plus je me demande si je ne vais pas t'embrouiller dans mes explications :D  

Reply

Marsh Posté le 08-10-2007 à 16:42:00    

je vais prendre un exemple pour essayer d'etre plus clair sur les systemes d'utilisateur  
 
tu lances ton windows et tu te connectes en tant que totoWin (ou administrateur :D ), donc c'est mon utilisateur windows
 
ensuite, tu veux acceder a ton partage samba, tu vas cliquer dessus et windows va te demander un nom d'utilisateur et un mot de passe, ce sont alors les informations de mon utilisateur samba
tu remplis smbuser et password et samba va accepter la demande
 
ensuite, tu vas cliquer sur un repertoire present sur le partage
samba va alors regarder si tu as les droits (au sens unix) necessaire, il va donc prendre ton utilisateur samba et regarder ses droits unix
si tu as renseigne le fichier smbusers, samba va le regarder et tiens, smbuser est en fait usrlinux, mon utilisateur linux
samba va consulter /etc/passwd pour voir si usrlinux existe bien
il existe donc samba va regarder les droits de usrlinux sur le repertoire que veux smbuser
 
si tu n'as pas renseigne smbusers, samba va directement regarder dans /etc/passwd si smbuser existe, donc pas de mapping mis en jeu


Message édité par kelus le 08-10-2007 à 16:42:47
Reply

Marsh Posté le 08-10-2007 à 16:51:03    

Ok je vais te décrire ma situation en détail ca sera plus simple  
 
J ai un Nas avec samba enregistré dans le Workgroup "HOME"
Dessus j ai un utilisateur cyril_linux (compte linux).
Cet utilisateur est également enregistré dans samba et a des droits RWX sur un partage "MUSIC".
 
J'ai un ordi chez moi dans le Workgroup "HOME" également. Avec dessus  
un compte local "Cyril".
 
Dans mon smbuser j ai donc "cyril_linux=Cyril". Si je n ai pas cette ligne quand j essaye de me connecter au Nas dans le voisinage réseau j ai une popup qui me demande un login et mot de passe, et la peut importe le compte linux que je met (root ou cyril_linux), il me prend rien, chose que je trouve bizarre.
 
Des que je met la ligne dans le fichier "smbusers", c est niquel tout marche et plus de popup pour avoir login / pass.
 
Par contre je me dit : si demain j ai mon cousin qui s appel "Cyril" (pas de chance hein :) ) qui vient avec son ordinateur (avec dessus un compte local "Cyril" donc comme le miens sur mon ordi) qui se branche sur mon réseau il va automatiquement voir mes partages sans qu on lui demande le login / password du compte linux. C est ca que j'aime pas en fait.

Reply

Marsh Posté le 08-10-2007 à 16:54:28    

kelus je te rassurre t es explications sont clairs c est juste moi qui ait du mal avec le mecanisme d 'auth de samba et pourtant j ai lu la doc :d

Reply

Marsh Posté le 08-10-2007 à 18:26:26    

ok, je comprends mieux :)
 
en fait, le comportement de ton samba est normal a cause de securiy=user
il faudrait que tu mettes security=share si tu veux entrer ton mot de passe a chaque connexion au partage samba :

Citation :


 If your PCs use usernames that are the same as their usernames on the UNIX machine then you will want to use
          security = user. If you mostly use usernames that don’t exist on the UNIX box then use
          security = share.


tire du man de smb.conf
 
ca devrait regler ton probleme de compte windows identique sur deux pc  differents
sinon, tu seras oblige de recourir aux domaines

Reply

Marsh Posté le 09-10-2007 à 20:45:04    

dans ce cas, (security = share) il n'a meme pas besoin du smbpassword et du smbuser
security=share signifie que quiconque se connecte au partage, quel que soit son login et son password aura acces au partage...meme si il est inconnu du systeme (/etc/password ou smbpassword)
 
en mode security = user, quand tu te connecte au partage, voici comment ca reagit,
 
windows envoie le login/password win au serveur linux (cyril/kektuveux)
celui-ci regarde si le login est dans la base des login/password de samba(cette base est definie par la directive passwd backend)
..........ca peut etre le fichier smbpasswd (passwd backend=smbpasswd ) ou le fichier passdb.tdb (passwd backend=tdbsam)
 
si oui, il verifie que le password envoyé par le poste windows est identique a celui present dans la dite base
si non, il verifie si il existe une directive smbusers correspondant à un mappage entre le login windows et un login present dans la base samba
dans ton cas, il voit que tu est cyril, il regarde, ne voit pas de cyril, mais il voit que cyril=cyril_linux dans smbusers, il converti donc
cyril/kektuveux en cyril_linux/kektuveux
il regarde dans smbpasswd et voit un cyril_linux, il compare ensuite kektuveux avec le mot de passe present dans le smbpasswd, si il est ok il accepte le partage sinon il le refuse
ce qui veux dire que ton cousin, lui, il va envoyer cyril/autrechos ( a moins qu'il ait le meme mot de passe windows que toi)
meme cheminnement, ca donne cyril/autrechose =/= cyril_linux/kektuveux donc connection au partage refusée..(popup login/password)
 
 
il y a juste une chose a ne pas oublier, si tu utilise security = user , le login samba (dans smbpasswd DOIT exister dans  /etc/passwd, mais les passwords peuvent etre differents)


---------------
hebergez vos images
Reply

Marsh Posté le 09-10-2007 à 20:45:04   

Reply

Marsh Posté le 10-10-2007 à 09:09:49    

merci pour la correction sur le fonctionnement de share et tes precisions :jap:
 
en esperant que maintenant Oreste s'en sorte :D

Reply

Marsh Posté le 10-10-2007 à 10:16:27    

Merci beaucoup les amis pour vos explications
 
J ai pas eu le temps de m y remettre mais je m en occupe au plus tot  :)

Reply

Marsh Posté le 10-10-2007 à 11:46:08    

tu peux aussi :
re-exprimer plus precisement ton besoin (partages, droits etc)
et poster ton smb.conf,  
ca peut aider a cerner les eventuelles erreurs et/ou ameliorations pour respecter ton besoin.


---------------
hebergez vos images
Reply

Marsh Posté le 10-10-2007 à 11:58:18    

Oui je le posterais quand j aurais corrigé comme ca, ca pourra ptet aider les personnes perdues comme moi ;)
 
En fait pour mes besoins j en ai aucun dans l'absolu, puisque c est pour un Nas chez moi avec juste 2 postes de connecter et un boitier multimedia. C est juste que je suis un peu curieux et comme j ai commencé a trifouiller dans samba j ai voulu comprendre ce que je faisais :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed