GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Alojamiento virtual con vsftpd y MySQL en Ubuntu 12.04

Vsftpd es uno de los servidores FTP más seguros y rápidos para Linux. Por lo general, vsftpd está configurado para funcionar con los usuarios del sistema. Este documento describe cómo instalar un servidor vsftpd que utiliza usuarios virtuales de una base de datos MySQL en lugar de usuarios reales del sistema. Esto es mucho más eficaz y permite tener miles de usuarios de ftp en una sola máquina.

Para la administración de la base de datos MySQL, puede usar herramientas basadas en web como phpMyAdmin, que también se instalará en este instructivo. phpMyAdmin es una interfaz gráfica cómoda, lo que significa que no tiene que perder el tiempo con la línea de comandos.

Este tutorial está basado en Ubuntu 12.04. Ya debería haber configurado un sistema Ubuntu 12.04 básico.

Este howto pretende ser una guía práctica; no cubre los antecedentes teóricos. Se tratan en muchos otros documentos en la web.

¡Este documento viene sin garantía de ningún tipo! Quiero decir que esta no es la única forma de establecer un sistema de este tipo. Hay muchas maneras de lograr este objetivo, pero este es el camino que tomo. ¡No emito ninguna garantía de que esto funcione para usted!

1 nota preliminar

En este tutorial utilizo el nombre de host server1.example.com con la dirección IP 192.168.0.100. Estas configuraciones pueden diferir para usted, por lo que debe reemplazarlas cuando corresponda.

Debido a que debemos ejecutar todos los pasos de este tutorial con privilegios de root, podemos anteponer todos los comandos en este tutorial con la cadena sudo, o convertirnos en root ahora mismo escribiendo

sudo su 

2 Instalar vsftpd, MySQL y phpMyAdmin

Vsftpd no tiene soporte incorporado para MySQL, por lo tanto, debemos usar PAM para autenticarnos en la base de datos MySQL. Así que instalamos libpam-mysql además de vsftpd, MySQL y phpMyAdmin:

apt-get install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin libpam-ldap

Se le harán las siguientes preguntas:

Nueva contraseña para el usuario "root" de MySQL:<-- yourrootsqlpassword
Repetir la contraseña para el usuario "root" de MySQL:<-- yourrootsqlpassword
Servidor web para reconfigurar automáticamente:<-- apache2
¿Configurar la base de datos para phpmyadmin con dbconfig-common? <-- No
Identificador de recurso uniforme del servidor LDAP: <-- ENTER
Nombre distintivo de la base de búsqueda: <-- ENTER
Versión de LDAP para usar: <-- 3
Hacer administrador de base de datos raíz local:<-- Sí
¿La base de datos LDAP requiere inicio de sesión? <-- Ninguna
cuenta LDAP para raíz: <-- ENTRAR
Contraseña de cuenta raíz LDAP: <-- ldaprootpw

3 Crea la base de datos MySQL para vsftpd

Ahora creamos una base de datos llamada vsftpd y un usuario de MySQL llamado vsftpd que el demonio vsftpd usará más adelante para conectarse a la base de datos vsftpd:

mysql -u root -p

CREAR BASE DE DATOS vsftpd;
CONCEDER SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, CREAR, SOLTAR EN vsftpd.* A 'vsftpd'@'localhost' IDENTIFICADO POR 'ftpdpass';
CONCEDER SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR , CREAR, SOLTAR EN vsftpd.* A 'vsftpd'@'localhost.localdomain' IDENTIFICADO POR 'ftpdpass';
VACIAR PRIVILEGIOS;

Reemplace la cadena ftpdpass con la contraseña que desee usar para el usuario de MySQL vsftpd. Todavía en el shell de MySQL, creamos la tabla de base de datos que necesitamos (sí, ¡solo hay una tabla!):

USE vsftpd;

CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
ÚNICO (
`username`
)
) MOTOR =MYISAM;

quit;

Como habrás notado, con la renuncia; hemos dejado el shell de MySQL y estamos de vuelta en el shell de Linux.

Por cierto, (supongo que el nombre de host de su sistema de servidor ftp es server1.example.com) puede acceder a phpMyAdmin en http://server1.example.com/phpmyadmin/ (también puede usar la dirección IP en lugar de server1 .example.com) en un navegador e inicie sesión como usuario vsftpd. A continuación, puede echar un vistazo a la base de datos. Más tarde puede usar phpMyAdmin para administrar su servidor vsftpd.

4 Configurar vsftpd

Primero creamos un usuario sin privilegios llamado vsftpd (con el homedir /home/vsftpd) perteneciente al grupo nogroup. Ejecutaremos vsftpd bajo este usuario, y los directorios FTP de nuestros usuarios virtuales estarán en el directorio /home/vsftpd (por ejemplo, /home/vsftpd/user1, /home/vsftpd/user2, etc.).

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

Luego hacemos una copia de seguridad del archivo /etc/vsftpd.conf original y creamos el nuestro propio:

cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
cat /dev/null> /etc/vsftpd.conf
vi /etc/vsftpd.conf

El archivo debe tener el siguiente contenido:

Las opciones de configuración se explican en http://vsftpd.beasts.org/vsftpd_conf.html. Las opciones importantes para nuestra configuración virtual son chroot_local_user, guest_enable, guest_username, user_sub_token, local_root y virtual_use_local_privs.

Con la opción user_config_dir puede especificar un directorio para los archivos de configuración por usuario que anulan partes de la configuración global. Esto es totalmente opcional y depende de usted si desea utilizar esta función. Sin embargo, debemos crear ese directorio ahora:

mkdir /etc/vsftpd_user_conf

Ahora debemos configurar PAM para que use la base de datos MySQL para autenticar a nuestros usuarios de FTP virtuales en lugar de /etc/passwd y /etc/shadow. La configuración de PAM para vsftpd está en /etc/pam.d/vsftpd. Hacemos una copia de seguridad del archivo original y creamos uno nuevo como este:

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
cat /dev/null> /etc/pam.d/vsftpd
vi /etc/pam.d/vsftpd

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
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_user_conf

¡Asegúrese de reemplazar la contraseña de MySQL por la suya propia!

Posteriormente, reiniciamos vsftpd:

/etc/init.d/vsftpd restart

5 Crear el primer usuario virtual

Para llenar la base de datos, puede usar el shell de MySQL:

mysql -u root -p
USE vsftpd;

Ahora creamos el usuario virtual testuser con la contraseña secret (que se almacenará encriptada usando la función PASSWORD de MySQL):

INSERTAR EN cuentas (nombre de usuario, clave) VALORES('usuariodeprueba', CONTRASEÑA('secreto'));
salir;

el directorio de inicio de testuser es /home/vsftpd/testuser; desafortunadamente, vsftpd no crea ese directorio automáticamente si no existe. Por lo tanto, lo creamos manualmente ahora y lo hacemos propiedad del usuario vsftpd y el grupo nogroup:

mkdir /home/vsftpd/testuser
chown vsftpd:nogroup /home/vsftpd/testuser

Ahora abra su programa de cliente FTP en su estación de trabajo (algo como FileZilla o FireFTP) e intente conectarse. Como nombre de host, utiliza server1.example.com (o la dirección IP del sistema), el nombre de usuario es testuser y la contraseña es secreta.

Si puede conectarse, ¡felicidades! Si no, algo salió mal.

6 Administración de la base de datos

Para la mayoría de las personas es más fácil si tienen una interfaz gráfica para MySQL; por lo tanto, también puede usar phpMyAdmin (en este ejemplo en http://server1.example.com/phpmyadmin/) para administrar la base de datos vsftpd.

Siempre que cree o modifique un usuario, asegúrese de utilizar la función CONTRASEÑA de MySQL para cifrar la contraseña de ese usuario. Además, cuando cree un nuevo usuario virtual, no olvide crear el homedir de ese usuario en el shell, como se muestra al final del capítulo anterior.

7 Enlaces

  • vsftpd:http://vsftpd.beasts.org/
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (Ubuntu 14.04LTS)

  2. Alojamiento virtual con Proftpd y MySQL (incluida la cuota) en Ubuntu 14.04LTS

  3. Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (Ubuntu 13.10)

  4. Alojamiento virtual con PureFTPd y MySQL (incluida la gestión de cuotas y ancho de banda) en Ubuntu 7.10 (Gutsy Gibbon)

  5. Alojamiento virtual con Proftpd y MySQL (incluida la cuota) en Ubuntu 8.04 LTS

Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (Ubuntu 12.10)

Alojamiento virtual con vsftpd y MySQL en Ubuntu 12.10

Alojamiento virtual con PureFTPd y MySQL (incluida la gestión de cuotas y ancho de banda) en Ubuntu 12.10

Alojamiento virtual con Proftpd y MySQL (incluida la cuota) en Ubuntu 12.10

Alojamiento virtual con PureFTPd y MySQL (incluida la gestión de cuotas y ancho de banda) en Ubuntu 14.04LTS

Alojamiento virtual con vsftpd y MySQL en Debian Squeeze

    auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
    account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2