AaronMR Ingeniero Informatico

24Abr/090

4º Práctica – Pure-FTPd en Centos

El objetivo de esta práctica es que el alumno se familiarice con el proceso de instalación de un servidor FTP, tanto desde su vertiente Anónima como No Anónima.

Para ello necesitará instalar en el servidor el software correspondiente. De las diferentes implementaciones de servidores de ftp existentes, trabajaremos con el  Pure-FTPd.

Pure-FTPd es un servidor FTP libre basado en Troll-FTPd. Los principales objetivos de este servidor FTP son la eficiencia, la seguridad y la facilidad de uso. Está diseñado para ser seguro en su configuración por defecto; no tiene buffers overflows conocidos y es muy sencillo de instalar. Ha sido diseñado para los kernels modernos y ha sido portado con éxito a Linux,
FreeBSD, OpenBSD, BSDi, etc

Como ayuda haremos uso de la documentación presente en la web de PureFTP. Documentacion

El desarrollo de la práctica se realizará en varios apartados:

1) Obtener e instalar la última versión de pure-ftpd en la pasarela de su red.



Se procede a obtener la aplicación desde www.pureftpd.org.

Seleccionamos la última versión del directorio http://download.pureftpd.org/pub/pure-ftpd/releases/

Una vez descargada la última versión, procedemos a descomprimirla.

$ tar xvzf pure-ftpd-1.0.21.tar.gz

y según la documentación http://download.pureftpd.org/pub/pure-ftpd/doc/README instalamos haciendo dentro de la carpeta pure-ftpd-1.0.21 :

$ ./configure

$ make install-strip

Pero vamos a instalarlo con unas opciones básicas para poder realizar los siguientes apartados de la práctica.

$ ./configure --with-language=spanish --with-everything

$ make install-strip

2) Configurar el superdemonio xinetd en la pasarela de alguno de los subdominios para incluir el arranque del demonio bajo demanda, con la posibilidad de acceso remoto únicamente.

Para la instalación del superdemonio xinetd, procedemos de la siguiente forma:

Tecleamos en el terminal.

$ yum
 install 
xinetd

Una vez instalado, vamos a configurar el superdemonio como servicio, es decir para que arranque siempre que reiniciemos el sistema, para ello vamos a Sistema -> Administracion -> Servicios, buscamos el xinetd y lo marcamos.

A continuación creamos el fichero de configuración del servicio de ftp.

$ vim /etc/xinetd.d/pure-ftpd

En este archivo añadimos la siguientes líneas de configuración.

service
ftp

{

socket_type
=
stream
   // 
Tipo 
de 
transferencia 
de 
archivos.

server
=
/usr/local/sbin/pure‐ftpd
   //
Localización 
del 
servidor 
FTP 
en 
la 
máquina
 local.

protocol
=
tcp

user
=
root

wait
=
no
// Define
 si 
el 
servicio 
es 
multi hilo 
o 
no,
en 
este 
caso 
lo 
es.

disable
=
no
//
 Especifica
 si 
el 
servicio
 está 
activo
 o 
no.

}

Podemos comprobar que el superdemonio está activo mirando las conexiones que estan abiertas y a la espera.

$ netstat -ato

que nos devuelve lo siguiente, en donde podemos ver que el servicio está activo y a la espera.

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       Timer
tcp        0      0 *:ieee-mms                  *:*                         LISTEN      off (0.00/0/0)
tcp        0      0 *:sunrpc                      *:*                         LISTEN      off (0.00/0/0)
tcp        0      0 *:ftp                          *:*                         LISTEN      off (0.00/0/0)
tcp        0      0 *:smtp                         *:*                         LISTEN      off (0.00/0/0)

3) Configurar distintas formas de acceder al servidor ftp incorporando las opciones indicadas:

La mayor parte de los siguientes apartados se realizan con la activación de los parametros de configuración en el archivo de configuración /etc/xinetd.d/pure-ftpd.

a) Posibilidad de acceso como usuario anónimo.

Cuando un usuario se identifica como anónimo el servicio lo asocia por defecto con el usuario ftp del sistema. Para comprobar que la instalación del pure-ftpd ha creado y configurado este directorio hacemos lo siguiente.

Mirar que directorio se ha puesto por defecto para el usuario ftp, para ello miramos el archivo /etc/passwd.

$ cat /etc/passwd | grep ftp

lo que nos devuelve las líneas donde aparece el usuario FTP

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

La carpeta que se ha asignado por defecto esta en /var/ftp, si no estuviese por alguna razón entonces la crearíamos de la siguente forma.

$ mkdir /var/ftp
$ chown -R ftp /var/ftp
$ chmod -R 700 /var/ftp

Ahora para permitir el acceso de usuarios anónimos accedemos al archivo de configuración /etc/xinetd.d/pure-ftpd.

$ vim /etc/xinetd.d/pure-ftpd

e introducimos el siguiente parámetro en la línea server_args =.

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

server_args = -e

protocol = tcp

disable = no

}

Reiniciamos el servicio xinetd y procedemos a realizar una conexión por ftp para comprobar esta nueva configuración.

$ /etc/init.d/xinetd restart

$ ftp localhost

Donde podemos ver en negrita el mensaje que nos avisa de que sólo se permiten usuarios anónimos.

Connected to localhost.localdomain.
220---------- Bienvenido a Pure-FTPd ----------
220-Eres el usuario numero 1 de 50 permitidos
220-La hora local es ahora 09:52. Puerto del servidor: 21.
220-Solo se permite FTP anonimo
220-Las conexiones IPv6 tambien son bienvenidas en este servidor
220 Seras desconectado despuus de 15 minutos de inactividad.
500 Extensiones de seguridad no implementadas
500 Extensiones de seguridad no implementadas
KERBEROS_V4 rejected as an authentication type
Name (localhost:root):

a-1) Presentación de un mensaje de bienvenida cuando un usuario acceda al ftp.

Para presentar un mensaje de bienvenida debemos de crear un archivo donde esté contenido el mensaje a mostrar, este archivo lo crearemos en /var/ftp/.banner

$ vim /var/ftp/.banner

En donde pondremos el siguiente texto de bienvenida:

----------------------------------------------------------------------
Bienvenido al servidor Ftp del dominio  red2.redes.dis.ulpgc.es
Sientete como en tu casa...
-----------------------------------------------------------------------

Para comprobar que esta nueva configuración funciona, vamos a realizar una conexión por ftp a localhost, y veremos que cuando accedamos como usuario anónimo, el sistema nos muestra el contenido de este archivo.

$ ftp localhost
Connected to localhost.localdomain.
220---------- Bienvenido a Pure-FTPd ----------
220-Eres el usuario numero 1 de 50 permitidos
220-La hora local es ahora 09:58. Puerto del servidor: 21.
220-Solo se permite FTP anonimo
220-Las conexiones IPv6 tambien son bienvenidas en este servidor
220 Seras desconectado despues de 15 minutos de inactividad.
500 Extensiones de seguridad no implementadas
500 Extensiones de seguridad no implementadas
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): qwerty
230-----------------------------------------------------------------------
230-Bienvenido al servidor Ftp del dominio  red2.redes.dis.ulpgc.es
230-Sientete como en tu casa...
230------------------------------------------------------------------------

230 Usuario An�nimo dentro del sistema
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

a-2) Los usuarios no puedan salir de los directorios de los cuales son propietarios (chroot).

Para evitar que los usuarios no puedan salir de sus directorios, lo conseguiremos con el siguiente comando en el archivo de configuración:

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

server_args = -A
 //
 Mantiene a los usuarios 
en 
sus 
directorios.

protocol = tcp

disable = no

}

a-3) Presentación de mensajes de especificación de contenidos de los distintos directorios.

Para mostrar mensajes según se vayan accediendo a los directorios, únicamente tendremos que hacer es crear archivos .message en cada uno de los directorios que queremos que muestre un mensaje, en nuestro caso vamos a crear un directorio nuevo en /var/ftp/dirnuevo y crear el archivo del mensaje.

$ mkdir /var/ftp/dirnuevo

$ vim /var/ftp/dirnuevo/.message

----------------------------------------------------------------------
Hola estas en el directorio dirnuevo
-----------------------------------------------------------------------

Vamos a probar esto, conectamos por ftp a localhost como usuario anónimo y accedemos al directorio dirnuevo.

$ ftp localhost

ftp> cd dirnuevo
250-----------------------------------------------------------------------
250-Hola estas en el directorio dirnuevo
250------------------------------------------------------------------------

250 OK. El directorio actual es /dirnuevo
ftp>

a-4) Limitar el número de conexiones máximas.

Para limitar el número de conexiones máximas, hacemos uso del parámetro de configuración para el pure-ftpd "-c X", donde la X indica el número de conexiones.

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

server_args = -c 2

protocol = tcp

disable = no

}

a-5) Limitar el número de conexiones por dirección IP.

Para limitar el número de conexiones por IP, hacemos uso del parámetro de configuración para el pure-ftpd "-C X", en donde la X indica el numero de conexiones por IP .

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

server_args = -C 2

protocol = tcp

disable = no

}

a-6) Desconexión en caso de inactividad.

Para indicar el tiempo en el que un usuario puede estar conectado y sin actividad, se hace uso del parámetro "-l X" , donde la X indica el tiempo en minutos, por defecto el tiempo es de 15 minutos.

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

server_args = -l 5 // a los 5 minutos sin actividad se desconecta

protocol = tcp

disable = no

}

a-7) Limitar el tamaño utilizado de la partición.

Para limitar el tamaño utilizado de la particion hacemos uso del parámetro " -k X ", donde X es el porcentaje de la partición a usar.

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

server_args = -k 20 // se va a usar el 20% de la particion.

protocol = tcp

disable = no

}

a-8) Limitar el ancho de banda

Para limitar el ancho de banda que pueda usar un usuario, haremos uso del parámetro " -t X", donde la X indica los kb/s que puede usar un usuario.

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

server_args = -t 4 // se va a limitar el anch de banda a 4 kb/s

protocol = tcp

disable = no

}

b) Posibilidad de acceso en modo de usuario del sistema.

Para permitir el acceso de usuarios del sistema al servidor FTP, haremos uso del parámetro " -E "

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

server_args = -E // permitir usuarios del sistema

protocol = tcp

disable = no

}

b-1) Presentación de un mensaje de bienvenida cuando un usuario acceda al ftp.

Para mostrar un mensaje de bienvenida cuando el usuario accede a sistema se procede de igual forma que se hizo para mostrar el mensaje para usuarios anónimos, es decir, colocamos un archivo llamado .banner en el directorio personal de cada usuario.

$ vim /home/user1/.banner

----------------------------------------------

Bienvenido user1

----------------------------------------------

De esta forma cuando el usuario user1 acceda al ftp, verá este mensaje de bienvenida.

b-2) Los usuarios puedan salir de los directorios de los cuales son propietarios.

Para permitir que los usuarios puedan moverse libremente por el sistema, no hay que hacer nada, ya que como pudo verse antes, para evitar que los usuarios hiciesen esto, sólo habia que usar el parámetro -A, lo único que hay que hacer es no ponerlo y listo.

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

protocol = tcp

disable = no

}

b-3) Permitir el acceso a los ficheros definidos por el sistema.

Para permitir el acceso a los ficheros, debemos de actuar igual que en el caso anterior, es decir, no poner el parámetro -A.

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

protocol = tcp

disable = no

}

b-4) Desconexión en caso de inactividad.

Para indicar el tiempo en el que un usuario puede estar conectado y sin actividad, se hace uso del parámetro "-l X" , donde la X indica el tiempo en minutos, por defecto el tiempo es de 15 minutos.

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

server_args = -l 5 // se desconecta a los 5 minutos de inactividad.

protocol = tcp

disable = no

}

b-5) Limitar el ancho de banda.

Para limitar el ancho de banda que pueda usar un usuario, haremos uso del parámetro " -t X", donde la X indica los kb/s que puede usar un usuario.

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/local/sbin/pure-ftpd

server_args = -t 4 // se va a limitar el anch de banda a 4 kb/s

protocol = tcp

disable = no

}

c) Posibilidad de acceso como usuarios virtuales.

Para 
la 
creación 
de 
un 
usuario 
virtual 
se 
debe
 en 
primer 
lugar 
crear 
un 
grupo 
que 
se 
llamará
 “ftpgrupo”,
 a
 continuación
 se
 le
 añadirá
 al
 mismo
 el
 usuario
 con
 su
 correspondiente
 contraseña.

$ groupadd  ftpgrupo

$ useradd -g ftpgrupo -d /dev/null -s /etc/ ftpuser

useradd: aviso: el directorio personal ya existe.

No se copia ningún fichero del directorio skel en él.

$ pure-pw useradd usuario -u ftpuser -d /home/ftpuser/usuario

Password:

Enter it again:

$ pure-pw mkdb

Creamos
 la
 base
 de
 datos
 que
 usará
 realmente
 el
 Pure‐ftp.
 Este
 comando
 pasará
 el
 fichero
 de
 los
 usuarios
 virtuales
 a
 una
 base
 de
 datos
 .pdb
 (del
 fichero
 /etc/pureftpd.passwd
 a
 /etc/pureftpd.pdb) que
 usa
 estos
 nombres
 de
 ficheros
 que
 además
 serán
 los
 que
 busque
 el
 Pure‐ftp 
por 
defecto 
sin 
necesidad 
de
 especificarlo.

Si
 le
 pusiéramos
 otro
 nombre
 a
 .pdb
 tendríamos
 que
 indicar
 la
 ruta
 usando
 para
 ello
 el
 comando

‐lpuredb:<archivo.pdb>

En
 nuestro
 caso
 al
 usar
 los
 nombres
 por
 defecto
 no
 es
 necesario.

Se 
ha 
usado:

pure‐pw
mkdb.

Muchas gracias por vuestra atención.

Bookmark and Share
Comentarios (0) Trackbars (0)

Aún sin comentarios.


Deja un comentario


Aún sin trackbacks.

Páginas

Categorías

Blogroll

Archivo

Meta