La Bitácora de Gabriel

Vsftpd: Usuarios Virtuales en MySQL

Posteado por: Gabriel en: Agosto 9, 2009

Como tuve varias consultas sobre la configuración del servicio Vsftpd con usuarios virtuales me puse a configurar el servicio Vsftpd paso a paso según el artículo Manual para configurar un Servidor FTP con Vsftpd en openSUSE que escribí ya hace mucho tiempo y que solo lo había probado completamente en las versiones 10.3 y 11.0 de openSUSE, pero esta vez le llegó el turno a la versión 11.1 de la misma distro.

Les comento que la configuración ha funcionado perfectamente en todos los ámbitos: configuración básica para usuarios locales y anónimos, configuración para el acceso mediante usuarios virtuales y configuración para el acceso con seguridad TLS/SSL, para todos los casos he hechos pruebas y no he encontrado ningún inconveniente, con lo que el manual aún cubre las expectativas para esta última versión de la distribución.

Pero aparte de realizar esta prueba de configuración del servicio Vsftpd, también me puse a investigar como hacer para que los usuarios virtuales y sus contraseñas sean almacenados en una base de datos MySQL, en vez de ser almacenados en una base de datos del tipo Berkeley como se detalla en el manual. Los pasos que he seguido para configurar esta funcionalidad anexa a la configuración ya propuesta en el Manual para configurar un Servidor FTP con Vsftpd en openSUSE se detallarán mas abajo.

OBS: Aclaro que no se volverá a detallar cada uno de los pasos para configurar la funcionalidad de usuarios virtuales para el servicio vsftpd, eso ya ha sido tratado en el Manual para configurar un Servidor FTP con Vsftpd en openSUSE y no lo volveré a hacer acá, sino que simplemente se detallará la forma en que se deberá almacenar los datos de los usuarios virtuales en la base de datos MySQL y como deberá estar definido el método de autenticación PAM para el servicio vsftpd. Tampoco se abarca en este post la instalación y configuración de la base de datos MySQL y sus respectivas herramientas de administración (como phpMyAdmin, etc.).

Una vez que hayamos configurado el servicio vsftpd con la implementación de usuarios virtuales almacenados en la base de datos Berkeley, no será demasiado trabajoso modificar el esquema para que los usuarios virtuales sean almacenados en una base de datos MySQL.

  1. El primero de los pasos es crear una nueva base de datos en MySQL, yo lo hecho ejecutando la siguiente sentencia SQL desde la aplicación phpMyAdmin:

    CREATE DATABASE vsftpd DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci;

  2. El siguiente paso consiste en agregar un nuevo usuario llamado vsftpd, a este usuario se le asignan todos los privilegios de la base de datos recientemente agregada:

    CREATE USER 'vsftpd'@'localhost' IDENTIFIED BY 'vsftpd';
    GRANT USAGE ON *.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'vsftpd' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
    GRANT ALL PRIVILEGES ON vsftpd.* TO vsftpd@localhost WITH GRANT OPTION;

  3. Luego hay que crear una tabla en la base de datos vsftpd en la cual se van a registrar los usuarios virtuales con sus respectivas contraseñas, la sentencia SQL para este paso es la siguiente:

    CREATE TABLE IF NOT EXISTS `usuarios` (
    `numero` int(11) NOT NULL AUTO_INCREMENT,
    `usuario` varchar(50)  NOT NULL,
    `password` varchar(50)  NOT NULL,
    PRIMARY KEY (`numero`),
    UNIQUE KEY `usuario` (`usuario`)
    ) ENGINE=MyISAM AUTO_INCREMENT=1;

  4. Para agregar un nuevo usuario virtual a la tabla debemos ejecutar una sentencia SQL similar a la que sigue:

    INSERT INTO usuarios (usuario, password) VALUES('login_usuario', PASSWORD('contraseña_en_texto_plano'));

    Donde en reemplazo a la palabra login_usuario irá el nombre del usuario virtual y en reemplazo de la palabra contraseña_en_texto_plano la contraseña de ese usuario virtual, la función PASSWORD de MySQL convertirá la contraseña de texto plano a un código hash que ocultará la contraseña original en la tabla.

  5. Cumplidos todos los pasos anteriores ya podemos pasar a configurar el método de autenticación PAM para el servicio vsftpd, para ello nos dirigimos al directorio /etc/pam.d, creamos una copia de seguridad del archivo vsftpd y luego lo editamos, ya en el archivo comentamos todas las lineas activas y al final del archivo agregamos las siguientes lineas:

    auth required pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=usuarios usercolumn=usuario passwdcolumn=password crypt=2
    account required pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=usuarios usercolumn=usuario passwdcolumn=password crypt=2

  6. Con estas configuración la implementación debería quedar funcionando, ni siquiera es necesario reiniciar el servicio vsftpd, sin embargo, en mi caso tuve que instalar un paquete al sistema operativo para obtener la librería pam_mysql.so, ya que sin ella el servicio PAM no tiene la interfaz necesaria para relacionarse con la base de datos MySQL, para la distro openSUSE 11.1 el módulo PAM para MySQL se puede instalar mediante el método 1-Click Install, el enlace al paquete es el siguiente:
    aluminium_one_click

Como se puede ver los pasos necesarios no son tantos, sin embargo, me pareció importante documentarlos para complementar la información acerca del servicio vsftpd que ya tenía en esta bitácora.

GK.

Escribe un comentario

cc - by cc cc

Bienvenidos!

Muchas gracias por visitar este pequeño espacio que a medida que pasa el tiempo va cobrando vida y forma, encontrarán mucha información acerca de mi pasión que es la Informática, como así también de mi trabajo y de mi vida personal, espero que les guste! Saludos.

Gabriel K.

Correo Electrónico

Para cualquier consulta, sugerencia, críticas, etc., pueden enviar un correo a:

La imágen

Ídolos: Adam y Jamie de Mythbusters

Ídolos: Adam y Jamie de Mythbusters

Calendario

Agosto 2009
D L M X J V S
« Oct   Oct »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Categorías

Visitas

  • 38,116

Fotos Flickr

openSUSE v11.1 con KDE v4.2.4

Un fin de semana por Cnel. Oviedo

More Photos

Tira Ecol