Authentification LDAP + montage NFS

Bonjour chers debian-eurs.

Je suis actuellement en train de monter un projet (pour ma culture technique perso) de “démo d’accès sécurisé distant”.
Il s’agit en fait de “simuler” un réseau d’entreprise (avec des machines virtuelles vmware), joignable en accès nomade sécurisé.

Dans ce projet, j’avais initialement prévu de monter des partages réseaux et les répertoires /home a l’aide de NIS/NFS que j’ai appris a utiliser en DUT Réseaux et Télécoms.
Seulement un petit tour dans un tuto (histoire de se remettre a jour avant d’entamer des fausses manipulations) m’a permis de voir que nis…niveau sécurité il y avait mieux quand même… (j’en avait déjà un peu conscience quand j’ai vu ca en cours, mais pas autant que là)
Je me suis donc orienté vers une solution avec authentification OpenLDAP couplé à NFS après avoir lu différents tutos la dessus.

-Ma machine cliente est en 172.16.1.99/24 (hostname: pd.demo.intra …original je sais :wink: )
-Une gateway interne distingue le réseau “client” du réseau “serveur” et “wan”:
eth0: 172.16.1.254
eth1: 172.16.255.254
eth2: ip wan, pas important ici

-Mon serveur ldap (openldap) est en 172.16.255.250/24 (hostname: ldap.demo.intra)
-Mon serveur nfs (nfs-kernel-server) est 172.16.255.248/24 (hostname: files.demo.intra)

Tous mes serveurs (ldap,nfs,etc…) et la gateway sont sous debian. Pour le client, je me suis servi d’une ubuntu-server qui trainait dans ma vmware-console.

Pour ce qui est du champ homeDirectory des users (users.ldif) je n’arrive pas a savoir si je dois mettre un chemin “fixe” (/home/nom_du_user) ou si je dois préciser qu’il faut aller chercher ce /home sur le serveur nfs (files.demo.intra:/home/nom_du_user). J’ai essayer les 2, mais sans succès.

Pour le champ automountInformation du automount (automount.ldif) c’est le même problème, chemin fixe (/home/&) ou pointant vers le serveur NFS (files.demo.intra:/home/&) ?

Je n’arrive pas à m’en dépatouiller malgré les différents tutos sur le net (la plupart font tourner le serveur NFS et le serveur OpenLDAP sur la même machine, donc le probleme du chemin vers le /home ne se pose pas…). Est-il possible de faire marcher cette solution en ayant 2 serveurs distincts ? ou dois-je systématiquement faire tourner le serveur OpenLDAP et le serveur NFS sur la même machine ?

oui

Merci de la réponse. Je suppose que si tu réponds celà, c’est que tu l’a bel et bien expérimenté.

Dans ce cas, j’ai penser à une piste:

Les répertoires /home contenus sur le serveur NFS ne sont pas montables car l’utilisateur distant ne bénéficie pas des droits. Dans ce cas comment préciser sur le serveur NFS que le dossier /home/test-admin appartient a l’utilisateur “test-admin” qui est un utilisateur de l’annuaire, et non un utilisateur local?

me parait être une solution, seulement pour ne pas avoir une erreur de “user inconnu” je dois donc préciser au serveur NFS d’utiliser ldap non ?
Autrement sans obliger le serveur NFS à utiliser l’annuaire ldap, en passant par l’uid et le gid c’est possible non ?

Quand aux champs “homeDirectory” des users (users.ldif) “automountInformation” du automount (automount.ldif), je précise quelle adresse ? celle du serveur LDAP ?celle du serveur NFS ? l’adresse du serveur NFS pour “automountInformation” et celle de OpenLDAP pour “homedirectory” ?

PS: je vais jeter un coup d’œil à ton projet d’annuaire LDAP sur ton site, même si tu n’y traite pas nfs mais samba, ca peut toujours servir :wink:.

non

mais c’est dans les cartons . samba me fait chi… et je pense revenir a nfs.

alors effectivement par rapport à ton problme dans ma conf avec samba ce dernier doit bien sur être connecté sur ldap, car le systeme hote lui ne connait pas mes utilisateurs. donc j’immagine que avec nfs c’est pareil, car sinon ça me ferais chi… de connecter le serveur en lui même sur ldap. quoi que tu peux faire en sorte que ton serveur voit les utilisateurs du ldap sans pour autant qu’ils aient de droits sur ce serveur, pas même le droit de se logger.

salut,

  • pour homeDirectory, tu doit pouvoir mettre /home/username et faire un montage (fstab):

files.demo.intra:/home /home nfs defaults 0 0sur les clients.

  • pour le serveur NFS, il me semble qu’il faut au moins qu’il utilise LDAP pour NSS (ça se fait avec libnss-ldap(d)) et ainsi associer noms d’utilisateurs et droits

enfin, c’est ce que je comprend du truc…

bon courage

avec cette solution tu montes systématiquement les homes de tous les utilisateurs. il faudra plutôt que le fstab privilégier des solutions a base de pam_mount ou de autofs qui permettent de monter uniquement le home de l’utilisateur au moment du login de celui ci. ainsi il n’y a aucun montage de fait au login des machines, les utilisateurs ‘locaux’ peuvent encore être utilisés sur les postes clients et depuis ton serveur nfs tu sais qui est connecté sur quel poste car tu vois quels homes sont montés sur quels postes clients.

Ok, je “reprendrais tout à 0” avec vos indications quand j’en aurais l’occasion. Dans l’immédiat, souhaiter moi bonne chance pour mon entretien de cette aprem.

Pour ce qui est de l’automontage ou non, dans un premier temps si ca marche, ca sera déjà pas mal (que ca soit avec fstab ou avec autofs). Après c’est sur que l’automontage c’est mieux vu que ca ne monte que le /home désiré.

Je vous tiens au jus (ou courant, a vous de voir :smiley:).

[quote=“thomas.leclerc”][quote=“ursus”]

  • pour homeDirectory, tu doit pouvoir mettre /home/username et faire un montage (fstab):

files.demo.intra:/home /home nfs defaults 0 0sur les clients.
[/quote]

avec cette solution tu montes systématiquement les homes de tous les utilisateurs. il faudra plutôt que le fstab privilégier des solutions a base de pam_mount ou de autofs qui permettent de monter uniquement le home de l’utilisateur au moment du login de celui ci. ainsi il n’y a aucun montage de fait au login des machines, les utilisateurs ‘locaux’ peuvent encore être utilisés sur les postes clients et depuis ton serveur nfs tu sais qui est connecté sur quel poste car tu vois quels homes sont montés sur quels postes clients.[/quote]
merci pour ces précisions, mais en quoi le montage du home global au lancement de la machine est-il problématique ? performance ?

personnellement, mes utilisateurs ldap ont leur home dans /home/ldapusers/username donc il n’y a pas de conflit avec les utilisateurs locaux éventuels.

bonne chance sharky_4 !

exactement

de plus (valable pour pam_mout a voir pour autofs) tu peut gerer des montages differenst selon le groupe auquel apartient l’utilisateurs … moi je trouve ça plus cool que de le mettre en dur dans fstab.

et puis tu n’as pas a te prendre la tête avec les droits du dossier qui sert de point d emontage, car ces logiciels font ça très bien.

@sharky_4

je viens de remonter ma conf avec nfs à la place de samba. j’apprécie la simplication à l’extreme de la conf de openldap. car même si avec samba ça avait l’avantage de fonctionner je n’ ai jamais rien compris (ni pris la peine).

donc si tu as des questions. :smt006

Désolé du temps de réponse, mais j’ai été un peu occupé ces derniers temps (et un peu démotivé pour ce projet, mais je suis de retour :smiley:).

La conf que tu as remonter c’est OpenLdap+NFS sur la même machine ?
Si j’ai bien compris tu fais du Pam+AutoFs en plus de celà?
J’ai lu (en travers) la doc de PAM, ca a l’air très “personnalisable”, mais un peu compliqué a mettre en place non ?

Pour ce qui est de l’erreur “No directory, logging in with HOME=/” c’est résolu. Pour celà j’ai modifier mon users.ldif en remplacant:

par

Il s’agit en fait du répertoire local de la machine.

J’ai ajouter le “/remote” afin d’éviter d’écraser le contenu du home “local” de l’utilisateur, j’ai donc créer manuellement les répertoires “test-admin” et “test-admin/remote” sur la machine cliente. A l’avenir il faudra que je trouve de quoi automatiser la création des /home/ lors de la première création. Il me semble qu’il y a quelque chose qui existe dans conjointement à l’ajout d’autofs dans l’annuaire openldap non ? skeldir ou je ne sais plus quoi…

Je viens de comprendre que la directive homeDirectory représente le point de montage (répertoire local) et non le répertoire distant monté. Donc forcément il pouvait toujours essayer de monter un répertoire local nommé “files.demo.intra:/home/test-admin”, il risquait pas d’y arriver.

Bon, je n’ai plus l’erreur “No directory, logging in with HOME=/”, mais je n’ai pas de montage du home distant vers le “/home/test-admin/remote” pour autant.

Chose bizarre: sur la machine “cliente”, j’ai réussi a créer mes répertoires “test-admin” et “test-admin/remote” et a leur changer de propriétaire pour que “test-admin” (utilisateur ldap) du groupe “admin-group” (groupe ldap) en soit le propriétaire. Pas eu de problème, la commande suivante a marcher sans problème:

Par contre sur le serveur NFS, je n’arrive pas à faire de même pour modifier les droits du “/home/test-admin” qui est censé être le home distant (vis a vis du client). La même commande me renvoie une erreur “usager invalide”.
Pourtant le nsswitch.conf est configuré pour utiliser openldap:

passwd: compat ldap
group: compat ldap
shadow: compat ldap

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis ldap

un “getent” sur le serveur NFS ne me renvoie aucun indice comme quoi il interroge le ldap.
Je vais regarder s’il n’y aurais pas un paquet que j’aurais oublier sur le serveur NFS, comme ldap-utils ou libnss-ldap

EDIT: ldap-utils ou libnss-ldap sont déjà installé. J’ai été voir du coté de pam, j’ai modifié mon pam.d/common-auth et pam.d/common-account de façon similaire à celle de ma machine cliente. Malheureusement il n’est toujours pas possible de “chowner” mon répertoire home distant…toujours “usager invalide”.
Je regarderais dans les autres fichiers de pam après avoir dodo, notamment peut être le fichier login.

[quote=“sharky_4”]
EDIT: ldap-utils ou libnss-ldap sont déjà installé. J’ai été voir du coté de pam, j’ai modifié mon pam.d/common-auth et pam.d/common-account de façon similaire à celle de ma machine cliente. Malheureusement il n’est toujours pas possible de “chowner” mon répertoire home distant…toujours “usager invalide”.
Je regarderais dans les autres fichiers de pam après avoir dodo, notamment peut être le fichier login.[/quote]

les fichiers pam.d : surtout pas sur le serveur.

c’est effectivement libnss-ldap qui doit être mal configuré.

ok, je vais essayer de trouver ce qui cloche avec libnss-ldap alors…je te tiens au jus.

[quote=“thomas.leclerc”]les fichiers pam.d : surtout pas sur le serveur.[/quote]sauf s’il est aussi client :wink:

Sinon, il est conseillé d’utiliser libnss-ldapd plutôt que libnss-ldap car certains bugs (au démarrage notamment) sont corrigés. Son copain libpam-ldapd n’est qu’en testing pour l’instant…

ben logiquement le serveur nfs, qui est ici une machine différente du serveur OpenLDAP, est donc bien considérer comme un “client ldap” non ?

[quote=“sharky_4”]ben logiquement le serveur nfs, qui est ici une machine différente du serveur OpenLDAP, est donc bien considérer comme un “client ldap” non ?[/quote]ben je dirais que oui.
ceci dit, le serveur ldap peut aussi être client de lui-même…

bon, j’avance au fur et a mesure. J’ai réussi à forcer le serveur nfs à utiliser le ldap, je peux donc enfin changer mes droits sur les répertoires.
Par contre je ne sais pas exactement comment ca s’est débloqué, j’ai essayer diverses choses. J’opterais peut être pour le redémarrage de nscd et nscld.

Bon maintenant le problème se situe au niveau du montage:

En effet sur la machine cliente j’ai opté pour la solution suivante:
Les répertoires /home distants sont montés dans “/home/remote”

Je créer donc mon répertoire “/home/remote/test-admin”, j’en fais la propriété du user “test-admin”.
Je configure ensuite mon auto.master en ajoutant:

/home/remote ldap://172.16.255.250/ou=export,ou=nfs,ou=services,ou=demo,ou=intra,dc=example --timeout 5

avec 172.16.255.250 l’adresse ip du serveur ldap

Du coup on voit bien le montage autofs, mais je me retrouve avec un montage “/home/remote” vide.
Du coup quand je me logue en “test-admin”, je retombe a nouveau sur une erreur de “no directory, logging in with HOME=/”

Est ce le contenu de mon auto.master qui est a revoir ? ou l’intrégration d’autofs dans openldap que j’ai peut petre mal fait ?

Salut,

OK

Non, pas avant; mais après le montage. Les droit seront “écrasés” par ceux fournit par le serveur nfs.

Essayes ça:

En effet, tu exporte /home, mais c’est /home/remote/test-admin qui t’intèrrèsse.

Maintenant, tu fais ton “chown”.

Ca devrait passer, en tout cas au niveau nfs(“3” sous-entendus).

Ici, j’ai:

SERVEUR nfs:

client nfs:

Droits AVANT montage:

#ls -l /media drwxr-xr-x 2 root root 4,0K sep 25 09:49 user
Droits APRES montage:

Je sais que ce n’est pas via LDAP mais ça résoud le problème de droits au montage(fournis par le serveur nfs!).

En ce qui concerne les options, je n’ai pas encore utilisé un “automonteur” mais j’imagine qu’il est possible de les fournirs lors de la requète auprès du serveur nfs. Elle ne sont pas toutes “forcément utiles ou bonnes”(ce sont des choix personnels ici), sauf “rsize” et “wsize”. Si leurs valeurs sont bien calibrées, elles peuvent radicalement changer les taux de transfert(ici de 17Mo/s à 44/mo/s).

A+

Debcool

ok merci, je regarde ca de près demain!

Désolé du double post a 1 jour d’intervalle.

Alors j’ai essayer différentes choses:

  1. J’ai effectivement essayer de changer les droits du rep monté “après” le montage, mais rien, je ne vois toujours pas le contenu du /home distant monté (soit le montage est un montage “fantôme”, soit je ne sais pas) toujours avec automount (même réglé pour monter le /home/test-admin distant au lieu de juste /home ).

  2. j’ai tenter un montage “direct” sans passer par ldap avec la commande:

ca semble monté. Je check avec mount et je vois bien:

je tente un

root@pd#ls /home/remote/test-admin
ls: cannot acess /home/remote/test-admin/test-admin.txt: permission denied
test-admin.txt

Donc problème de permission, mais il me liste quand même le contenu et y trouve bien le fichier .txt de test

on étend un peu le ls:

root@pd#ls -lah /home/remote/test-admin
ls: cannot acess /home/remote/test-admin/test-admin.txt: permission denied
ls: cannot acess /home/remote/test-admin/..: permission denied
ls: cannot acess /home/remote/test-admin/.bash_history: permission denied
ls: cannot acess /home/remote/test-admin/.: permission denied
total 0
d????????? ? ? ? ?  ? .
d????????? ? ? ? ?  ? ..
-????????? ? ? ? ?  ? .bash_history
?????????? ? ? ? ?  ? test-admin.txt

bon, vu que je suis en root sur le client, mais pas sur le montage nfs (directive “root_squash”) ca parait normal de ne pas avoir les droits(et c’est temps mieux d’un point de vue sécurité), ni même de lister les droits des répertoires montés (car par contre je trouve ca bizarre, mais je suppose que c’est normal aussi en fait).

Je change d’utilisateur(ayant les droits adéquats) et je revérifie:

root@pd#su - test-admin
test-admin@pd~$whoami
test-admin
test-admin@pd~$pwd
/home/remote/test-admin
test-admin@pd~$ls
test-admin.txt
test-admin@pd~$ls -lah
total 16K
drwxrwSrw- 2 test-admin admin-group 4.0k  2009-11-18 03:32 .
drwxr-xr-x 5 roo root 4.0k  2009-11-17 16:58 ..
-rw------- 1 test-admin admin-group 4.0k  2009-11-18 03:32 .bash_history
-rw-r--r-- 1 test-admin admin-group 4.0k  2009-11-01 13:20 test-admin.txt

Ça s’annonce plutôt pas mal…

J’essaie ensuite de visualiser le fichier (oui j’ai un "humour de merde de geek"concernant le contenu des fichiers test^^):

test-admin@pd~$cat test-admin.txt
bien joué petit admin en herbe

et d’écrire dedans (toujours le même “humour de merde de geek” ^^)

test-admin@pd~$echo "vive windows(nan je rigole)" >> test-admin.txt
test-admin@pd~$cat test-admin.txt
bien joué petit admin en herbe
vive windows(nan je rigole)

Visiblement le montage manuel du /home/test-admin distant dans /home/remote/test-admin se fait bien, mais quand il faut passer par autofs+openldap, ca ne marche pas (ou du moins j’ai aucune erreur, mais un répertoire monté “fantôme” qui ne reflète en fait pas le /home distant du serveur nfs).

Une idée ?