Gestionar un hosting via FTP con autenticación MysQL en Debian 9

El escenario que vamos a configurar es el siguiente:

Tenemos una máquina que hará de servidor, el cual tendrá instalado un servidor FTP y una base de datos con el gestor de base de datos MySQL.

Para instalar el servidor FTP vamos a instalar el paquete proftpd que se encuentra en los repositorios oficiales en Debian Stretch.

Instalación:

Instalar los siguientes paquetes:

Posteriormente a la instalación vamos a deshabilitar el uso de IPv6 en el servidor FTP editando /etc/proftpd/proftpd.conf:

En el mismo fichero también vamos a indicar el nombre del servidor y vamos a “enjaular” a cada usuario en su directorio:

Reiniciar el servicio:

Si cuando hemos instalado los paquetes, no nos ha preguntando por una contraseña para el usuario root de mysql, ejecutamos:

Habilitar el acceso desde otra máquina al servidor MySQL

Comentar las siguientes lineas el fichero /etc/mysql/mariadb.conf.d/50-server.cnf:

Reiniciar el servicio:

Crear las tablas necesarias para almacenar la información de los usuarios

Iniciar sesión con el usuario root y crear un nuevo usuario que tendra permiso sobre la nueva base de datos, donde se crearán las tablas para almacenar a los usuarios que van autenticarse al servicio FTP:

Ahora salimos y volvemos a iniciar sesión con el nuevo usuario:

Tabla ftpuser:

Tabla ftpgroup:

Insertar grupo y usuario de prueba

Introducir un grupo en la tabla ‘ftpgroup’:

Para darle un toque de seguridad vamos a cifrar la contraseña con MD5:

Insertar un usuario en la tabla ‘ftpuser’:

Configurar proFTPD para que haga uso de autenticación SQL

Editar los siguiente parámetros en el fichero /etc/proftpd/sql.conf:

En el fichero /etc/proftpd/modules.conf descomentar estas lineas:

Finalmente modificar también en /etc/proftp/proftpd.conf:

Reiniciar:

Una ruta denominada documentos para usuarios anónimos

Para hacerlo más real vamos a instalar un servidor web  en el cual vamos a tener un virtualhost “www.iesgn.org” donde crearemos un Alias para cuando los usuarios quieran acceder desde el navegador a la dirección “www.iesgn.org/documentos” sean capaces de ver los ficheros.

Instalar el servidor web:

Copiar el fichero de configuración predeterminado para crear un virtualhost para el dominio “www.iesgn.org”:

Editar iesgn.conf:

Creamos el directorio asignado en el Alias con sus respectivos permisos:

Generamos ficheros ficticios en el directorio documentos:

Desactivamos el sitio predeterminado de apache2 y activamos el nuevo:

Reiniciamos el servidor web:

En el servidor ftp descomentar el siguiente bloque y modificar el atributo “ServerName” y “Anonymous /directorio” en el fichero /etc/proftpd/proftpd.conf:

Podemos hacer la prueba del funcionamiento con un cliente gráfico como FileZilla:

Acceso Anónimo 

 

Acceso con el usuario

Resolver el dominio iesgn.org para www y ftp

Si tenemos un servidor DNS en la red, podemos simplemente agregar un registro tipo A para la máquina servidor y dos registros del tipo CNAME para ambos servicios. Si no es el caso, podemos resolver el dominio de forma estática añadiendo la siguiente linea en el fichero /etc/hosts de nuestra máquina:

Instalar un cliente web para administrar FTP

Instalar PHP:

Descargar Monsta FTP:

https://www.monstaftp.com/download

Descomprimir en el patch del sitio web:

Antes de acceder al cliente web mediante el navegador vamos a resolver de manera estática en la máquina virtual donde esta instalado el servidor web la dirección:

Editar /etc/hosts:

Lo ideal sería capar el cliente web para que forzará a utilizar nuestro servidor y no poder acceder a cualquier ftp, pero esta opción solo esta disponible en la versión profesional 🙂

Accediendo desde el cliente web

Prueba con el usuario

 

Crear un usuario con su propio sitio web

Por último vamos a crear un script en python para automatizar esto:

Vamos a crear un nuevo usuario en la base de datos mysql, que se dará de alta y al acceder por ftp con su usuario, accederá a su directorio personal donde tiene alojada una página web HTML.

Para ejecutar el script necesitamos tener instalado el módulo mysql de python en el sistema:

Y vamos a crear un alias para que desde el navegador la ruta de acceso a la pagina web del usuario sea “www.iesgn.org/web/user”:

En /etc/apache2/sites-available/iesgn.conf:

Código del script en python:

Testeo del script

Ejemplo de ejecución:

Prueba del script

Alguna duda o feedback, házmelo saber 🙂

Autor entrada: CharlieJ

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *