You are on page 1of 5

Mini Howto Proftpd + LDAP

Alejandro Valds Jimenez


avaldes@utalca.cl Diciembre 2005

1. Introduccin
Este artculo pretende entregar una gua para congurar un servidor Proftpd con autenticacin con un servidor LDAP. Como muestra la Figura 1, los clientes que intenten conectarse al servidor FTP deben:

Enviar su nombre de usuario y la clave cuando se le solicite. Una ves enviado estos datos, el servidor FTP debe vericar la existencia de tal usuario y validar la clave en el servidor LDAP. El servidor LDAP, una ves vericado y autenticado el usuario, envia la informacin necesaria del home del usuario. En estos momentos el usuario puede interactuar con el servidor (subir/bajar archivos).

Figura 1. Diagrama Autenticacin

Mini Howto Proftpd + LDAP

2. Proftpd
Professional FTP Daemon es un servidor FTP (File Transfer Protocolo, Protocolo de Transferencia de archivos) escrito para ser usado en sistemas operativos Unix y sabores-Unix. No tiene soporte nativo para usar bajo Microsoft Windows. Algunas de las caractersticas de este servidor FTP son;

Archivo de conguracin principal, con directivas y grupos de directivas muy intuitivas, similares a las utilizadas en el Servidor web Apache. Fcil para congurar multiples servidores FTP virtuales y el servicio anonymous. Oculta directorios y archivos basandose en el estilo Unix para los permisos y grupos. Diseo modular, permitiendo al servidor extender fcilmente sus funcionalidades con mdulos. Algunos mdulos han sido escritos para soportar comunicacin con bases de datos SQL, servidores LDAP, encriptacin SSL/TLS, coneccin a RADIUS, etc.

3. LDAP
LDAP (Lightwieght Directory Access Protocol), o Protocolo de Acceso a Directorios Ligeros es un servicio de directorio, muy similar a los directorios del sistema de archivos al que estamos acostumbrados o a la gua de telfonos que usamos para buscar nmeros de telfono, o al servicio DNS (Domain Name Service). LDAP es una base de datos especializada. Es muy importante recordar que LDAP no es otra base de datos mas, LDAP et optimizada para hacer bsquedas (leer datos). Las lecturas en LDAP e realizan de manera mucho mas frecuente que las escrituras.

4. Programas a instalar
Esta conguracin la estamos realizando en una mquina con sistema operativo GNU/Linux con ditribucin GNU/Debian (testing/unstable), con kernel 2.6.13. Los programas/versiones utilizados son:

proftpd-common 1.2.10-26 proftpd-doc 1.2.10-26 proftpd-ldap 1.2.10-26 slapd 2.2.26-5

Mini Howto Proftpd + LDAP

5. Conguraciones
En esta seccin veremos la conguracin bsica para la autenticacin.

5.1. /etc/proftpd.conf
En este archivo debemos indicar la informacin del servidor LDAP y la base de bsqueda:
... (1) (2) (3) (4) ...

AuthOrder LDAPServer LDAPDoAuth LDAPAuthBinds

mod_ldap.c "server_ldap" on ou=usuarios,dc=midominio,dc=cl (uid=%v) on

(1) indica el orden del los mdulos para la autenticacin, en este caso slo utilizar el mdulo de LDAP. (2) direccin IP o nombre de la mquina donde corre LDAP. (3) filtro para la bsqueda. (4) para enlazar con el servidor LDAP con el mismo usuario que se conecta.

5.2. Esquema LDAP


Para que la autenticacin funcione, el esquema debe tener algunos atributos y clase de objeto adicionales, estos son:
... # Posix attributes attributetype ( 1.3.6.1.1.1.1.3 NAME homeDirectory DESC The absolute path to the home directory EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.1.1.1.4 NAME loginShell DESC The path to the login shell EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.1.1.1.1 NAME gidNumber DESC An integer uniquely identifying a group in an administrative domain EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) attributetype ( 1.3.6.1.1.1.1.0 NAME uidNumber DESC An integer uniquely identifying a user in an administrative domain

Mini Howto Proftpd + LDAP


EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) attributetype ( 1.3.6.1.1.1.1.12 NAME memberUid EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) ... objectclass ( 2.5.6.6 NAME person DESC RFC2256: a person SUP top STRUCTURAL MUST ( rut $ dv $ userPassword $ uid $ apepat $ apemat $ prinom ) MAY ( segnom $ homeDirectory $ loginShell $ gidNumber $ uidNumber ) ) # Posix objectClass objectclass ( 1.3.6.1.1.1.2.0 NAME posixAccount SUP top AUXILIARY DESC Abstraction of an account with POSIX attributes MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ description ) ) objectclass ( 1.3.6.1.1.1.2.2 NAME posixGroup SUP top STRUCTURAL DESC Abstraction of a group of accounts MUST ( cn $ gidNumber ) MAY ( userPassword $ memberUid $ description ) ) ...

5.2.1. Ejemplo LDIF


Este es un ejemplo para subir los grupos al LDAP.
grupos.ldif dn: cn=grupos, dc=midominio, dc=cl objectclass: posixGroup cn: grupos gidNumber: 100 memberUid: usuario1 memberuid: usuario2 ... usuarios.ldif dn: uid=usuario1,ou=usuarios,dc=mydominio,dc=cl objectClass: person uid: usuario1 apepat: valdes apemat: jimenez

Mini Howto Proftpd + LDAP


prinom: alejandro segnom: mauricio userPassword: {CRYPT}AYa.0zPsSa2vA gidNumber: 100 loginShell: /bin/bash homeDirectory: /home/usuarios/usuario1/ uidNumber: 1050 ...

Para agregar estos datos, ejecutar el siguiente comando:


ldapadd -x -f grupos.ldif -D "cn=admin,dc=midominio,dc=cl" -W

5.3. /etc/nsswitch.conf
Adems, se debe indicar al sistema que para algunas bases de datos debe buscar la informacin en otro lugar. Tambin se establecen alternativas de bsqueda en caso de no encontrarla en una de ellas.
... passwd: group: shadow: ... ldap files ldap files ldap files

Aqu se indica que la informacin correpondientes a usuarios, grupos y claves las busque en primer lugar en el servidor ldap, de no encontrar la informacin, entonces buscar en los archivos (les). Nunca hay que dejar fuera la alternativa les, pues para el caso del usuario root la informacin siempre debe estar local y no depender de otro servicio.

6. Enlaces
Estos son algunos enlaces que se utilizaron para la implementacin de proftpd + ldap.

The ProFTPD Project Home: http://www.proftpd.org/ Modulo LDAP para Proftpd: http://horde.net/~jwm/software/mod_ldap/

You might also like