Servidor proFTPd: Usuarios virtuales con LDAP
Al igual que otros muchos servicios proftp puede almacenar la información de autenticación de usuarios en LDAP, por lo que se suele denominar a éstos usuarios virtuales para diferenciarlos de los usuarios reales o del sistema.
En Debian lenny al instalar el paquete proftpd, se instala por dependencias el paquete proftpd-mod-ldap
, por lo que no deberemos instalar ningún paquete adicional sino “activar” este método de autenticación.
Editamos el fichero /etc/proftpd/modules.conf
y buscamos la línea:
#LoadModule mod_ldap.c
La descomentamos para que cuando se reinicie el servidor cargue el módulo de LDAP.
Editamos el fichero /etc/proftpd/proftpd.conf
y buscamos la línea:
#Include /etc/proftpd/ldap.conf
También la descomentamos y editamos el fichero /etc/proftpd/ldap.conf
, en el que dejamos las tres líneas siguientes:
LDAPServer ldap://localhost/??sub LDAPDNInfo "cn=admin,dc=cursolinux,dc=net" "asdasd" LDAPDoAuth on "ou=People,dc=cursolinux,dc=net"
Donde especificamos el servidor LDAP, el nombre distinguido del usuario que se conecta, su contraseña y la ubicación de la rama que contiene los usuarios.
Además, para que puedan autenticarse usuarios con la shell (/bin/false
) hay que descomentar la directiva:
#RequireValidShell off
Después de hacer todas estas modificaciones reiniciamos el demonio con:
/etc/init.d/proftpd restart
Prueba de funcionamiento
Vamos a crear un usuario virtual que tendrá su directorio home en /srv/ftp/usuario
y como shell /bin/false
para que no pueda nunca abrir una sesión en el sistema. Creamos el fichero usuario-ftp.ldif
con el siguiente contenido:
dn: cn=ftpusers,ou=Group,dc=cursolinux,dc=net objectClass: posixGroup objectClass: top cn: ftpusers gidNumber: 2002
dn: uid=rigoberta,ou=People,dc=cursolinux,dc=net uid: rigoberta cn: Rigoberta objectclass: account objectclass: posixAccount objectclass: top uidNumber: 2002 gidNumber: 2002 homeDirectory: /srv/ftp/rigoberta userPassword: {MD5}qPXxZ/RPSWTmyZje6CcRDA== loginShell: /bin/false
Y lo añadimos al directorio con:
ldapadd -x -D "cn=admin,dc=cursolinux,dc=net" -W -f usuario-ftp.ldif
Creamos el directorio del usuario y le damos los propietarios y permisos adecuados con:
mkdir -p /srv/ftpusers/rigoberta
chgrp 2002 /srv/ftpusers
chown 2002 /srv/ftpusers/rigoberta
chmod 700 /srv/ftpusers/rigoberta
Finalmente probamos con un cliente ftp la conexión con este usuario.