11.6 Como instalar nuestro propio servidor FTP

Imagen de ElSanto

Lo que se va a comentar a continuación es una manera muy sencilla de instalar un servidor de FTP anónimo para que otros usuarios puedan acceder a él mientras estemos conectados a Internet. Esto implica que podrán recoger ficheros así como dejarnos los ficheros que nosotros deseemos aceptar.

Para ello, y siguiendo la manera más sencilla posible, instalamos los paquetes anon-ftp y wu-ftpd y permitimos que estos habiliten la carga de los daemons necesarios en memoria (cosa que los paquetes rpm harán automáticamente al instalarlos con el parámetro -i):

  [root@localhost sromero]# rpm -i anonftp-2.5-1.rpm
  [root@localhost sromero]# rpm -i wu-ftpd-2.4.2b16-4.rpm

Si no disponemos de dichos paquetes los podemos obtener del ftp de RedHat (ftp.redhat.com), del subdirectorio pub/manhattan/contrib/i386, en formato rpm, para convertirlo a otros formatos de instalación (deb o tar.gz) mediante el script alien si fuera necesario. El primer paquete contiene la estructura básica de un servidor ftp mientras que el segundo contiene el servidor de ftp (un daemon) propiamente dicho.


El primero de los paquetes creará en /home/ftp una estructura de directorios que será el directorio raíz de nuestro ftp, siendo por defecto los siguientes:

  [root@localhost home/ftp]# ls   
  bin    etc    lib    pub

Este directorio (/home/ftp) será el directorio raíz de los usuarios de nuestro ftp, es decir, que cuando el usuario realice un dir al directorio raíz estará viendo los mismos directorios que nosotros en /home/ftp. La forma de añadir o quitar programas a nuestro ftp resulta, pues, muy sencilla, y se reduce a añadir programas y directorios en el directorio /home/ftp/pub, que es de donde los usuarios remotos deben coger los ficheros. En este subdirectorio crearemos los distintos directorios (ej: juegos, fotos, tutoriales, etc.) e incluiremos los ficheros que queremos que sean accesibles desde el exterior. Tras esto y un reset (o un simple reinicio del daemon) tendremos instalado nuestro servidor de ftp.

A la hora de decirle a alguien que puede entrar en nuestro servidor, recordemos que un usuario «de a pie» no suele disponer de una dirección de Internet propia (como ftp.netscape.com o ftp.idsoftware.com), sino que de lo único de que disponemos es (a menos que hayamos contratado nuestro propio dominio y dns) de una dirección IP a través de la cual somos accesibles desde el exterior. Si queremos que alguna persona del IRC (o, en general, cualquier usuario de Internet) entre en nuestro ftp, le deberemos comunicar nuestra IP ya que es perfectamente posible acceder a un ordenador remoto especificando la dirección IP en lugar del nombre. Para averiguar nuestra dirección IP basta con extraerla del archivo /var/log/messages, de los datos de la última conexión (al final del fichero):

  fecha localhost pppd[393]: Remote message: 
  fecha localhost pppd[393]: local IP address 195.5.78.128

Si estamos dentro del IRC otra manera de obtener nuestra dirección IP es mediante comandos del IRC (como /whois,
/dns, etc.) con nuestro nick identificativo (/whois Jose). Dicha IP se la comunicaremos a la persona que quiere entrar
en nuestro ftp para que pueda hacerlo mediante la orden ftp dir_IP:

  [pepe@OtraMaquina home]# ftp 195.5.78.128

Obviamente, parece muy incómodo tener que especificar cada vez nuestra nueva dirección IP, pero esto es así debido a que las direcciones IP asignadas por nuestro servidor varían en cada conexión, con las excepciones de que hayamos contratado una dirección IP fija (en cuyo caso no variará y todo el mundo podrá acceder a nuestro ftp usando la misma dirección) o de que hayamos contratado un nombre de dominio (como ftp.miftp.org), de manera que se pueda acceder al mismo desde esta notación nominal (mucho más sencillo). También es posible disponer de algún servicio de redirección de nombres a IPs, y hacer un ftp a dicho nombre.

Mediante el anterior comando, cualquier persona conectada a Internet (y mientras lo estemos nosotros), podrá acceder a nuestra jerarquía de directorios /home/ftp, y subir o descargar ficheros, así como utilizar todos los comandos de ftp que hemos visto en el presente artículo, y desde cualquiera de los clientes de ftp comentados (incluyendo, por ejemplo, Netscape) convirtiendo a nuestro ordenador en un servidor de ftp como otro cualquiera.

Si queremos testear si hemos configurado correctamente el ftp, podemos hacer un ftp sobre nuestra propia máquina de manera que se active nuestro servidor y podamos testear el servicio. Para ello especificaremos nuestra dirección IP de loopback (la dirección IP de nuestra máquina, 127.0.0.1), o el nombre de nuestra máquina (por ejemplo, localhost):

  [root@localhost sromero]# ftp 127.0.0.1
  [root@localhost sromero]# ftp localhost

En principio no debemos tener ningún problema en el test, aunque en caso de obtener un mensaje de «Connection refused», será necesario comprobar la existencia de la siguiente línea en el archivo de seguridad /etc/inetd.conf:

  ftp  stream  tcp  nowait  root  /usr/sbin/tcpd  in.ftpd -l -a

El objetivo de esto es permitir que nuestra máquina sea accesible vía FTP desde el exterior.

Existe un documento Howto sobre FTP anonimo que profundiza en la configuración del mismo, haciendo especial incapie en los aspectos de seguridad.