sábado, 30 de mayo de 2009

Instalación y Configuración de PureFTPD con validación y configuración de usuarios a través de OpenLDAP en Ubuntu 9.04

Aclaraciones antes de utilizar esta guia:
Esta guía fue construida para un proyecto de un curso de Redes Locales.No se consideran ningún tipo de configuraciones para seguridad, lo único requerido es que funcione. Además, no soy ningún experto en Linux ni servidores FTP, por lo que cualquier error u omisión que haya cometido, bienvenida sea la corrección, al igual que cualquier otro aporte. Con esta guia, el servidor FTP funciona, pero por razones que desconozco, no permite subir archivos. Si alguien sabe la razón por favor agregue la correcion en los comentarios.
Siéntase en libertad de utilizar esta información de la manera que necesite,siempre y cuando haga la correspondiente cita.


Esta guía supone que ya existe un servidor OpenLDAP instalado, con el dominio "dominio.net" y la clave administrado "ldap", Consulte mi post previo sobre como instalar el servidor OpenLDAP si no tiene uno instalado.
Además, para mantener orden en el servidor LDAP, crearemos un grupo donde agregaremos los usuarios del ftp.
PureFTPD utiliza un esquema especial llamado PureFTPdUser para guardar los datos necesarios para la administración de cada usuario. Dentro de los atributos exitentes en este esquema están el límite de almacenamiento, anchos de banda para carga y descarga, cantidad maxima de archivos,login y contraseña, etc. Aquí se explicará como agregar el esquema al servido LDAP y como agregar los usuarios de este tipo al grupo de usuarios del ftp.

1. Instalación de PureFTPD con soporte para LDAP:
  • Ejecutar el siguiente comando: sudo apt-get install pure-ftpd-ldap
2. Crear un grupo para los usuarios del FTP en el LDAP:
  • Haga un archivo de texto llamado grupoftp.ldif con la siguiente información:
dn: cn=grupoftp,dc=dominio,dc=net
objectClass: posixGroup
objectClass: top
cn: grupoftp
gidNumber: 100
description: Grupo de usuarios FTP

  • Luego es necesario detener el servidor LDAP con este comando: sudo /etc/init.d/slapd stop
  • Ahora agregamos el grupo ejecuntando el siguiente comando: sudo slapadd -v -l grupoftp.ldif
  • El servidor debe responder “added posixgroup= grupoftp,dc=domino,dc=net”
  • Reiniciamos el servidor mediante el siguiente comando: sudo /etc/init.d/slapd start
3. Agregar el esquema PureFTPduser al LDAP:
  • Abrir el archivo descargado y buscar el archivo “pureftpd.schema”, y luego extráigalo en /etc/ldap/schema
  • Haga un archivo llamado schema_convert.conf y agregue la siguiente información:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/pureftpd.schema
  • Luego, cree la carpeta /tmp/ldif_output
  • Despues, abra un terminal y ejecute este comando: sudo slaptest -f schema_convert.conf -F /tmp/ldif_output
  • Abra el archivo /tmp/ldif_output/cn=config/cn=schema/ cn={12}pureftpd.ldif
  • Cambie las lineas que dicen:
“dn: cn={12}pureftpd
…….
cn: {12}pureftpd”
por:
“dn: cn=pureftpd, cn=schema,cn=config
……..
cn: pureftpd”
  • Y elimine las líneas (los valores pueden variar):
structuralObjectClass: olcSchemaConfig
entryUUID: 10dae0ea-0760-102d-80d3-f9366b7f7757
creatorsName: cn=config
createTimestamp: 20080826021140Z
entryCSN: 20080826021140.791425Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20080826021140Z
  • Ahora ejecute el siguiente commando: sudo ldapadd -x -D cn=admin,cn=config -W -f /tmp/ldif_output/cn\=config/cn\=schema/cn\=\{12\}pureftpd.ldif
  • Revise con algunas de las herrmientas de administracion del servidor LDAP si el esquema PureFTPdUser está en lista de esquemas.

4. Agregar un usuario tipo PureFTPdUser al grupo de usuarios del FTP:
  • Crear un archivo de texto llamada ftpuser1 y agregue los siguientes datos:
dn: cn=ftpuser1,cn=grupoftp,dc=dominio,dc=net
objectClass: PureFTPdUser
objectClass: posixAccount
cn: ftpuser1
uid: ftpuser1
uidNumber: 501
gidNumber: 100
homeDirectory: /home/ftproot/usuario1
userPassword: 123
FTPStatus: enabled
FTPQuotaFiles: 1000
FTPQuotaMBytes: 50
FTPDownloadBandwidth: 100000
FTPUploadBandwidth: 100000
FTPDownloadRatio: 5
FTPUploadRatio: 5

El atributo uid es el más importante pues es el parámetro que utiliza PureFTPD para hacer la búsqueda de usuarios.
  • Ejecutar el siguiente comando para agregar al usuario (recuerde detener el servidor LDAP antes de ejecutar el comando y reiniciarlo después de ejecutarlo): sudo slapadd -l ftpuser1.ldif

5. Crear el archivo de configuración para conectar a PureFTPD con LDAP:
  • Haga un archivo de texto con el nombre pureftpd-ldap.conf en la carpeta /etc.
  • Incluya la siguiente información:
LDAPServer localhost
LDAPPort 389
LDAPBaseDN cn=grupoftp,dc=dominio,dc=net
LDAPBindDN cn=admin,dc=dominio,dc=net
LDAPBindPW ldap
LDAPDefaultUID 500
LDAPDefaultGID 100
  • Mate el proceso pure-ftpd en caso de que el servidor FTP este corriendo con este comando: sudo pkill pure-ftpd
  • Levantar el servidor PureFTPD con el archivo de configuración para LDAP con este comando: sudo /usr/sbin/pure-ftpd-ldap -l ldap:/etc/pureftpd-ldap.conf &
  • Pruebe el servidor con nautilus escribiendo en la barra de dirección: ftp://ftpuser1@localhost
  • Suministre la clave que le asigno al usuario y listo.
Para monitorear la actividad del ftp, se puede utilizar la aplicación “pureadmin”. Esta permite ver los usuarios que están en sesión, los archivos que se están subiendo o bajando y todo los registros que se van agregando al log.

Referencias:
  • http://download.pureftpd.org/pub/pure-ftpd/doc/README.LDAP
  • http://www.linuxquestions.org/questions/linux-server-73/how-to-add-a-new-schema-to-openldap-2.4.11-700452/



No hay comentarios:

Publicar un comentario