Authentification des utilisateurs avec OpenLDAP + OpenSSH

Authentification des utilisateurs avec OpenLDAP + OpenSSH - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 07-12-2007 à 15:42:25    

Bonjour,  :hello:  
 
Je suis actuellement à la recherche d'une solution qui permettrait de faire du SSO sous Linux pour ne pas avoir à s'authentifier à chaque fois sur un grand nombre de serveurs.
 
Si vous avez mis en place ce type de solutions, je suis preneur de votre retour d'expérience  :jap:  
 
Je pense par exemple à l'utilisation de Kerberos + SSH pour faire du SSO ...


Message édité par tsunamijf le 14-12-2007 à 10:18:44

---------------
PSN : julien_fr38
Reply

Marsh Posté le 07-12-2007 à 15:42:25   

Reply

Marsh Posté le 07-12-2007 à 15:44:40    

Je ne sais pas comment tu te connectes à ces serveurs, mais si c'est via SSH uniquement, as tu pensé à un ssh-agent (+ authentication par clé RSA ou DSA) ?


Message édité par o'gure le 07-12-2007 à 15:46:59

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 07-12-2007 à 16:06:31    

Oui, la connexion vers ces serveurs se fait via SSH uniquement.
 
En fait, je souhaite éviter d'avoir à rajouter les clés publiques des personnes qui pourront intervenir durant le cycle de vie du projet sur certains des serveurs.
 
Je viens de voir un patch qui était disponible pour OpenSSH => OpenSSH LDAP Public Key patch
 
Le but de ce patch serait de centraliser les clés publiques des utilisateurs sur un serveur LDAP plutôt que dans les home directory des serveurs (authorized_keys), ca a l'air pas mal comme solution ...
 


---------------
PSN : julien_fr38
Reply

Marsh Posté le 09-12-2007 à 10:46:53    

up :)
 
personne n'a mis en place une solution avec le patch openssh ldap public key ? :??:


---------------
PSN : julien_fr38
Reply

Marsh Posté le 09-12-2007 à 12:23:07    

tsunamijf a écrit :

up :)
 
personne n'a mis en place une solution avec le patch openssh ldap public key ? :??:


 
 
 
c'est tout expliqué dans le hors serie linux magazine de ce mois coi

Reply

Marsh Posté le 09-12-2007 à 13:37:27    

tu parles du n° 100 ?
c'est un sujet disponible sur le CD  ou bien un article papier ?
car je viens de parcourir la version "web papier" et je n'ai pas trouvé (difficile de deviner tous les articles en raison de la taille des polices) un article qui parle d'openssh avec ldap public key
 
merci :)


---------------
PSN : julien_fr38
Reply

Marsh Posté le 09-12-2007 à 15:24:41    

j'ai jeté un coup d'oeil dans un magazin de presse y a bien article concernant ce sujet
 
voila: http://ed-diamond.com/feuille_lmag100/damag-000038.jpg


Message édité par dam1330 le 09-12-2007 à 15:27:05
Reply

Marsh Posté le 14-12-2007 à 08:57:07    

Voilà,
 
L'authentification par clé publique avec OpenSSH et OpenLDAP fonctionne.
La clé publique est stockée dans l'annuaire LDAP et lorsqu'un utilisateur se connecte à un serveur lambda, celui-ci va chercher les informations sur l'utilisateur directement dans l'annuaire LDAP.
 
Maintenant, je me retrouve face à un autre problème qui je pense à une solution :)
Comment mettre en place avec OpenSSH (patché avec Lpk) et OpenLDAP pour autoriser un utilisateur à se connecter seulement sur certains serveurs du parc...  
Car si je configure OpenSSH sur tous mes serveurs "clients" pour que l'authentification repose sur OpenLDAP, l'utilisateur pourra se connecter sur tous les serveurs, hors, je souhaite pouvoir contrôler les accès aux ressources.
 
quelqu'un aurait une idée ? une piste ?  :jap:

Message cité 1 fois
Message édité par tsunamijf le 14-12-2007 à 08:57:49

---------------
PSN : julien_fr38
Reply

Marsh Posté le 14-12-2007 à 11:06:59    

tsunamijf a écrit :

Voilà,
 
L'authentification par clé publique avec OpenSSH et OpenLDAP fonctionne.
La clé publique est stockée dans l'annuaire LDAP et lorsqu'un utilisateur se connecte à un serveur lambda, celui-ci va chercher les informations sur l'utilisateur directement dans l'annuaire LDAP.
 
Maintenant, je me retrouve face à un autre problème qui je pense à une solution :)
Comment mettre en place avec OpenSSH (patché avec Lpk) et OpenLDAP pour autoriser un utilisateur à se connecter seulement sur certains serveurs du parc...  
Car si je configure OpenSSH sur tous mes serveurs "clients" pour que l'authentification repose sur OpenLDAP, l'utilisateur pourra se connecter sur tous les serveurs, hors, je souhaite pouvoir contrôler les accès aux ressources.
 
quelqu'un aurait une idée ? une piste ?  :jap:


man sshd_config -> AllowUsers
ça vous arrive de vous documenter avant de mettre des services en place ????

Reply

Marsh Posté le 14-12-2007 à 11:20:39    

Ok pour cette option, elle répond à une partie de mes attentes, c'est à dire autoriser/interdire l'accès à des utilisateurs.
 
Je cherchais plutôt à autoriser/interdire l'accès à des serveurs grâce à OpenLDAP, mais je ne suis pas sur que cela soit possible ...
 
Avoir cette information par LDAP me permettrait de centraliser facilement cette information (savoir pour l'utilisateur X, qu'il peut se connecter sur les serveurs A,B et C).
 
Alors qu'avec AllowUsers, si un utilisateur dispose des autorisations pour se connecter sur 100 serveurs, il faudra renseigner AllowUsers pour les 100 serveurs ... :(


Message édité par tsunamijf le 14-12-2007 à 11:21:11

---------------
PSN : julien_fr38
Reply

Marsh Posté le 14-12-2007 à 11:20:39   

Reply

Marsh Posté le 14-12-2007 à 20:25:09    

regarde le linuxmag n°100 :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 15-12-2007 à 00:52:03    

dans ce linuxmag, ils montrent juste l'installation du patch pour openssh, y'a rien qui répond à mon besoin dans ce qu'ils proposent, ou alors je suis vraiment passé à côté ... :ange:


---------------
PSN : julien_fr38
Reply

Marsh Posté le 15-12-2007 à 14:26:42    

Pour apporter un début de réponse à ce problème ... j'ai trouvé le paramètre "host" qui peut être rajouté dans la définition d'un utilisateur dans LDAP.
 
exemple :
dn: cn=monuser,ou=users,dc=toto,dc=fr
objectclass: posixAccount
[...]
uid: ...
gid: ...
host = serveurA
host = serveurB
 
 
Avec l'attribut host, l'utilisateur pourra se connecter uniquement sur les serveurs déclarés (ici, serveurA et serveurB).
Je vais essayer de mettre en place cette configuration.
 
A priori, ca réponds à mon besoin.
 
Si vous avez des avis/suggestions sur cet attribut, je reste preneur :)


---------------
PSN : julien_fr38
Reply

Marsh Posté le 18-06-2008 à 10:03:31    

Bonjour all,
 
dis moi tsunamijf aurais tu un peu de temps pour parler de ce projet ? par mail ou autre  
 
merci d'avance

Reply

Marsh Posté le 19-06-2008 à 10:20:55    

j'essaye d'inserer ca avec la commande ldapadd -x -D "cn=god,dc=test,dc=org" -v -W -f /tmp/passwd.ldif :
 

Code :
  1. dn: uid=toto,ou=user,dc=test,dc=org
  2. uid: toto
  3. cn: toto
  4. sn: toto
  5. objectClass: person
  6. objectClass: organizationalPerson
  7. objectClass: posixAccount
  8. objectClass: top
  9. objectClass: ldapPublicKey
  10. userPassword: {crypt}$1$5KOSxxiQ$wKN7BjioqdmqrSf96TvEO1
  11. loginShell: /bin/bash
  12. uidNumber: 501
  13. gidNumber: 501
  14. homeDirectory: /home/toto
  15. sshPublicKey: AAAA
  16. host = srvtest2
  17. host = srvtest3


 
j'ai essayé aussi avec host = 192.168.2.22
 
et ca me donne :
 
ldapadd: invalid format (line 16) entry: "uid=toto,ou=user,dc=test,dc=org"
 
et la ligne 16 c'est le premier host =
 

Reply

Marsh Posté le 19-06-2008 à 11:16:19    

Dans ton .ldif, essaies de mettre que ces Objectclass dans cet ordre :
 
objectclass: top
objectclass: posixAccount
objectclass: account
objectclass: ldapPublicKey
 
Je crois me souvenir que l'attribut host n'est utilisable qu'avec l'objectclass posixAccount et/ou sans la présence de l'objectclass person ... à valider  :sweat:  
 
Bien vérifier également que tes schémas sont définis dans ta conf slapd et qu'ils existent bien dans le répertoire de stockage des schémas.


---------------
PSN : julien_fr38
Reply

Marsh Posté le 19-06-2008 à 11:17:18    

Dans ton .ldif, essaies de mettre que ces Objectclass dans cet ordre :
 
objectclass: top
objectclass: posixAccount
objectclass: account
objectclass: ldapPublicKey
 
Je crois me souvenir que l'attribut host n'est utilisable qu'avec l'objectclass posixAccount et/ou sans la présence de l'objectclass person ... à valider  :sweat:  
 
Bien vérifier également que tes schémas sont définis dans ta conf slapd et qu'ils existent bien dans le répertoire de stockage des schémas.


---------------
PSN : julien_fr38
Reply

Marsh Posté le 19-06-2008 à 11:55:51    

sur la doc du patcheur lpk de openssh
 
http://dev.inversepath.com/trac/openssh-lpk
 
objectclass: person  
 
:pt1cable:  

Reply

Marsh Posté le 19-06-2008 à 14:10:49    

Oui mais dans son exemple, il n'utilise pas la clause "host".
 
Pour utiliser la clause host, il faut l'objectclass "account" (et non pas posixAccount comme je le pensais + haut) :)


---------------
PSN : julien_fr38
Reply

Marsh Posté le 19-06-2008 à 16:34:13    

on peut avoir les deux ou pas ?

Reply

Marsh Posté le 19-06-2008 à 16:47:32    

j'arrive pas a integrer ce fichier ldap
ca me met une erreur :
 
adding new entry "uid=pelo,ou=user,dc=test,dc=org"
modify complete
ldap_add: Internal (implementation specific) error (80)
        additional info: no structuralObjectClass operational attribute
 

Code :
  1. dn: uid=pelo,ou=user,dc=test,dc=org
  2. uid: pelo
  3. cn: pelo
  4. sn: pelo
  5. objectClass: top
  6. objectClass: account
  7. objectClass: person
  8. objectClass: posixAccount
  9. objectClass: organizationalPerson
  10. objectClass: ldapPublicKey
  11. userPassword: {crypt}$1$4NsAgT/P$6auoLgGEAQyVf8akV864M/
  12. loginShell: /bin/bash
  13. uidNumber: 504
  14. gidNumber: 504
  15. homeDirectory: /home/pelo
  16. sshPublicKey: DDDD
  17. host: 192.168.69.2


Message édité par gangan2 le 20-06-2008 à 10:45:37
Reply

Marsh Posté le 20-06-2008 à 10:42:38    

je crois que j'ai réussi à trouver le bon ldif pour les comptes
 

Code :
  1. dn: uid=titi,ou=user,dc=test,dc=org
  2. uid: titi
  3. cn: titi
  4. objectClass: posixAccount
  5. objectClass: top
  6. objectClass: account
  7. objectClass: ldapPublicKey
  8. userPassword: {crypt}$1$4NsAgT/P$6auoLgGEAQyVf8akV864o/
  9. loginShell: /bin/bash
  10. uidNumber: 506
  11. gidNumber: 506
  12. homeDirectory: /home/titi
  13. sshPublicKey: EEEE
  14. host: 192.168.69.5


 
il y a tout ce qui faut la non ?


Message édité par gangan2 le 20-06-2008 à 10:45:57
Reply

Marsh Posté le 23-06-2008 à 09:36:04    

je viens de faire un test avec un utilisateur qui existe dans mon annuaire ldap  
 
May 22 04:11:56 srvtest3 sshd[6738]: pam_unix(sshd:session): session opened
for user root by (uid=0)
May 22 04:28:13 srvtest3 sshd[6803]: error: Could not get shadow information for tata
May 22 04:28:13 srvtest3 sshd[6803]: Accepted password for tata from 192.168.2.216 port 41815 ssh2
 
il passe totalement outre les attributs host, sshPublicKey

Reply

Marsh Posté le 23-06-2008 à 11:42:45    

Il faut modifier les stratégies d'authentification de tes serveurs pour prendre en compte une authentification forcée sur ton annuaire ldap


---------------
PSN : julien_fr38
Reply

Marsh Posté le 23-06-2008 à 11:45:15    

donc pam ? /etc/pam.d/sshd ? faut compiler sshd+lpk avec le flag ldap enable ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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