Documentation : Accès FTP avec PureFTPd et LDAP
Date de publication : 16.7.2004
Date de modification : 9.11.2005
|
|
Introduction
Ce document va expliquer comment mettre en place une authentification FTP au travers des démons PureFTPd et LDAP.
Pré-requis
Un serveur sous linux, un accès root, les outils de développements et de compilations linux (gcc, make, etc.), OpenLDAP.
Mise en condition
Pour installer cette authentification, il nous faut télécharger au préalable PureFTPd
Nous allons utiliser des utilisateurs virtuels ce qui nous permettra de ne pas créer autant de compte que d'utilisateurs FTP sur notre serveur.
De plus, nous allons les limiter au niveau quota, bande passante en upload et download, nombre de clients FTP autorisé.
Installation de pureftpd source
Télécharger les sources de pureftpd à partir de http://www.pureftpd.org
Décompressez l'archive dans un répertoire de votre choix, par exemple :
cd /usr/local/sources/
tar -zxvf pureftpd_version.tar.gz
Rendez-vous dans le répertoire source de PureFTPd.
cd pureftpd_version
Pour compiler et installer PureFTPd, suiver les instructions suivantes :
|
Explication des options de compilation :
|
- Installation du script de démarrage init.d
|
Et voila, PureFTPd avec LDAP est installé.
Configuration de PureFTPd
Créer un répertoire pure-ftpd dans /etc
mkdir /etc/pure-ftpd
- Créer le fichier de configuration PureFTPd qui sera chargé au lancement et qui inclus le support de LDAP.
vi pureftp-ldap.conf
################################################
LDAPServer urlduserveurldap # (localhost ou ldap.zataz.net par exemple)
LDAPPort 389 # Port du serveur LDAP
LDAPBaseDN ou=utilisateurs,dc=zataz,dc=net # Base de recherche pour les comptes utilisateurs
LDAPBindDN cn=admin,dc=dclux,dc=com # Rajouter l'administrateur LDAD afin de pouvoir parcourir l'annuaire LDAP
LDAPBindPW test # Mot de passe en claire de l'administrateur LDAP (huhu ... pas bien cela)
LDAPDefaultUID 405 # Utilisateur par défault si l'utilisateur n'est pas reconnu (ici nobody)
LDAPDefaultGID 100 # Groupe par défault si l'utilisateur n'est pas reconnu (ici nobody)
LDAPVersion 3 # Version de LDAP utilisée
Configuration de LDAP
Il nous faut maintenant, rajouter le schema PureFTPd dans slapd.conf de OpenLDAP
Editez le fichier slapd.conf et rajouter ceci :
include /etc/openldap/schema/pureftpd.schema
Le schéma d'accès à pureftpd.schema dépend bien sur de votre distribution
Vérifier bien si les utilisateurs anonymes n'ont pas accès à la branche qui va contenir les logins et mots de passe de vos utilisateurs.
Pour cela regarder la partie access right de slapd.conf
* Ajout des premiers utilisateurs par fichier LDIF :
Si vous avez déjà une arborescence LDAP, je pense que je n'ai rien à vous expliquer :)
Sinon, prenons cet exemple ci-dessous pureftpaccount.ldif :
dn: dc=zataz,dc=net
objectclass: dcObject
objectclass: organization
o: zataz
dc: zataz
dn: cn=admin,dc=zataz,dc=net
objectclass: organizationalRole
cn: admin
dn: ou=utilisateurs,dc=zataz,dc=net
objectclass: organizationalUnit
objectclass: top
ou: utilisateurs
description: utilisateurs
dn: cn=wow, ou=utilisateurs, dc=zataz, dc=net
sn : wow
FTPUploadRatio: 1 # Ratio upload
userPassword: motdepassecrypte # Par la commande ldappasswd
ou: zataz
FTPQuotaFiles: 10000 # Nombre de fichiers max.
uidNumber: 1001 # Utilisateur apache
gidNumber: 101 # Groupe ftp_only
FTPDownloadRatio: 5 # Ration download
FTPStatus: enabled # Si disabled, le compte ne pourra être accéder
objectClass: person
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: organizationalUnit
objectClass: PureFTPdUser
uid: wow # Login de connexion
FTPQuotaMBytes: 10000 # Nombre de MBytes max. autorisé
FTPUploadBandwidth: 50 # KBytes max. autorisé pour upload
FTPDownloadBandwidth: 50 # KBytes max. autorisé pour upload
homeDirectory: /home/wow # Home directory virtuel
Importer ce fichier dans LDAP
ldapadd -x -D "cn=admin,dc=zataz,dc=net" -W -f pureftpdaccount.ldif
Le mot de passe administrateur vous sera demander pour importer ce fichier.
Lancement de pureftpd et test
Créer le répertoire /home/wow, tout en sachant que les options de lancement de PureFTPd permettent de le créer dès la premières connexion.
Pour lancer PureFTPd :
/usr/local/pure-ftpd/sbin/pure-ftpd -l ldap:/usr/local/pure-ftpd/etc/pureftpd.conf &
Pour tester vous savez ce qu'il vous reste à faire :)
Contributeur : Eric Romang