¿Qué es un servidor ftp y cómo funciona.?

Un servidor ftp es un programa que se encarga de atender y procesar las distintas conexiones de los clientes ftp para que éstos puedan acceder al sistema de ficheros del equipo en el que están instalados.

Dependiendo de cómo realicemos la configuración del servidor ftp, los clientes ftp podrán o no subir y bajar archivos.

¿Cómo funciona un servidor ftp?

Su funcionamiento está basado en el  modelo cliente/servidor.

Cliente ftp.

Establecen conexión con el servidor ftp para subir o bajar archivos accediendo al sistema de ficheros del equipo en el que se ha instalado.

Servidor ftp.

Se encargan de manejar las conexiones de los clientes y dependiendo de los privilegios que éstos tengan podrán descargar y subir archivos.

Protocolo ftp.

Las conexiones entre clientes ftp y servidor ftp se realizan en base a unas reglas y normas. Utiliza como protocolo de transporte TCP.

¿Como instalar servidor ftp.?

Existen variedades de servidores ftp, nosotros nos centraremos en el servidor vsftpd.

Vamos a instalar nuestro ftp server en un equipo con sistema operativo debian Jessie 8.6, por lo tanto comenzamos actualizando la lista de paquetes y posteriormente con la instalación de vsftpd.

Ejecutamos los comandos siguientes:

# apt-get update

#apt-get install vsftpd

Una vez termina la instalación comprobamos que el vsftpd está iniciado.

servidor ftp iniciado

Con la instalación se crea un archivo de configuración /etc/vsftpd.conf, el cual tendremos que editar para cambiar e incluso añadir directivas con un determinado valor.

Estas directivas son las que tendrán las propiedades de configuración de nuestro servidor.

También se crea un directorio /srv/ftp que es el directorio predeterminado de los usuarios anónimos.

¿Cómo configurar servidor ftp?

Vsftpd se configura editando el archivo /etc/vsftpd.conf ya que es éste el archivo de configuración principal,asegúrate de hacer una copia de este archivo antes de tocar nada en él.

Vamos a configurar el servidor para que:

Permita conexiones de usuarios anónimos.

Editamos el archivo /etc/vsftpd.conf y comprobamos que está habilitado el acceso ausuarios anónimos. En mi caso el valor de la directiva era “NO” por tanto hay que cambiarla a “YES”.

servidor ftp conexión anonimo

Los usuarios anónimos podrán descargar archivos.

Localizamos la directiva correspondiente y comprobamos que su valor es YES.

servidor ftp descarga anonimo

Los usuarios anónimos no podrán subir archivos.

En el archivo vsftpd.conf el valor por defecto es YES, por tanto podemos comentar la directiva o le asignamos el valor NO.

servidor ftp anonimos subir

Todas las directivas que necesites añadir o consultar puedes encontrarlas en http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-ftp-vsftpd-conf.html.

Ahora configuraremos las directivas para los usuarios locales, pero antes debemos de crear a los usuarios que se van a conectar al servidor ftp.

Para ello ejecutamos los siguientes comandos en el terminal de nuestro servidor:

# adduser usuario1

# adduser usuario2

La configuración del servidor vsftpd para los usuarios locales es la siguiente:

Se permitirán conexiones a los usuarios locales.

Editamos el archivo /etc/vsftpd.conf, localizamos la siguiente directiva y le asignamos el valor YES.

local_enable=YES

Los usuarios locales podrán descargar archivos.

Esta opción por defecto es “YES”.

download_enable=YES

Los usuarios locales podrán subir archivos.

Para ello descomentamos la linea ya que su valor por defecto es “YES”.

write_enable=YES

Sólo podrán conectarse los usuarios locales usuario1 y usuario2.

Para ésta opción tendremos que añadir unas directivas en conjunto con otras para que sea posible su configuración.

Lo haremos utilizando una lista en la que pondremos quienes se podrán conectar, esos usuarios estaran reflejados en el fichero vsftpd.user_list.

Para ello creamos el fichero vsftpd.user_list , ya que éste fichero no se crea por defecto durante la instalación, y añadimos a nuestros usuario1 y usuario2.

servidor ftp fichero usuarios

servidor ftp directiva local

Con ésta configuración de directivas sólo los usuarios usuario1 y usuario2 podrán conectarse, pero si queremos que los usuarios anónimos se conecten, también tendremos que añadirlo a la lista.

Le estamos diciendo al servidor que los usuarios de la lista son los que tienen permiso y también hay que especificarle la ruta donde se encuentra el fichero que contiene la lista.

El usuario usuario1 no estará enjaulado en su directorio home.

Para llevar a cabo dicha configuración entran en juego la combinación de varias directivas con sus valores correspondientes.

Configuramos las siguientes directivas con estos valores y crearemos una lista en la que pondremos a los usuarios que no estarán enjaulados en su directorio, en este caso usuario1, editando el fichero vsftpd.chroot_list y añadimos el nombre del usuario usuario1.

servidor ftp directivas usuario1

servidor ftp usuario1

El fichero vsftpd.chroot_list es el que contendrá la lista y tendremos que crearlo ya que tampoco se crea por defecto en el proceso de instalación.

El mensaje de bienvenida del servidor será “Bienvenido a mi  servidor FTP”

Añadimos el mensaje  de bienvenida como el valor de la directiva ftpd_banner.

servidor ftp mensaje bienvenida

Cuando los usuarios anónimos accedan a su directorio home se les mostrará el
siguiente mensaje: “Directorio publico del servidor”.

En primer lugar activamos la directiva dirmessage_enable y creamos el fichero .message que es donde escribiremos el mensaje.

El fichero .message lo crearemos dentro del directorio /srv/ftp y con la directriz message_file le asignamos el fichero .message

servidor ftp mensaje anonymous

servidor ftp directiva mensaje anonymous

Si una conexión FTP permanece inactiva más de 60 segundos se cerrará la conexión.

servidor ftp conexion segundos

Se permitirán un máximo de 5 conexiones simultáneas al servidor.

El servidor solo podrá ocupar 10 MB/seg de ancho de banda.

Los usuarios anóminos solo podrán usar un ancho de banda de 1MB/seg.

Estas tres directivas son las siguientes:

servidor ftp parametros

El fichero de log será /var/log/vsftpd.log.

Para ello tendremos en consideración dos directivas, la primera es tener activada la siguiente directiva.

servidor ftp directiva log1

Y en esta otra se especifica el fichero donde se registrarán los logs.

servidor ftp directiva log2

Hasta aquí en cuanto a configuración, podéis seguir configurando las directivas que queráis, no olvidéis echar un vistazo al enlace que os he dejado arriba sobre las explicaciones de las directivas y su valor, ahora veremos si todo lo que hemos configurado funciona correctamente.

¿Cómo acceder a un servidor ftp?

Para poder llevar a cabo dicha conexión es necesario la utilización de un cliente ftp que se encargará de acceder al sistema de ficheros del equipo y establecerá la conexión con el servidor.

La mayoría de los sistemas operativos tienen integrado un cliente ftp que pueden ser llamados desde la consola de comandos con la orden “ftp”.

Conexión al servidor ftp.

Vamos a comprobar la conexión para un usuario anónimo desde cmd, invocando al comando ftp seguida de la ip del servidor, en mi caso, nos aparecerá el mensaje de bienvenida y a continuación tendremos que poner el nombre del usuario que se va a conectar, en éste caso anonymous y contraseña no ponemos.

servidor ftp conexion1

La conexión ha sido exitosa y podemos comprobar el mensaje de bienvenida al directorio por defecto de los usuarios anónimos que es el mismo mensaje que configuramos en el archivo .message.

El directorio de los usuarios anónimos es su directorio raíz, estará enjaulado en él, como es lógico por motivos de seguridad.

Comprobamos ahora que los usuarios anónimos sólo podrán descargar archivos, para ello utilizaremos los comandos put para subir archivos y get para descargarlos.

Este es el contenido de una carpeta que he creado llamada ftp:

servidor ftp contenido

Y éste es el contenido el directorio por defecto de los usuarios anónimos.

sevidor ftp contenido ftp

Subida y bajada de archivos del servidor ftp.

Vamos a ver que ocurre si intento subir y descargar archivos del servidor. Como veis no tengo permiso para subir pero si puedo descargar ficheros.

servidor ftp descarga

Si compruebo el directorio en el equipo cliente vemos como se ha transferido fichero1.txt. Puedo comprobarlo sin salir del servidor ftp poniendo el signo ! delante del comando dir.

servidor ftp comprueba descarga

Ahora vamos a comprobar la configuración que hemos hecho para los usuarios locales, usuario1 y usuario2 de los cuales sólo el usuario1 no estará enjaulado, es decir podrá cambiarse de directorio con total libertad.

servidor ftp enjaulado

Vemos como el usuario2 con el comando pwd puede comprobar dónde está y observamos que está enjaulado en lo que es su directorio raíz, a diferencia del usuario1, que podrá cambiar de directorio.

Para no extenderme demasiado con éste post deberías hacer las pruebas que consideres, subiendo y descargando archivos y si tienes alguna duda deja un comentario, intentaré ayudarte en todo lo que pueda.

Con el comando help saldrá un listado con los comandos ftp que puedes utilizar, además te dejo éste enlace que también te puede servir de ayuda http://colposfesz.galeon.com/ftp.htm.

Nos vemos en el siguiente post.

servidor ftp comandos

Deja un comentario

Menú de cierre