Codigo Libre

VSFTPD + MYSQL

Agosto 2012

Michael Cruz Sanchez

Vsftpd:

Segun www.cyberciti.biz VSFTPD (Very Secure FTP Daemon) es un servidor FTP para los sistemas operativos derivados de UNIX, incluyendo CentOS/RHEL/Fedora y las otras distribuciones de GNU/Linux. Soporta IPv6, SSL, enjaular usuarios y otras opciones avanzadas.

Mysql:

Es el sistema de gestion de bases de datos open source mas popular del mundo. Mysql es un sistema de administracion de bases de datos (Database Management System, DBMS) para bases de datos relacionales.

Vsftpd con Mysql:

Nuestro escenario sera configurar un servidor de archivos FTP con la base de datos MYSQL para crear los llamados usuarios virtuales. Esto consiste en almacenar los usuarios del servidor FTP en una base de datos MYSQL para evitar utilizar las cuentas de usuario de nuestro equipo. Esto tambien minimaliza la violacion de usuarios y contraseñas al estar almacenados en una base de datos.

Requisitos:

Este escenario fue realizado por completo en la distribucion CentOS basada en RedHat Linux, asi que todos los pasos a seguir deberan de utilizar la misma base. Los requisitos para configurar FTP con MYSQL en CentOS son los siguientes.

Mysql-server

pam_mysql

Procedemos a instalar las dependencias con nuestro manejador de paquetes Yum.

Mcruz# yum -y install mysql-server pam_mysql

Iniciamos nuestro servicio de Mysql.

Mcruz# service mysqld start

Creamos el usuario root de mysql con su contraseña

Mcruz# mysqladmin -u root password ‘clave’


NOTA: ‘clave’ es el password elegido.

Creamos la base de datos que contendra la tabla de nuestros usuarios del servidor ftp, lo primero que debemos hacer es iniciar session con el usuario root de mysql.

Mcruz# mysql -u root -pclave


NOTA: la opcion -p es para el password deben de ir juntos, con esta opcion pondremos nuestro password elegido previamente.

Al ejecutar estos pasos nos mostrara un prompt de mysql. Procederemos a crear nuestra base de datos, la cual llamaremos vsftpd.

Mysql> CREATE DATABASE vsftpd;

Mysql> GRANT SELECT,INSERT,CREATE,DELETE,DROP ON vsftpd.* TO ‘vsftpd’@’localhost’ IDENTIFIED BY ‘clave’;

Mysql> FLUSH PRIVILEGES;

NOTA: Mysql> no es una orden, es el prompt de mysql.

Ahora entramos a nuestra base de datos ya creada para crear la tabla necesaria para nuestros usuarios.

Mysql> USE vsftpd;

Mysql> CREATE TABLE `cuentas` (

`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

`usuario` VARCHAR( 30 ) NOT NULL,

`clave` VARCHAR( 50 ) NOT NULL,

UNIQUE(`usuario`)

) ENGINE = MYISAM;

Mysql> exit

Ya creamos nuestra base de datos vsftpd con la tabla cuentas la cual contendra nuestros usuarios y contraseñas.

Crearemos el usuario para vsftpd en nuestro sistema.

Mcruz# useradd -G users -s /sbin/nologin -d /home/vsftpd vsftpd


Con esto creamos el usuario vsftpd, perteneciente al grupo users y su directorio principal sera /home/vsftpd.

Configuramos nuestro servidor FTP, para esto nos dirigimos al archivo de configuracion de vsftpd en /etc/vsftpd.

Mcruz# cd /etc/vsftpd

Mcruz# cp -v vsftpd.conf vsftpd.conf.back

Vaciamos el archivo vsftpd.conf luego de haber hecho la copia de seguridad para crear uno nuevo con nuestras necesidades.

Mcruz# cat /dev/null > vsftpd.conf

Mcruz# vim vsftpd.conf

Esto nos abrira un archivo vsftpd.conf en blanco para poner nuestras modificaciones.

Luego de abrir el vsftpd.conf con el editor de textos vim procedemos a la configuracion, colocar lo siguiente dentro del archivo.

NOTA: Todo lo que empieza con # es un comentario.

# No se permitiran usuarios anonymos.

anonymous_enable=NO

# Se permitiran usuarios locales con permisos 755.

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

# Enviar a los logs cualquier actividad de FTP.

log_ftp_protocol=YES

connect_from_port_20=YES

# Archivo de logs

xferlog_file=/var/log/xferlog

# Definimos el usuario de nuestro sistema el cual el servidor FTP puede usar totalmente como usuario no privilegiado.

nopriv_user=vsftpd

chroot_local_user=YES

listen=YES

# Ahora realizamos las configuraciones necesarias para decirle al modulo PAM el modo de autenticacion de vsftpd.

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

userlist_deny=YES

# Definimos las directivas para el usuario vsftpd.

guest_enable=YES

guest_username=vsftpd

local_root=/home/vsftpd/$USER

user_sub_token=$USER

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf

force_local_data_ssl=NO

force_local_logins_ssl=NO

pasv_enable=YES

pasv_min_port=44000

pasv_max_port=44100

Con la opcion user_config_dir podemos definir el directorio de configuracion de cada usuario, luego de la configuracion creamos el directorio vsftpd_user_conf con el comando mkidr.

Mcruz# mkdir -p /etc/vsftpd/vsftpd_user_conf

Mcruz# cd /etc/vsftpd/vsftpd_user_conf

Creamos el archivo de configuracion de nuestro primer usuario en el servidor FTP.

Mcruz# vim mcruz

Luego de crear el archivo de configuracion del usuario mcruz con el editor de textos vim, agregamos las siguientes variables dentro de este archivo.

dirlist_enable=YES

download_enable=YES

local_root=/home/users/mcruz

write_enable=YES

El directorio de mcruz debe de ser creado si se quiere que el usuario pueda iniciar sesion.

Mcruz# mkdir -p /home/users/mcruz

Mcruz# chmod 700 /home/users/mcruz

Mcruz# chown vsftpd.users /home/users/mcruz

Ahora configuramos el modulo PAM para definir que usaremos MYSQL para la autenticacion en vez de /etc/passwd y /etc/shadow.

El archivo de configuracion de PAM para vsftpd esta en /etc/pam.d/ y se llama vsftpd.

Entramos dentro del directorio /etc/pam.d/ y realizamos una copia de seguridad del archivo vsftpd.

Mcruz# cd /etc/pam.d/

Mcruz# cp vsftpd vsftpd.back

Vaciamos el archivo para ajustarlo a nuestras necesidades.

Mcruz# cat /dev/null > vsftpd

Mcruz# vim vsftpd

session optional pam_keyinit.so force revoke

auth required pam_mysql.so user=vsftpd passwd=mcruz host=localhost db=vsftpd table=cuentas usercolumn=usuario passwdcolumn=clave crypt=3

account required pam_mysql.so user=vsftpd passwd=mcruz host=localhost db=vsftpd table=cuentas usercolumn=usuario passwdcolumn=clave crypt=3

En este momento crearemos el usuario mcruz dentro de la base de datos. Para esto iniciamos sesion en mysql, entramos a la base de datos creada vsftpd para crear el usuario.

Mcruz# mysql -u root -pclave

Mysql> USE vsftpd;

Mysql> INSERT INTO cuentas(usuario,clave) VALUES(‘mcruz’, md5(‘secret’));

Mysql> SELECT * FROM cuentas;

NOTA: Con esta consulta podemos verificar que el usuario mcruz se ha creado.

Mcruz# mkdir -p /home/vsftpd/mcruz

Mcruz# chown vsftpd.users /home/vsftpd/mcruz

Nuestra configuracion de FTP con MYSQL esta terminada y lista, el siguiente paso es reiniciar el servidor FTP.

Mcruz# service vsftpd restart

Ya tenemos nuestro servidor FTP con MYSQL listo para usar, para hacer la prueba podemos usar dos metodos. El navegador web y la utilidad ftp con el comando del mismo nombre, sino no lo tenemos instalado un “yum install ftp” bastara.

PRUEBA:

La primera prueba sera mediante la utilidad ftp.

Mcruz# ftp localhost

Nos pedira el usuario y la clave, aqui ponemos nuestro usuario mcruz y la clave asignada anteriormente. Se vera algo como lo siguiente.

La otra prueba sera realizada con el navegador web.

Con esto ya tenemos nuestro servidor FTP con MYSQL configurado.

QUIENES SOMOS?

codigolibrelogo
La Fundación Código Libre Dominicano (FCLD) tiene como objetivo principal promover y defender la libertad de uso, de aprendizaje, conocimiento, distribución y compartición de los derechos de los usuarios y programadores en relación al software.

Donaciones

Es de mucha importancia para nosotros el apoyo y el reconocimiento de cada miembro de la Fundación código libre dominicano, por lo que si prefieres de alguna manera contribuir puedes hacerlo por el siguiente método.

Siguenos

128-facebookgoogleplustwitteryoutubeInstagram

Quien está conectado

4 visitantes conectados ahora
0 visitantes, 4 bots, 0 miembros
Copyright © 2016. Designed by MediaExperto