WU-FTPD -- FTP Anónimo

 

 

 

INSTALACIÓN, CONFIGURACIÓN Y MANTENIMIENTO

 

     

 

por Germán Martín Gómez

Administración de sistemas y servicios telemáticos

 

 

Índice:

1.- Objetivos y descripción del servicio

2.- Requisitos

3.- Arquitectura del servicio

4.- Configuración

        4.1.- Cuenta de usuario

        4.2 /etc/ftpusers

        4.3.- Configuración del directorio /home/ftp

        4.4.- Configuración avanzada

5.- Pruebas

6.- Gestión diaria

 

 

 

1.- Objetivos y descripción del servicio

 

WU-FTPD es un servidor ftp anónimo.El objetivo de este servidor es proporcionar a usuarios externos a nuestro servidor un acceso de forma restringida al sistema.

En Internet existen millones de ficheros disponibles para que cualquier usuario los descargue en su ordenador. Empleando un proceso denominado Protocolo de Transferencia de Ficheros o FTP , puedes recuperar el fichero deseado desde un ordenador remoto y transferirlo a tudisco duro. La parte protocolo de FTP se refiere al conjunto de mensajes predefinidos y estándares que permite recuperar un fichero independientemente del ordenador que se utilice.

La velocidad de transferencia de archivos usando FTP es muy variable y depende del mínimo de las velocidades del receptor o del emisor, así como del estado de las líneas. El uso de este protocolo está muy extendido y ello provoca sobrecarga en líneas y en el trabajo tanto de servidor como de clientes.

 

 

2.- Requisitos

 

Los requisitos que debe cumplir el sistema son:

 

3.- Arquitectura del servicio

 

    La arquitectura del servicio se basa en un modelo cliente-servidor,donde el cliente serán usuarios externos a nuestro sistema y el servidor se instalará en nuestro sistema.

    FTP (File Transfer Protocol) es un protocolo para la transferencia de ficheros. FTP fue uno de los primeros protocolos usados en redes TCP/IP e Internet.Aunque el World Wide Web ha sustituido muchas de las funciones de FTP, sin embargo FTP sigue siendo la unica forma de transferencia de ficheros de un ordenador a otro a través de Internet.

    Para usar FTP para transferir archivos entre dos ordenadores,cada uno de estos ordenadores deben soportar sus respectivos papeles, es decir, uno debe ser el cliente FTP y el otro el servidor FTP. El cliente envía comandos al servidor y éste los lleva a cabo. Estos comandos pueden ser bajar o subir ficheros al servidor,cambiar de directorio o crear un directorio en el servidor, etc.

    FTP usa TCP como protocolo de transporte para toda la comunicación e intercambio de datos entre cliente y servidor.TCP es un protocolo orientado a conexión.Esto quiere decir que se debe establecer una conexión entre los dos nodos antes de que empiece el intercambio de datos entre ambos.Esta conexión estará activa durante toda la sesión FTP. Una conexión orientada a conexión se caracteriza por incorporar mecanismos de detección y correción de errores y por su fiabilidad. Por eso se puede decir que FTP es muy fiable.

    FTP usa dos conexiones TCP distintas, una conexión TCP de control y otra conexión TCP de transferencia de datos. La conexión de control se encarga de   iniciar la comunicación entre le cliente y el servidor y mantenerla activa, mientras que la conexión de transferencia de datos tiene como objetivo enviar datos entre cliente y servidor.La conexión de transferencia de datos existe solo cuando hay datos que transmitir.Esta conexión se cierra cuando la transferencia de datos ha acabado, mientras que la conexión de control sigue abierta durate toda la sesión.

    Cuando el servidor FTP está activo en una máquina, está constantemente escuchando en el puerto 21 esperando la llegada de una petición de conexión de un cliente. Cuando un cliente quiere iniciar una sesión FTP en una maquina remota se sigue el siguiente procedimiento para abrir una conexión de control:

  1.     Se asigna un número de puerto TCP mayor de 1023 para la aplicación cliente.
  2.     TCP crea un paquete que incluye la siguiente información:
    •         Dirección IP del cliente.
    •         Número de puerto del cliente, que será mayor de 1023.
    •         Dirección IP del servidor.
    •         Número de puerto del servidor, en este caso el 21.
  3.     El paquete es enviado a traves de la red hasta la dirección IP del servidor.
  4.     El servidor recibe el paquete a traves del puerto 21 y procesa los datos.
  5.     El servidor FTP envía un asentimiento al cliente usando la información que el cliente le envió como es la dirección IP y número de puerto del cliente.

    En este momento la sesión FTP está iniciada y comienza el intercambio de datos para la transferencia de ficheros propiamente dicha.

   

 

4.- Configuración

 

    La instalación del servidor ftp se realiza ejecutando

apt-get –install wu-ftpd-academ_2.4.2.16-9.dev

    A continuación se nos preguntaran algunas cuestiones:

Do you want to set up or update an anonymous FTP account now?

    Nos preguntan si queremos crear una cuenta de ftp anónimo.Diremos que si,ya que éste es nuestro propósito.

Enter the name of the ftp home directory : [/home/ftp]

    Debemos indicar donde estará el directorio raíz de ftp.

    Una vez hecho esto, el servidor ftp anónimo estará instalado.A continuación se expondrá la forma de configurarlo.

 

 

    Se deben configurar varias cosas, teniendo mucho cuidado por los aspectos de seguridad ya que se trata de un servicio por el cual usuarios externos se conectan a nuestro sistema.

 

4.1.- Cuenta de usuario

 

    Normalmente Debian crea la cuenta del usuario ftp. Para cerciorarse editamos el fichero /etc/passwd. Este fichero debería tener una línea parecida a esta:

ftp:*:15:40::/home/ftp:/bin/false

    donde

                            ftp es el nombre de usuario,

*: Contraseña.El demonio necesita una,así que pondremos una falsa.De esta forma se evita el acceso shell del usuario ftp. El acceso al sistema del usuario ftp queda limitado a la función de ejecutar el demonio.

                            15: UID de usuario.Es variable

                            40: Identificador del grupo del usuario.También puede variar.

/home/ftp : Directorio raíz de ftp. Aquí aparecerá el nombre del directorio que se haya introducido en el proceso de instalación.Hay que tener especial cuidado en este campo por motivos de seguridad,ya que este directorio es el que vamos a compartir con los usuarios externos que entren al sistema como anonymous. Si se pusiera el directorio / , estaríamos compartiendo todo nuestro sistema.Los usuarios que entren en el sistema vía ftp con un nombre de usuario existente en el sistema, iniciará la sesión en su directorio home.

/bin/false : Nombre de la shell a ejecutar.El demonio necesita una shell que ejecutar.Si no existe,se debe crear.Para ello se crea un fichero llamado false, con los permisos rwxr-xr-x y que resida en el directorio /bin . Además esta shell debe aparecer en el fichero /etc/shells.Si no lo está,se debe añadir.El contenido de este fichero puede ser, por ejemplo:

#!/bin/sh

exit 1

 

 

4.2 /etc/ftpusers

 

    En este fichero se indicará los nombres de usuarios que nunca podrán entrar en el ftp,de forma que si un usuario cuyo nombre esta incluido en esta lista se intenta conectar vía ftp, se le denegará el acceso.

    Un ejemplo de este fichero puede ser:

root

daemon

bin

sys

 

 

4.3.- Configuración del directorio /home/ftp

 

    El directorio /home/ftp debe cumplir ciertas condiciones para mantener la seguridad:

 

4.3.1.- Directorio /home/ftp

    El directorio raíz de ftp debe tener como propietario root , prohibición de escritura para todos los usuarios pero acceso de ejecución para todos los usuarios: chmod 555. Es decir, debe aparecer algo así :

dr-xr-xr-x 6 root    root 1024 May 24 20:45 ftp

 

 

4.3.2.- Directorio /home/ftp/bin

    Este directorio contendrá todos los ejecutables que el usuario del servicio ftp podrá ejecutar. /home/ftp/bin debe ser propiedad del root y sin acceso de escritura y lectura para todos los usuarios, solo de ejecución:

d--x--x--x 2 root    root 1024 May 24 20:45 bin

    Los ficheros que contiene este directorio deben tener acceso de ejecución para todos los usuarios y prohibición de escritura y lectura (chmod 111).Un ejemplo del contenido de este directorio puede ser

 

---x--x--x 1 root root 15204 Mar 24 2000 compress

---x--x--x 1 root root 52388 Mar 24 2000 cpio

---x--x--x 1 root root 50384 Mar 24 2000 gzip

---x--x--x 1 root root 29308 Mar 24 2000 ls

---x--x--x 1 root root 62660 Mar 24 2000 sh

---x--x--x 1 root root 110668 Mar 24 2000 tar

 

4.3.3.- Directorio /home/ftp/etc

    Este directorio debe ser propiedad de root y permiso de solo ejecución:

d--x--x--x 2 root root 1024 May 24 20:45 bin

    Los ficheros que contiene /home/ftp/etc son:

 

-r--r--r-- 1 root root 53 Mar 24 2000 group

-rw-r--r-- 1 root root 31940 Mar 24 2000 ld.so.cache

-r--r--r-- 1 root root 79 Mar 24 2000 passwd

-r--r--r-- 1 root root 63 May 24 2000 pathmsg

 

root:*:0:0:root::

ftp:*:10::anonymous FTP::

root::0:

staff:::

 

Estos ficheros deben tener permiso de sólo lectura.

 

4.3.4.- /home/ftp/lib

    Este directorio contiene dos tipos de archivos:

    Un ejemplo del contenido de este directorio sería:

-rwxr-xr-x 1 root root 77968 Mar 21 1999 ld-2.1.1.so

lrwxrwxrwx 1 root root 11 May 21 17:41 ld-linux.so.2 -> ld-2.1.1.so

-rwxr-xr-x 1 root root 1031004 Mar 21 1999 libc-2.1.1.so

lrwxrwxrwx 1 root root 13 May 21 17:41 libc.so.6 -> libc-2.1.1.so

-rwxr-xr-x 1 root root 77196 Mar 21 1999 libnsl-2.1.1.so

lrwxrwxrwx 1 root root 15 May 21 17:41 libnsl.so.1 -> libnsl-2.1.1.so

-rwxr-xr-x 1 root root 33596 Mar 21 1999 libnss_files-2.1.1.so

lrwxrwxrwx 1 root root 21 May 21 17:41 libnss_files.so.2 -> libnss_files-2.1.1.so

 

4.3.5.- /home/ftp/pub

    En este directorio se alojaran todos los ficheros que se van a compartir,es decir,los ficheros accesibles vía ftp. Su propietario debe ser ftp y deben tener permisos de ejecución y de lectura.

    Dotar a estos ficheros de permiso de escritura es muy peligroso y es recomendable tener un directorio especifico para las subidas de ficheros (escritura en nuestro servidor).Este directorio será /home/ftp/pub/incoming.

 

4.3.6.- /home/ftp/pub/incoming

    En este directorio permitiremos la subida de ficheros a nuestro servidor.El directorio tendrá permisos de ejecución y de escritura,pero no de lectura.Tendrá un aspecto como este:

dr-xr-xr-x 2 root    root 1024 May 24 20:45 incoming

    Prohibir el acceso de lectura a este directorio se hace para que sólo personas autorizadas vean el contenido del directorio.Si quisiéramos un directorio para compartir ficheros,le añadiriamos el permiso de lectura.

 

4.4.- Configuración avanzada

 

4.4.1.- Accesos.

    Se puede configurar los accesos :

loginfails X

                        donde X indica el número de intentos.

Class local real,guest,anonymous         *.my.domain 138.4.0.0

Class remote real,guest,anonymous        *

Class     all         real,guest,anonymous    *

La primera línea permite un acceso local para usuarios reales, invitados y anónimos de mi dominio.La segunda línea permite un acceso remoto para usuarios reales,invitados y anónimos de toda la red (*) .La tercera línea permite un acceso tanto local como remoto de usuarios reales,invitados y anónimos de toda la red.Cada uno configurará esta parte según sus preferencias.

Limit local 20 any /etc/wu-ftpd-academ/msg.toomany

Limit remote 50 any /etc/wu-ftpd-academ/msg.toomany

Limit all 70 any /etc/wu-ftpd-academ/msg.toomany

En esta situación se está limitando a veinte usuarios locales,cincuenta remotos y setenta para el total.Si algún usuario intenta entrar al sistema sobrepasando alguno de estos valores,el sistema le mostrará el mensaje incluido en el fichero /etc/wu-ftpd-academ/msg.toomany

Esta restricción se suele hacer por problemas de sobrecargas en la red,en la máquina,etc.

 

4.4.2.- Modificación de archivos

    Se pueden dar permisos o prohibiciones para la modificación de las propiedades de los archivos.Esto también se hace en el fichero /etc/ftpaccess:

compress         yes          all

tar                      yes          all

chmod          no     guest,anonymous

delete         no           guest,anonymous

overwrite no        guest,anonymous

rename        no    guest,anonymous

    Este ejemplo indica que no es posible aplicar chmod,delete,overwrite o rename para los usuarios invitados y anónimos,mientras que permitimos aplicar compress y tar para todos los usuarios

 

4.4.3.- Subidas de ficheros.

    La subida de ficheros se hará en el directorio /home/ftp/pub/incoming.Con las siguientes líneas se configura para dotarlo de mayor seguridad:

Upload     /home/ftp          *                          no

Upload       /home/ftp       /pub/incoming     yes     ftp     0666 nodirs

    La primera línea indica que no se puede realizar subidas de ficheros en /home/ftp ni ninguno de sus directorios.La segunda línea indica que la subida de ficheros esta permitida en el directorio /home/ftp/pub/incoming, que el permiso de los ficheros será 0666 y que no se podrá crear directorios.

 

5.- Pruebas

 

    Para comprobar que el servidor ftp esta operativo realizaremos un ftp contra nuestro propio servidor.Esto se realiza mediante ftp 127.0.0.1

 

<root@localhost>$ftp 127.0.0.1

Connected to 127.0.0.1.

220 localhost.localdomain FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.

Name (127.0.0.1:root): anonymous

331 Guest login ok, send your complete e-mail address as password.

230 Guest login ok, access restrictions apply.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

total 24

drwxr-xr-x 6 root root 4096 May 21 15:41 .

drwxr-xr-x 6 root root 4096 May 21 15:41 ..

d--x--x--x 2 root root 4096 May 21 15:41 bin

d--x--x--x 2 root root 4096 May 21 15:42 etc

drwxr-xr-x 2 root root 4096 May 21 15:41 lib

drwxr-sr-x 2 root ftp 4096 Mar 21 1999 pub

226 Transfer complete.

ftp> quit

221-You have transferred 0 bytes in 0 files.

221-Total traffic for this session was 819 bytes in 1 transfers.

221-Thank you for using the FTP service on localhost.localdomain.

221 Goodbye.

 

 

    En esta prueba nos hemos conectado a nuestro servidor ftp, hemos hecho un listado del directorio (ls) y nos hemos desconectado (quit).

 

 

6.- Gestión diaria

 

    Una vez el servidor esté funcionando,la gestión diaria estará formada por actividades de mantenimiento del servidor: