PDF de programación - Servidor Ftp proFTPD

Imágen de pdf Servidor Ftp proFTPD

Servidor Ftp proFTPDgráfica de visualizaciones

Publicado el 15 de Marzo del 2019
186 visualizaciones desde el 15 de Marzo del 2019
159,0 KB
9 paginas
Creado hace 13a (23/09/2006)
Servidor Ftp proFTPD

José Domingo Mu ñoz Rodríguez <josedom24@gmail.com>
Alberto Molina Coballes <alberto.molina@hispalinux.es>

23 de septiembre de 2006

Resumen

En este documento vamos a explicar los pasos para instalar, configurar y
poner en funcionamiento el servidor ftp proFTPD. La utilización del servi-
dor ftp nos va permitir la gstión de forma remota de los sitios web creados
anteriormente. Nos vamos a centrar en la utilización de usuarios virtuales
cuya información vamos a guardar en una base de datos MySQL.

cJosé Domingo Mu ñoz Rodríguez y Alberto Molina Coballes. Algunos De-

rechos reservados.

Esta obra está bajo una licencia Attribution-ShareAlike 2.5 de Creative Com-

mons. Para ver una copia de esta licencia, visite:
http://creativecommons.org/licenses/by-sa/2.5/

1

1.

Introducción al servidor Ftp proFTPd

ProFTPd es un servidor FTP. Se promociona desde su página web como es-
table y seguro, cuando se configura correctamente. El servidor ProFTPd se pro-
mociona a sí mismo como un “Software servidor FTP altamente configurable con
licencia GPL” (Highly configurable GPL-licensed FTP server software).

2.

Instalación de MySQL

Como medida de seguridad vamos a utilizar usuarios virtuales para el acceso
a los ficheros mediante el protocolo ftp. Normalmente el servidor proFTPD uti-
liza los usuarios reales del sistema para el acceso a los archivos, pero esto puede
dar problemas de seguridad. Utilizando usuarios virtuales evitamos, entre otras
cosas, que si un usuario malicioso logra una cuenta FTP, tenga menos posibilida-
des de entrar en nuetro sistema.

Normalmente la información de los usuarios virtuales se guarda en un fichero
de texto plano, nosotros vamos a explicar la configuración del servidor para guar-
dar la información de los usuarios virtuales en una base de datos construida en
MySQL. Para instalar el servidor de base de datos MySQL utilizamos el comando
apt-get:
apt-get install mysql-server

Durante el proceso de intalación se bajarán e instalarán todos los paquetes para
que funcione MySQL. Una vez terminado la instalación, lo primero que tenemos
que hacer es cambiar la contrase ña al usuario root de MySQL:
mysqladmin -u root password nueva_password

3.

Instalación de proFTPd

Para instalar el servidor proFTPD, utilizamos el comando apt-get de la si-

guiente forma:
apt-get install proftpd

Durante la instalación debemos escoger la forma en que se va ejecutar este ser-
vicio, si lo hará bajo inetd o en forma independiente (como un proceso más). La
diferencia entre ambos métodos es la velocidad de ejecución que se obtendrá del
servicio y la carga que se le dará al equipo. Utilizando inetd el equipo iniciará un
proceso nuevo por cada petición ftp que llegue al equipo, mientras que ejecutándo-
se en forma independiente, el proceso ya esta inicializado por lo que no hay nece-
sidad ejecutar un nuevo programa (simplemente se clona el proceso, generando
una nueva instancia del mismo para atender al cliente ftp que inicio el requeri-
miento). Nosotros escogeremos la opción independiente.

4. Creación de la base de datos

ProFTPD, de forma normal, valida sobre el /etc/passwd y /etc/shadow,

por tanto necesita una tabla que simule los datos contenidos en estos ficheros.

2

También utiliza el /etc/group, por lo que necesitamos otra tabla del mismo

modo:

Tabla de usuarios:

username:Nombre del usuario

password: Contrase ña del usuario

uid: Identificador del usuario

gid: Identificador del grupo al que pertenece el usuario

homedir: Directorio donde tendrá acceso el usuario

activa: Ete campo lo usamos para activar y desactivar cuentas sin borrar el
usuario1

Tabla de grupos:

groupname: Nombre del grupo

gid: Identificador del grupo

members: Nombres de los usarios que pertenecen a este grupo

Como se puede ver es todo muy similar al /etc/passwd y /etc/group. Ahora
vamos a ver las instrucciones SQL para crear estas tablas.

Lo primero, creamos la base de datos que vamos a utilizar. Accedemos como

root:

debian:/home/jose\# mysql -u root -p
password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.24-Debian_1-log
Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.

mysql> create database ftpd;
Query OK, 1 row affected (0.05 sec)

Ahora generamos un usuario que acceda a la base de datos, para no utilizar el
usuario root:

mysql> GRANT ALL ON ftpd.{*} TO proftpd@localhost
IDENTIFIED BY "nueva_contraseña";

\\

Query OK, 0 rows affected (0.09 sec)

Es decir, hemos creado un nuevo usuario (proftpd) que se va a conectar desde
localhost, tiene permiso en todas las tablas de la base de datos que hemos creado
anteriormente y cuya contrase ña es “nueva contrase ña”. Este es el usuario que
utilzaremos para crear las tablas anteriormente descritas:

1Este campo no es necesario, pero lo vamos autilizar para tener una forma sencilla de activar
o desactivar los usuarios ftp. Se puede poner el valor que queramos, nosotros vamos a utilizar el
1 para indicar usuario activo u 0 para desactivar el usuario.

3

debian:/home/jose\# mysql -u proftpd -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.24-Debian_1-log
Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.

mysql> show databases;
+--------------------+
| Database
|
+--------------------+
| information_schema |
| ftpd
|
+--------------------+
2 rows in set (0.00 sec)

mysql> use ftpd;
Database changed

mysql> show tables;
Empty set (0.00 sec)

Hemos entrado con el usuario creado anteriormente, hemos visualizados las ba-
ses de datos, hemos indicado que la base de datos que vamos a utilizar es ftpd y
hemos mostrado las tablas, que como podemos observar no hay ninguna. Esta-
mos preparados para crear las tablas:

CREATE TABLE usuarios (
username char(12) NOT NULL,
password char(100) NOT NULL,
uid int(6) default NULL,
gid int(6) default NULL,
homedir char(50) default NULL,
shell char(20) default NULL,
activa tinyint(4) default ’1’ )
TYPE=MyISAM;

CREATE TABLE grupos (
groupname varchar(20) NOT NULL,
gid int(6) NOT NULL default ’65534’,
members longtext )

TYPE=MyISAM;

Veamos las tablas que hemos creado y su estructura:

mysql> show tables;

+----------------+
| Tables_in_ftpd |
+----------------+
|
| grupos
| usuarios
|

4

+----------------+
2 rows in set (0.00 sec)

| Type

mysql> describe usuarios;
+----------+------------+------+-----+---------+-------+
| Field
| Null | Key | Default | Extra |
+----------+------------+------+-----+---------+-------+
|
| username | char(12)
| NO
| password | char(100) | NO
|
| YES
|
| uid
| YES
|
| gid
| YES
| homedir | char(50)
|
|
| char(20)
| shell
| YES
| activa
| tinyint(4) | YES
|
+----------+------------+------+-----+---------+-------+
7 rows in set (0.06 sec)

|
|
| NULL
| NULL
| NULL
| NULL
| 1

| int(6)
| int(6)

|
|
|
|
|
|
|

|
|
|
|
|
|
|

| Type

mysql> describe grupos;
+-----------+-------------+------+-----+---------+-------+
| Field
| Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
|
| groupname | varchar(20) | NO
| gid
| NO
|
| members
|
| YES
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

|
| 65534
| NULL

| int(6)
| longtext

|
|
|

|
|
|

5. Configuración del servidor ProFTPd

La configuración del servidor proFTPd está en le fichero /etc/proftpd.conf,

la sintaxis que utiliza es parecida a la utilizada en apache, por lo que el usuario
acostumbrado a configurar apache le resultará familiar. La configurtación que
viene por defecto en el fichero nos viene bien, lo único que vamos a hacer es in-
troducir nuevas directivas para que el servidor proFTPd valide los usuarios utili-
zando la información guardada en nuestra base de datos MySQL. Las directivas
que vamos a introudcir en el fichero de configuración son las siguientes:

AuthPAM off : Para deshabilitar la autentificación PAM, es decir para que no
autentifique a los usuarios reales.

RequireValidShell off : Requiere una Shell válida para iniciar sección. Las shell
válidas son las que estan en /etc/shells.

DefaultRoot ˜: Para que cuando un usuario entra en el servidor ftp, no pueda
salir de su home a drectorios superiores.

Y por último nos queda las directivas de configuración para que proFTPd auten-
tifique los usarios virtuales cuya información vamos a guardar en las tablas de
nuestra base de datos. Antes de ver las directivas vamos a explicar cada una de
ellas:

SQLBackend: Con esta directiva indicamos el servidor de base de datos que
vamos a utilizar. En nuestro caso mysql.

5

SQLAuthTypes: En tipos de identificacion tenemos (entre otras) PlainText
(texto plano), Crypt (como en el /etc/shadow) o Backend (utiliza el sistema
propio de la base de datos). Aquí depende de con qué vayamos a cifrar las
contrase ñas en la base de datos. Si lo haces con CRYPT() usa Crypt, si usas
PASSWORD() usa Backend.

SQLAuthenticate: Con esta directiva decimos quien tiene que identificarse
en MySQL. Podemos seleccionar grupos o usuarios, yo me limito a decir
que todos: on.

SQLConnectInfo: Se indica los datos de la conexión a la base de datos. ba-
se de datos@host usuario contrase ña

SQLDefaultGID y SQLDefaultUID: Indican, respectivamente, los GID y UID
que se usan por defecto en caso de no poner nada en la tabla.

SQLMinUserGID y SQLMinUserUID: Indican el UID y el GID mínimo que
han de tener los usuarios para poder loguear.

SQLGroupInfo: Se indica el nombre de la tabla que posee la información de
los grupos, así como los nombres de los campos.

SQLUserInfo: Se indica el nombre de la tabla que posse la información de los
usuarios, así como los nombres de los campos2.

SQLUserWhereClause: Indica una condición a la hora de seleccionar los cam-
pos. Nosotros la usamos para controlar si una cuenta está activa o no3.

SQLLogFile: Se indica el archivo de log donde se guar
  • Links de descarga
http://lwp-l.com/pdf15509

Comentarios de: Servidor Ftp proFTPD (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad