# [OPENLDAP] PosixGroup pour authentification Proftpd ?

## Manuuu

Bonjour à tous, 

Je viens d'installer un serveur OpenLDAP afin de gérer toute les authentification de mon système, à savoi : Linux (pam), Proftpd, Apache et j'en passe. L'authentification PAM fonctionne très bien, néanmoins, je n'arrive pas à faire fonctionner l'authentification Proftpd via un posixGroup. 

Voici ma structure :  

Ou=Groups 

 Cn = ftp (posixGroup auquel j'attache x utilisateurs) 

Ou=Peoples 

  Ou=France 

    cn=Pierre 

    cn=Jean 

etc ... 

J'ai créé le groupe posix "ftp" afin de n'autoriser l'accès FTP qu'aux utilisateurs rattachés. Or, je n'arrive pas à modifier mon proftpd.conf pour qu'ils y accèdent. Il semblerait que proftpd sache lire dans ou=France mais pas dans cn=ftp. J'ai également essayé avec un groupOfNames ... rien à faire. Impossible de mettre des filtres. 

Ma config proftpd :  

qui Fonctionne  

Code :

```
DAPDoAuth on "ou=France,ou=Peoples,dc=mydomain,dc=com"
```

qui ne foncitonne pas :  

Code :

```

#LDAPAttr memberUid uid (j'ai tenté ça ne fonctionne pas mieux) 

LDAPDoAuth on "cn=ftp,ou=groups,dc=mydomain,dc=com"
```

et c'est pas mieux avec des filtres. 

Merci de votre aide !Last edited by Manuuu on Tue Feb 12, 2008 9:38 am; edited 1 time in total

----------

## X-Guardian

Salut,

J'installe ProFTPd, je teste et je te dis quoi d'ici quelques heures ^^ :p

@+,

Guile.

----------

## Manuuu

ça c'est gentil

à mon avis c'est juste un param  :Very Happy: 

http://www.fridim.org/friwiki/SuiviLDAP

----------

## geekounet

Salut et bienvenue !

Peux-tu mettre ton titre du topic en conformité avec les conventions de notre forum s'il te plait ? Merci  :Smile: 

----------

## Manuuu

j'ai cru avoir trouvé  :Sad:  avec : 

LDAPDoAuth on "dc=ldap,dc=mydomain,dc=com"

LDAPDoUIDLookups on "ou=France,ou=Peoples,dc=ldap,dc=mydomain,dc=com"

LDAPDoGIDLookups on "cn=ftp,ou=Groups,dc=ldap,dc=mydomain,dc=com"

Mais si je supprime l'user de ftp ça marche quand même, mince

----------

## Manuuu

pour info voilà ce que le serveur me repond : 

```

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 fd=16 ACCEPT from IP=xx.xx.xx.xx:58029 (IP=0.0.0.0:636)

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 fd=16 TLS established tls_ssf=256 ssf=256

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 op=0 BIND dn="" method=128

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 op=0 RESULT tag=97 err=0 text=

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 op=1 SRCH base="cn=ftp,ou=Groups,dc=ldap,dc=mydomain,dc=com" scope=2 deref=0 filter="(&(memberUid=monuser)(objectClass=posixGroup))"

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 op=1 SRCH attr=uid uidNumber gidNumber homeDirectory loginShell

Feb 12 10:52:47 ns24120 slapd[887]: <= bdb_equality_candidates: (memberUid) not indexed

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 op=2 SRCH base="cn=ftp,ou=Groups,dc=ldap,dc=mydomain,dc=com" scope=2 deref=0 filter="(&(memberUid=monuser)(objectClass=posixGroup))"

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 op=2 SRCH attr=gidNumber cn

Feb 12 10:52:47 ns24120 slapd[887]: <= bdb_equality_candidates: (memberUid) not indexed

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=

Feb 12 10:52:47 ns24120 slapd[887]: conn=254 fd=16 closed (connection lost)

```

et j'ai bien un memberId = monuser dans mon groupe FTP

Il a l'air de trouver une correspondance et, voici la reponse dans filezilla :

```
Response:   220 ProFTPD 1.3.1rc2 Server (ProFTPD Default Installation) [xx.xx.xx.xx]

Command:   USER monuser

Error:   Disconnected from server

Error:   Unable to connect!

Status:   Waiting to retry... (5 retries left)
```

et dans /var/log/message : 

```

FTP session opened.

```

et c'est tout ....

----------

## Manuuu

en fait mon probleme est la création d'un filtre : 

Trouver tous les posixAccount (nom de l'objet) qui sont membres du groupe "ftp" (c'est un posixGroup / ftp est un cn)

----------

## X-Guardian

Salut,

J'ai passé un peu de temps au boulot, mais je n'ai pas réussi à avoir ce que tu voulais.

J'ai appris qu'il y avait des schemas pour ldap de proftpd et pure-ftpd.

L'ebuild de proftpd ne contient pas de schema, celui de pure-ftp si.

J'ai donc installé pure-ftpd et j'ai essayé d'utiliser son schéma (après l'avoir débuggué, il y a une erreur ligne 64 je crois, un mot répété 2 fois ... version stable bien entendue :p)

Mais je n'ai pas eu de succès, LDAP me refuse l'emploie de ce schéma, il me manquerait quelque chose, et je ne vois pas quoi. (schéma qui date de 2002 d'après les commentaires)

Je reverrais demain, faut que je me plonge plus en avant dans la doc, là le ftp que j'ai mis en place (avec une recherche sur "ou=users,dc=mondomaine,dc=quelquechose") permettait à l'utilisateur de se ballader sur la machine hôte.

Mon but n'est pas de mettre en place un ftp fonctionnel et sécurisé, juste de voir l'interaction avec OpenLDAP mais tant qu'à faire, çà pourrait peut-être servir à certains collègues.

@+,

Guile.

----------

## Manuuu

Salut et merci de ton aide, en fait j'ai pas mal avancé aussi de mon côté.

Je ne veux pas utiliser de schemas, je veux gérer directement via des groupes.

donc je créé des utilisateurs, des groupes et j'assigne les premiers aux deuxiemes. Ensuite, j'indique à mon appli d'aller verifier dans ce groupe les utilisateurs et c'est là que ça coince. Dans Apache, j'écris ceci : 

```

LDAPTrustedCA  /etc/ssl/cacert.pem

LDAPTrustedCAType BASE64_FILE

<Location /ldap-status>

Order deny,allow

Deny from All

AuthName "Company.com Intranet"

AuthType Basic

AuthLDAPUrl ldaps://ldap.company.com/ou=Peoples,dc=ldap,dc=company,dc=com?uid

AuthLDAPGroupAttribute memberUid

AuthLDAPGroupAttributeIsDN off

Require ldap-group cn=ftp,ou=Groups,dc=ldap,dc=company,dc=com

Require ldap-attribute gidNumber=1001

Satisfy any

</Location>

```

et là ça va plus. Il n'en a rien à faire du groupe .... je peux me logger avec tout le monde. Pareil avec proftpd. 

Si je passe directement, dans l'url du serveur le groupe, ça coince completement, je n'ai plus accès à rien.

----------

## DidgeriDude

Et la directive DefaultRoot ne t'aiderait-elle pas ?

----------

## X-Guardian

Salut,

DigeriDude -> Exact, c'était bien l'option qu'il me manquait.

Je l'ai vu dans pas mal de conf, mais je n'avais pas essayé, me concentrant sur l'authentification.

Bon, je retourne à cette histoire ... 

J'aimerais vraiment arriver à faire de tout concernant l'authentification centralisée avec LDAP.

Visiblement les LDAPs sont assez mis de coté par rapport au BDD comme mysql ... dommage. (Je parle en terme de documentation exhaustive, détaillée, ...)

@+,

Guile.

----------

## Manuuu

X-Guardian, t'as pas un skype ?  :Smile: 

autant qu'on le fasse ensemble !

----------

## DidgeriDude

 *X-Guardian wrote:*   

> Bon, je retourne à cette histoire ... 
> 
> J'aimerais vraiment arriver à faire de tout concernant l'authentification centralisée avec LDAP.
> 
> Visiblement les LDAPs sont assez mis de coté par rapport au BDD comme mysql ... dommage. (Je parle en terme de documentation exhaustive, détaillée, ...)

 

Je n'ai pas tout saisi : ça marche pour ton FTP ?

Si oui, pourrais-tu reposer exactement ici ce que tu cherches à faire d'autre avec LDAP parce que là, j'avoue ne plus trop savoir où tu en es !!   :Wink: 

----------

## X-Guardian

Salut,

DidgeriDude -> Tout comme Manuuu :

Créer un groupe "FTP" dans OpenLDAP avec une liste d'utilisateurs associés.

ProFTPd ne doit accepter que les utilisateurs appartenant au groupe "FTP" puis ensuite vérifier leur login/mdp.

Par défault, j'ai mis çà :

```

LDAPServer LDAP.mondomaine.fr:389

LDAPDoAuth on "ou=utilisateurs,dc=mondomaine,dc=fr" 

LDAPDNInfo cn=admin,dc=mondomaine,dc=fr

```

=> ProFTPd autorise donc tous mes utilisateur.

Puis j'ai essayé avec un schéma "FTP" (celui livré avec Pure-FTPd)

```

LDAPServer LDAP.mondomaine.fr:389

LDAPDoAuth on "ou=utilisateurs,dc=mondomaine,dc=fr" "(FTPStatus=TRUE)"

LDAPDNInfo cn=admin,dc=mondomaine,dc=fr

```

 => Seuls les utilisateurs avec l'option FTPStatus attribué et activé (TRUE) peuvent se logguer.

Cela ne va pas, il faut modifier alors chaque compte qui nous intéresse.

Autre solution :

```

LDAPServer LDAP.mondomaine.fr:389

LDAPDoAuth on "cn=Ftp,ou=groupes,dc=pacthainaut,dc=fr" "(&(memberUid=%v)(objectClass=posixGroup))"

LDAPDNInfo cn=admin,dc=mondomaine,dc=fr

```

=> Moi, ProFTPd me rejette (ne trouve pas l'uid dans "FTP" ... en même temps c'est normal), pour Manuuu apparement çà passe, mais le loggue ne se dait pas (...)

Bref, on en est là  :Smile: 

@+,

Guile.

Edit : comme on peut le voir, ProFTPd doit faire 2 filtres à deux endroits différents :

* Sur "cn=ftp,ou=groupes,dc=mondomaine,dc=fr" pour vérifier si l'utilisateur est bien dans la liste des "memberUid".

* Sur "ou=utilisateurs,dc=mondomaine,dc=fr" pour rechercher si le login et le mdp sont correctes.

Et çà, je ne sais pas du tout comment demander à ProFTPd de le faire, voir s'il en est capable aujourd'hui.

----------

## DidgeriDude

Tu peux peut-être contourner le problème avec DefaultRoot en chrootant les gus qui ne sont pas dans le groupe ftp dans un dossier vide...

Bon OK, c'est un hack à la noix...

Concernant l'option FTPStatus=TRUE, il est vrai qu'il faut modifier les comptes un par un, mais cela me parait relativement faisable via un script qui génère un fichier .ldif qui va bien et un petit coup de ldapmodify devrait conclure cette histoire.

C'est encore un hack, mais moins à la noix que le précédent, et cela semble résoudre le problème !

----------

## DidgeriDude

Une autre idée : LDAPDoGIDLookups.

J'avoue ne pas avoir regardé en détails mais il semble que cela permettrait d'affiner sérieusement les requêtes au serveur LDAP !

----------

## Manuuu

salut et merci de tes reponses : 

LDAPDoGIDLookups ne marche pas pour moi

----------

