Mini Howto Proftpd + LDAP
Alejandro Valdés Jimenez
[email protected]
Diciembre 2005
1. Introducción
Este artículo pretende entregar una guía para configurar un servidor Proftpd con autenticación 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 verificar la existencia de tal usuario y validar la
clave en el servidor LDAP.
• El servidor LDAP, una ves verificado y autenticado el usuario, envia la información necesaria del
home del usuario.
• En estos momentos el usuario puede interactuar con el servidor (subir/bajar archivos).
Figura 1. Diagrama Autenticación
1
2. Proftpd
Mini Howto Proftpd + LDAP
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 características de este servidor FTP son;
• Archivo de configuración principal, con directivas y grupos de directivas muy intuitivas, similares a las
utilizadas en el Servidor web Apache.
• Fácil para configurar multiples servidores FTP virtuales y el servicio anonymous.
• Oculta directorios y archivos basandose en el estilo Unix para los permisos y grupos.
• Diseño modular, permitiendo al servidor extender fácilmente sus funcionalidades con módulos.
Algunos módulos han sido escritos para soportar comunicación con bases de datos SQL, servidores
LDAP, encriptación SSL/TLS, conección 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 guía de teléfonos que usamos para buscar números de teléfono, 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 búsquedas (leer datos). Las lecturas en LDAP e realizan de
manera mucho mas frecuente que las escrituras.
4. Programas a instalar
Esta configuración la estamos realizando en una máquina con sistema operativo GNU/Linux con
ditribución 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
2
5. Configuraciones
Mini Howto Proftpd + LDAP
En esta sección veremos la configuración básica para la autenticación.
5.1. /etc/proftpd.conf
En este archivo debemos indicar la información del servidor LDAP y la base de búsqueda:
...
(1) AuthOrder
(2) LDAPServer
(3) LDAPDoAuth
(4) LDAPAuthBinds
...
mod_ldap.c
"server_ldap"
on ou=usuarios,dc=midominio,dc=cl (uid=%v)
on
(1) indica el orden del los módulos para la autenticación, en este caso sólo
utilizará el módulo de LDAP.
(2) dirección IP o nombre de la máquina donde corre LDAP.
(3) filtro para la búsqueda.
(4) para enlazar con el servidor LDAP con el mismo usuario que se conecta.
5.2. Esquema LDAP
Para que la autenticación 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’
3
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
4
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
Además, se debe indicar al sistema que para algunas bases de datos debe buscar la información en otro
lugar. También se establecen alternativas de búsqueda en caso de no encontrarla en una de ellas.
...
passwd:
group:
shadow:
...
ldap files
ldap files
ldap files
Aquí se indica que la información correpondientes a usuarios, grupos y claves las busque en primer lugar
en el servidor ldap, de no encontrar la información, entonces buscar en los archivos (files).
Nunca hay que dejar fuera la alternativa files, pues para el caso del usuario root la información siempre
debe estar local y no depender de otro servicio.
6. Enlaces
Estos son algunos enlaces que se utilizaron para la implementación de proftpd + ldap.
• The ProFTPD Project Home: http://www.proftpd.org/
• Modulo LDAP para Proftpd: http://horde.net/~jwm/software/mod_ldap/
5
Comentarios de: Mini Howto Proftpd + LDAP (0)
No hay comentarios