VSFTPD + MYSQL

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.

Comments

Popular posts from this blog

Todas las Batallas Libradas en la República Dominicana

Biografía de Juan Pablo Duarte - Mes de la Patria Dominicana