Proftpd y MySQL en Debian Lenny

12
PROFTPD Y MYSQL EN DEBIAN LENNY Este documento describe cómo instalar un servidor de Proftpd que utiliza usuarios virtuales de una base de datos MySQL en vez de los usuarios del sistema real. Esto es mucho más rendimiento 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 las herramientas basadas en web como phpMyAdmin, que también se instalará en esta guía. PhpMyAdmin es una interfaz gráfica agradable que significa que usted no tiene que perder el tiempo con la línea de comandos. INSTALAR MYSQL Y PHPMYADMIN Todo esto se puede instalar con un solo comando: Aca damos una contraseña para MySQL

Transcript of Proftpd y MySQL en Debian Lenny

Page 1: Proftpd y MySQL en Debian Lenny

PROFTPD Y MYSQL EN DEBIAN LENNY

Este documento describe cómo instalar un servidor de Proftpd que utiliza usuarios

virtuales de una base de datos MySQL en vez de los usuarios del sistema real. Esto es

mucho más rendimiento 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 las herramientas basadas

en web como phpMyAdmin, que también se instalará en esta guía. PhpMyAdmin es una

interfaz gráfica agradable que significa que usted no tiene que perder el tiempo con la

línea de comandos.

INSTALAR MYSQL Y PHPMYADMIN

Todo esto se puede instalar con un solo comando:

Aca damos una contraseña para MySQL

Page 2: Proftpd y MySQL en Debian Lenny

Confirmamos la contraseña anteriormente ingresada:

Aca configuramos phpmyadmin que nos instale el apache2 solamente:

Page 3: Proftpd y MySQL en Debian Lenny

Instalar Proftpd con Soporte en MySQL

Para Debian existe un paquete pre-configurado de proftpd-mysql. Lo Instalamos como

independiente con:

Aceptamos la instalacion:

Lo configuramos como independiente o Standalone

Page 4: Proftpd y MySQL en Debian Lenny

Ahora creamos un usuario y un grupo el cual sera asignado a cada uno de nuestros

usuarios virtuales que podran tener acceso al servidor de archivos.

Crear Bases de Datos con MySQL para Proftpd

Ahora vamos a crear la base de datos “ftp” y un usuario llamado proftpd. Con el que

mysql se conectara a la base de datos.

Para ingresar a crear las bases de datos ingresamos:

Luego nos pedira un Password, esta es la contraseña que ingersamos en la instalacion de

MySQL.

Despues entraremos a la linea de comandos de MySQL nos deberia salir:

Podemos crear la base de datos por consola o disponemos de una herramienta grafica

llamada phpmyadmin que nos facilitara en gran medida la creacion de las Bases de

Datos en este tutorial voy a explicar las dos.

CREATE DATABASE ftp; “creamos nuestra base de datos”

GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password'; en “password “ le damos la contraseña de MySQL

GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password'; en “password “ le damos la contraseña de MySQL

FLUSH PRIVILEGES;

Page 5: Proftpd y MySQL en Debian Lenny

En phpmyadmin:

En la pestaña privilegios le damos los privilegios que mostre anterioemente por consola.

Ahora vamos a crear la base de datos “ftp” y un usuario llamado proftpd. Con el que

mysql se conectara a la base de datos.

USE ftp;

Creamos dos tablas con los siguientes parametros:

CREATE TABLE ftpgroup (

groupname varchar(16) NOT NULL default '',

gid smallint(6) NOT NULL default '5500',

members varchar(16) NOT NULL default '',

KEY groupname (groupname)

) TYPE=MyISAM COMMENT='ProFTP group table';

Page 6: Proftpd y MySQL en Debian Lenny

En phpmyadmin:

Creamos los Campos anteriores:

CREATE TABLE ftpuser (

id int(10) unsigned NOT NULL auto_increment,

userid varchar(32) NOT NULL default '',

passwd varchar(32) NOT NULL default '',

uid smallint(6) NOT NULL default '5500',

gid smallint(6) NOT NULL default '5500',

homedir varchar(255) NOT NULL default '',

shell varchar(16) NOT NULL default '/sbin/nologin',

count int(11) NOT NULL default '0',

accessed datetime NOT NULL default '0000-00-00 00:00:00',

modified datetime NOT NULL default '0000-00-00 00:00:00',

PRIMARY KEY (id),

UNIQUE KEY userid (userid)

) TYPE=MyISAM COMMENT='ProFTP user table';

Page 7: Proftpd y MySQL en Debian Lenny

En phpmyadmin:

Con los parametros:

Salimos de la linea de comandos:

Page 8: Proftpd y MySQL en Debian Lenny

Configurar Proftpd

Primero modificamos el archivo modules.conf

Descomentsmos las siguientes lineas:

Despues modificamos el archivo proftpd.conf

Comentamos, descomentamos y modificamos las siguientes lineas:

Ahora configuramos el archivo sql.conf

Y agregamos la siguientes lineas:

DefaultRoot ~

SQLBackend mysql

# The passwords in MySQL are encrypted using CRYPT

SQLAuthTypes Plaintext Crypt

Page 9: Proftpd y MySQL en Debian Lenny

SQLAuthenticate users groups

# used to connect to the database

# databasename@host database_user user_password

SQLConnectInfo ftp@localhost proftpd password

Nota: Aca en password ponemos la contraseña de MySQL

# Here we tell ProFTPd the names of the database columns in the "usertable"

# we want it to interact with. Match the names with those in the db

SQLUserInfo ftpuser userid passwd uid gid homedir shell

# Here we tell ProFTPd the names of the database columns in the "grouptable"

# we want it to interact with. Again the names match with those in the db

SQLGroupInfo ftpgroup groupname gid members

# set min UID and GID - otherwise these are 999 each

SQLMinID 500

# create a user's home directory on demand if it doesn't exist

CreateHome on

# Update count every time user logs in

SQLLog PASS updatecount

SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE

userid='%u'" ftpuser

# Update modified everytime user uploads or deletes a file

SQLLog STOR,DELE modified

SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

RootLogin off

Page 10: Proftpd y MySQL en Debian Lenny

RequireValidShell off

</IfModule>

Nota: Todas estas lineas deben quedar dentro de la sentencia </IfModule> ya que el

final del archivo antes de ingresar estos nuevos valores al final se encuentra

</IfModule>, entonces debemos ingresar los datos tal que dejemos </IfModule> al final

del archivo ya modificado o si no nuestra configuracion sera nula.

Luego reiniciamos nuestro servicio

Ingresamos nuevamente a la base de datos de MySQL:

Ingresamos a la base de datos de ftp:

Y creamos una entrada con el grupo y el usuario de la BD de ftp:

INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001,

'ftpuser');

Page 11: Proftpd y MySQL en Debian Lenny

INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`,

`count`, `accessed`, `modified`) VALUES (1, 'el usuario que queramos', 'contraseña

que queramos', 2001, 2001, 'directorio donde estan alojados los archivos',

'/sbin/nologin', 0, '', '');

En phpmyadmin:

En la tabla ftpgroup en la pestaña ingresar, escribimos los valores anteriormente

explicados

En la tabla ftpuser en la pestaña ingresar, escribimos nuestros valores anteriormente

explicados.

Salimos

Page 12: Proftpd y MySQL en Debian Lenny

Comprobamos que el directorio albert este en el grupo ftp y que el usuario sea ftpuser: