VSFTP + Directorio Activo

Trato de explicar a continuación, lo mas breve y sencillo posible, como instalar y configurar un servidor FTP, usando autenticación contra Directorio Activo; de la misma forma seguiremos permitiendo usuarios locales para las sesiones FTP. Aunque este protocolo nunca ha sido de mis predilecciones, diversos motivos me han motivado a tener que hacer una instalación, así que ahí va lo que hice.

Sistema base

Partimos de un sistema basado en Redhat Enterprise, concretamente CentOS (versión 5), el cual ya está configurado con samba autenticando en nuestro Directorio Activo (si alguien no sabe como hacerlo, pues ya lo explicaré en otro momento), vamos a aprovechar esta situación para configurar nuestro servicio FTP.

Instalación

Usaremos el software vsftpd (http://vsftpd.beasts.org/), probablemente el servidor FTP mas seguro y rápido.

# yum install vsftpd

Configuración

Una vez instalado los ficheros de configuración quedan en /etc/vsftpd/. El servicio vsftpd usa PAM como método para autenticar, de esta forma para lograr que los usuario del Directorio Activo logren iniciar una sesión de FTP, nos aprovecharemos de winbind.

Configurando PAM

En /etc/pam.d tenemos el fichero vsftpd, en el cual debemos agregar las líneas correspondientes para que nuestro servidor FTP, use autenticación a través de winbind. El fichero puede quedar como sigue:

# more /etc/pam.d/vsftpd

#%PAM-1.0

session sufficient pam_winbind.so

auth sufficient pam_winbind.so

auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth sufficient pam_shells.so debug

auth include system-auth

account sufficient winbind.so

account include system-auth

session include system-auth

session required pam_loginuid.so



vsftpd.conf

Es el fichero de configuración del servicio FTP. Es muy flexible. Yo lo voy a dejar así:

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_file=/var/log/vsftpd.log

ftpd_banner= mi mensaje de bienvenida.

chroot_local_user=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

user_config_dir=/etc/vsftpd/users



Configurando usuarios

Para que un usuario pueda iniciar una sesión FTP, se debe cumplir una serie de requisitos:

      1. Debe ser un usuario local, y existir su home

      2. Debe ser un usuario del dominio MIDOMINIO.COMy existir el directorio /home/MIDOMINIO/$USER

Además para el correcto funcionamiento se ha establecido la directiva user_config_dir=/etc/vsftpd/users, donde se creará un fichero para cada usuario que demos de alta en el FTP, de manera que se personalizan las características de acceso de cada usuario. Por ejemplo el usuario pepe, le vamos a permitir ‘ver’ y descargar lo que hay en /data (este directorio debe existir, de manera que se convierte en el ftproot del usuario pepe), pero no escribir.

dirlist_enable=YES
download_enable=YES
local_root=/data
write_enable=NO
anon_world_readable_only=NO

Los usuarios locales que permita FTP, lo que le hago es no permitir su inicio de sesión interactivo (su ingreso en consola), es decir /bin/false. Por supuesto podemos usar el fichero /etc/vsftpd/ftpusers para denegar el acceso a los usuarios que queramos.

También se podría configurar con usuarios virtuales, pero en principio no era el tema, ya que me interesaba la integración con el Directorio Activo.

Ejecutando el servicio

Solo nos queda ejecutar el servicio:

#service vsftpd start

y a disfrutarlo. Por supuesto hay muchas mas opciones por tocar y personalizar.

Comentarios

Rafael López ha dicho que…
Me comento a mi mismo. Si se observa algún problema es interesante configurar el log en modo debug; para ello usar los parámetros siguientes en vsftpd.conf:

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
log_ftp_protocol=YES
Anónimo ha dicho que…
Documentacion incompleta.

No te dice donde configurar los datos del ad contra el cual autenticarse.
Anónimo ha dicho que…
¿donde se dice que directorio activo es el que quieres usar?
Rafael López ha dicho que…
Ya digo que partimos de un sistema en el que la autenticación está configurada, así que no me paro a explicar como se hace. No obstante aqui tiene un pequeño resumen de como se hace:

http://rlt-sistemas.blogspot.com/2011/03/integrando-samba-con-el-directorio.html

Hay mucha documentación disponible al respecto.
Un saludo.
Anónimo ha dicho que…
Este documento es bueno pero en modo grafico

http://blog.zwiegnet.com/linux-server/join-centos-to-active-directory-domain/
Unknown ha dicho que…
Este link es de utilidad, aunque de manera grafica.

http://blog.zwiegnet.com/linux-server/join-centos-to-active-directory-domain/