Software">
Tema 3-FTP
Tema 3-FTP
Tema 3-FTP
SERVICIO FTP
1. Definición
El servicio FTP (File Transfer Protocol, Protocolo de Transferencia de Ficheros) proporciona un
mecanismo estándar para transferir archivos entre sistemas situados en redes TCP/IP.
Este protocolo FTP se encuentra descrito en el documento RFC0959.
Para entrar en un servidor FTP se necesita un usuario y una contraseña, aunque algunos servidores
tienen una cuenta anónima (anonymous) que permite el acceso a cualquier persona, pero sólo a zonas
restringidas. Para esta cuenta anónima suele usarse el usuario "anonymous" y la contraseña suele ser
"guest" (invitado) o en blanco, en caso de que sean solicitados.
Un inconveniente del servicio FTP es que el usuario y su contraseña, así como los datos se
envían sin cifrar, por lo que los programas sniffer podrían captar la información.
2. Tipos de usuario
El usuario que se conecte por FTP a un servidor puede ser:
Usuario del sistema: un usuario del sistema operativo del servidor FTP donde se conecte; podrá
acceder a las carpetas y archivos a los que dicho usuario tenga permiso según la configuración del
sistema operativo (Ubuntu, Windows, etc.).
Usuario anónimo: no es necesario estar dado de alta; el servidor FTP se puede configurar para
permitir el acceso a este tipo de usuarios, en caso contrario no se podrá acceder de forma
anónima a dicho servidor; el usuario anónimo sólo tendrá acceso a los lugares que haya
indicado previamente el administrador FTP.
Usuario virtual: un usuario creado específicamente en el servidor FTP (aparte de los usuarios del
sistema) para permitirle el acceso por FTP; el servidor FTP (el programa que es servidor FTP)
mantiene una base de datos propia con estos
usuarios; podrán acceder a los lugares que el administrador haya indicado previamente para
cada usuario.
La existencia de los usuarios anónimos ha hecho posible el uso masivo de las descargas en Internet
de muchos servidores FTP.
El administrador del servidor FTP debe organizar la información y establecer el nivel de seguridad
para que los usuarios puedan acceder a los sitios permitidos y no a zonas del disco restringidas.
3. Tipos de transferencia
La transferencia de los ficheros de datos por FTP puede ser de dos tipos:
ASCII: para ficheros ASCII, es decir ficheros en modo texto; es la opción por defecto; se
utilizará para archivos de texto, que son directamente legibles; el código ASCII se compone de un
juego de 256 caracteres (del 0 al 31 son caracteres de control, no imprimibles), incluyendo letras
mayúsculas y minúsculas, números, signos de puntuación, etc; algunos de estos ficheros
pueden ser .html, .txt, etc. Se activa con el comando FTP "ascii"
Binario: para ficheros binarios, es decir ficheros que contienen datos no legibles directamente, por
ejemplo un fichero gráfico .jpg; algunos de estos archivos son los gráficos, programas, archivos
comprimidos, los .doc, .pdf, .odt, etc. Se activa con el comando FTP "binary".
Para poder establecer una conexión con el protocolo FTP son necesarias dos partes: un servidor y un cliente.
Existen múltiples tipos de clientes ftp, desde clientes en terminal de comandos, como ftp o lftp, clientes
gráficos como gftp o FileZilla, hasta un cliente ftp en los navegadores mediante ftp://
¿Cuál elegir? Pues, como todo, depende:
¿Conoces la consola ftp? Si te manejas con soltura en la consola ftp puedes pensar en un cliente ftp de
comandos que permita utilizar la tecla "tabulado" después de escribir unos caracteres para
complemetar los nombres de archivos.
¿Cuál es el uso que necesitas? ¿Para qué lo vas a utilizar? A lo mejor solamente quieres visitar un
servidor ftp y descargar un archivo sin tener que andar instalando nuevos programas. En este caso
puedes utilizar el cliente ftp del navegador, ftp://
¿Quieres reanudar la conexión en caso de corte en la misma? En este caso mejor un cliente tipo
gráfico.
¿Deseas facilidad de manejo? Un cliente terminal de comandos suele ser menos interactivo que uno
gráfico, debes saber manejarte con comandos en la consola ftp, mientras que en un cliente gráfico
puedes manejarte a través de clics del ratón. Los clientes gráficos suelen ser más amigables y por lo
tanto más utilizados.
¿Qué tipo de conexión quieres establecer? ¿cifrada? ¿no cifrada? Dependiendo del tipo de conexión
debes emplear un cliente u otro, ya que no todos los clientes ftp permiten conexiones cifradas.
¿Deseas recordar conexiones ( sitios)? Pues lo mismo, no todos los clientes ftp lo permiten. Un cliente
ftp muy recomendable es el cliente gráfico ftp FileZilla, ya que posee las siguientes características
El directorio donde se almacenan los ficheros y carpetas que el usuario por defecto (ftp) envia al
servidor ftp se almacenan en el directorio /srv/ftp
El fichero de configuración de este servicio es /etc/vsftpd.conf. Cada vez que se realice alguna
modificación en dicho fichero, debe reiniciarse el servicio con stop y start, o simplemente con restart.
Algunas opciones importantes de ese fichero de configuración son (si una línea comienza por # no
tiene efecto, es un comentario; para que dicha línea sea activada debe quitarse el símbolo # del inicio de la
línea)
Algunas directivas importantes :
anonymous_enable=YES
Para permitir el acceso a usuarios anónimos. Si el valor fuera "NO", los usuarios que quieran entrar,
deben siempre tener su propio usuario y contraseña. Si el valor está a “YES”, el cliente FTP que desee entrar
como usuario anónimo debe teclear en el campo “Usuario” el valor “anonymous” y en el campo
“Contraseña” simplemente pulsar INTRO dejándola vacía (este programa no es necesario "guest" como
contraseña).
anon_root=Carpeta
Carpeta o directorio del servidor FTP donde se colocará el usuario anónimo cuando entre; esa
carpeta debe tener los permisos adecuados, por ejemplo 755; debemos crear esa carpeta, por ejemplo
/home/anon para ponerla después en esa directiva: anon_root=/home/anon
Esa carpeta se crea con: mkdir /home/anon
Y se da permiso para leer con: chmod 755 /home/anon
Si copiamos algún fichero en esa carpeta, cuando el usuario anonymous entre en el servidor FTP,
podrá ver dicho archivo (y descargarlo).
local_enable=YES
Para permitir el acceso a los usuarios locales del sistema (usuarios del sistema operativo).
write_enable=YES
Para que los usuarios que entren no sólo puedan descargar ficheros (read), sino también subirlos al
servidor FTP (write), así como crear carpetas.
anon_upload_enable=NO
Para no permitir que un usuario anónimo pueda subir archivos al servidor FTP.
anon_mkdir_write_enable=NO
Para no permitir que un usuario anónimo pueda crear carpetas en el servidor
local_root=Carpeta
Carpeta o directorio del servidor FTP donde se colocará el cliente cuando conecte con un
usuario local; esa carpeta debe tener los permisos adecuados, por ejemplo 755. Si no se escribe esta
directiva, cada usuario entrará en su propia carpeta personal (por ejemplo, /home/smr). Si queremos que
todos los usuarios locales vayan a la misma carpeta, se pone en esa directiva, por ejemplo:
local_root=/home/anon (por ejemplo, la misma carpeta que hemos indicado antes para el usuario anónimo).
chroot_local_user=YES
Para restringir a los usuarios a su carpeta personal, de forma que no podrán acceder fuera de la
misma, o sea los usuarios estan enjaulados en su carpeta personal.
local_max_rate=10240
Para limitar la tasa de transferencia en bytes por segundo a los clientes FTP que utilicen un usuario
del servidor. En el caso anterior se limita la tasa de transferencia a
10KB/s.
anon_max_rate=10240
Para limitar la tasa de transferencia en bytes por segundo a los clientes que utilicen el usuario FTP
anónimo. En el caso anterior se limita la tasa de transferencia a 10KB/s.
max_clients=3
Para indicar el número máximo de clientes que podrán conectarse simultáneamente al servidor. En
el caso anterior se establece a 3.
max_per_ip=3
Para indicar el número máximo de clientes que podrán conectarse simultáneamente al servidor
desde la misma dirección de Internet (desde la misma IP, por ejemplo desde el mismo router).
idle_session _timeout=300
Si el cliente FTP está ese tiempo (en segundos) sin trabajar será desconectado automáticamente.
local_umask=022
Para establecer los permisos de los archivos que suba un usuario local. Por defecto los archivos
adquieren permiso de lectura y escritura para el usuario y ningún permiso para el resto; es conveniente
utilizar el valor 022 para que el resto de usuarios tengan permiso de lectura. Como el valor es una
máscara (umask), se escribe el valor contrario al que deseamos poner (022 es lo contrario de 755).
Puedes ejecutar la orden de manual man vsftpd.conf, para conocer más detalles sobre cada parámetro de
configuración.
Si realiza alguna modificación el fichero de configuración debe reiniciar el servicio vsftpd para que
las modificaciones se tengan en cuenta.
Al instalar vsftpd, el sistema no queda configurado para que se inicie el servicio cada vez que se
encienda el ordenador. Puede comprobarse en la carepta /etc/rc2.d donde no aparece ninguna entrada
con el nombre ftp. Para que sí se inicie el ftp al encender el equipo, se ejecuta el comando:
# ftp <IPDelServidor>
En lugar de "ftp" puede utilizarse "sftp" de este modo la conexión es segura, de la forma:
# sftp usuario@IPDelServidor
ftp es un comando cliente FTP en modo texto que ya viene instalado en Linux y que nos
permite conectar con cualquier servidor FTP. Una vez conectado, si tecleamos el signo de
interrogación "?" o "help" aparecerá una lista de los comandos FTP que se pueden utilizar. Para saber
qué hace cada comando se escribe el signo "?" (o "help") y después el comando, por ejemplo para el
comando lcd:
Otro cliente FTP es el propio navegador de Internet, donde debe teclearse la dirección
ftp://<DirecciónDelServidorFTP> (en lugar de comenzar por http: comenzará por ftp:).
Sin embargo, lo más apropiado es utilizar un cliente FTP en modo gráfico, como puede ser el
programa gFTP para Linux. Puede instalarse con el "Gestor de paquetes Synaptic" o con la orden:
Una vez instalado el cliente gFTP, este programa aparecerá en “Aplicaciones – gFTP”. Al
ejecutarlo podremos escribir en la parte superior el nombre o la IP del servidor FTP, así como el
usuario y la contraseña que deseamos usar para entrar. El icono superior izquierdo( ) nos permite
conectar y también desconectar.
Al conectar con el servidor aparece la ventana dividida en 2 zonas: la izquierda para el equipo local
(cliente) y la derecha para el remoto (servidor). Las 2 flechas centrales, situadas entre las citadas zonas, se
usan para descargar (flecha hacia la izquierda, hacia el cliente local) o subir (flecha hacia la derecha, hacia
el servidor remoto) los archivos seleccionados previamente. Otra zona inferior de la ventana nos informa
del proceso de conexión y transferencia. Lógicamente el símbolo .. (dos puntos seguidos) se utiliza para
subir de directorio, o sea para situarse en el directorio padre del actual.
Se puede crear una nueva carpeta, tanto en el servidor (remoto) como en el cliente (local),
pulsando el botón derecho en cualquier punto de la zona correspondiente y “Carpeta nueva”, siempre que
tengamos permiso para ello. Del mismo modo podrá eliminarse una carpeta o archivo, seleccionándolo
previamente. Como podemos ver, otras opciones interesantes que aparecen son “Permisos” y
“Renombrar”. Esas mismas opciones las tenemos en el menú superior, dentro de “Local” y “Remoto”.
En dicho menú superior además encontramos la opción “FTP”, donde podremos elegir entre
transferencia binaria o ASCII. La opción “Marcadores” para crear sitios FTP favoritos y la opción
“Registros” para ver un histórico de las operaciones realizadas.
También en la opción “FTP” tenemos “Preferencias” para configurar nuestro cliente FTP. Dentro
de la pestaña “Red” podremos establecer el tiempo de espera, el número de reintentos, la tasa máxima de
transferencia (KB/s) y el “Protocolo predeterminado”, donde podremos elegir “SSH2” para que la
información viaje encriptada; lógicamente el servidor FTP debe tener funcionando un servidor SSH, como
openssh-server.
6. FTP para Windows
Si pulsamos en "Sitios FTP", pulsamos “haga click aqui para iniciar”, pinchamos “sitio FTP”
boton secundario—Nuevo .. --- Sitio FTP, para crear un nuevo sitio FTP en nuestro servidor Windows.
Ahora salta un asistente donde se nos pide entre otros datos la IP del servidor FTP.
En el menú de la izquierda, dentro del Servidor y "Sitios" aparecerá nuestro nuevo sitio FTP. Este
nuevo sitio queda iniciado al crearlo. Al seleccionar el nuevo sitio, a la derecha aparece el menú
"Acciones", que nos permite aplicar ciertas funciones al sitio, como "Detener", "Reiniciar" y configurar
algunas opciones. Si se pulsa botón derecho sobre el sitio, aparece un menú con algunas de esas
mismas opciones anteriores, además de la opción "Quitar" para eliminar el sitio.
Además en la zona central aparece una serie de iconos para más opciones de configuración del sitio
seleccionado.
Si creamos varios sitios FTP en el servidor en el mismo puerto 21, sólo podrá haber uno iniciado;
el resto deben estar parados (aplicarles "Detener"). Para tener varios sitios FTP funcionando
simultáneamente sobre el mismo servidor, cada uno debe utilizar un puerto diferente, pero esto
complicaría el acceso.
Colocamos varios archivos cualesquiera (de pequeño tamaño) en la carpeta raíz del sitio (C:\
Inetpub\ftproot), para que los usuarios que conecten puedan verlos.
Ahora podemos conectar con ese sitio FTP desde un cliente Windows (o Linux), por ejemplo con
el comando ftp: c:/>ftp IP_Del_ServidorFTP
El usuario que entre se sitúa en la carpeta indicada anteeriormente para el sitio FTP, es decir en C:\
inetpub\ftproot, llamada carpeta raíz del sitio FTP, y no podrá salir de ella hacia arriba, pero si tuviera
subdirectorios, sí podría entrar en ellos.
Los usuarios conectados al sitio FTP no podrán salir de la carpeta raíz hacia carpetas superiores.
Por ejemplo, no podrán ver el contenido de la carpeta C:\inetpub, ni por supuesto de C:\.
Si al crear el sitio se marcó la opción "Escribir", los usuarios (excepto el usuario anonymous)
podrán subir archivos (put), borrar archivos (del) y crear carpetas (mkdir carpeta); esto no se puede hacer
si usamos el navegador para conectar, pero sí cuando usamos el modo comando. Por ejemplo, entramos
como "Administrador": c:/>ftp IP_Del_ServidorFTP
Usuario: Administrador
Passwd: "su clave"
El usuario anónimo no podrá crear carpetas, ni subir archivos; es decir no puede modificar el
contenido de la carpeta raíz del sitio ftp (ni sus subcarpetas), pero sí puede verlo (dir) y descargarlo (get).
También podrá entrar en las subcarpetas que tenga la carpeta raíz.
Para que cada usuario tenga su propia carpeta al entrar en el servidor FTP (no la misma carpeta
raíz del sitio FTP para todos los usuarios), debemos crear una carpeta con el mismo nombre que el
usuario (por ejemplo, la carpeta "Administrador" o la carpeta "smr"); esa carpeta la creamos dentro de la
carpeta raíz del sitio FTP (dentro de C:\inetpub\ftproot, quedando la carpeta C:\inetpub\ftproot\
Administrador).
Para el usuario anonymous se puede crear la carpeta: C:\inetpub\ftproot\anonymous.
Para el usuario smr se puede crear la carpeta C:\inetpub\ftproot\smr.
Copiamos archivos diferentes dentro de C:\inetpub\ftproot\anonymous, dentro de C:\inetpub\ftproot\Administrador
y dentro de C:\inetpub\ftproot\smr para probar las distintas opciones.
Podemos pulsar sobre sitio FTP y en la lista de iconos centrales, pulsar sobre "Aislamiento de
usuario FTP". Si elegimos en "No aislar usuarios", la opción "Directorio raíz", todos los usuarios entran
en la misma carpeta raíz del sitio; con la otra opción, "Directorio de nombres de usuario", cada
usuario entrará en su propia carpeta (que se debe llamar igual que el usuario y hemos creado
previamente dentro de la carpeta raíz). Después de realizar cambios en esa ventana, pulsar "Aplicar" arriba
a la derecha.
Al entrar un usuario por ftp se sitúa en su propia carpeta, pero podrá salir de ella y ver las demás
carpetas (incluso las de otros usuarios) que estén en la carpeta raíz (C:\Inetpub\ftproot). Para evitarlo y
que cada usuario tenga su propia carpeta y los demás no puedan ver sus archivos (ni su carpeta),
debemos utilizar la opción "Propiedades" de carpeta (del sistema operativo WinServer, botón derecho
sobre la carpeta en cuestión) de cada usuario, para activar en la pestaña "General" la opción "Oculto",
donde marcamos "Aplicar cambios sólo a esta carpeta"; es decir, que no deben ocultarse las subcarpetas
ni los archivos que contiene la carpeta ocultada.
Además en la pestaña "Seguridad" (dentro de "Propiedades") configuramos los permisos para que
sólo el usuario dueño de la carpeta tenga todos los permisos ("Control total") y eliminamos todos los
demás grupos y usuarios para la carpeta (en el apartado "Nombres de grupos o usuarios" sólo debe
aparecer uno, el usuario dueño de la carpeta). Para quitar algunos elementos (usuarios o grupos)
deben desactivarse los permisos heredables en "Seguridad" - "Opciones avanzadas" - "Cambiar permisos"
y desmarcar "Incluir todos los permisos heredables..." y botón "Quitar". Podemos probar esto con el
usuario "Administrador" y su carpeta personal C:\Inetpub\ftproot\Administrador, aplicando todos los
pasos. Y con el usuario smr y su carpeta personal C:\Inetpub\ftproot\smr. Debemos comprobar que cada
usuario (Administrador, smr, ...) sólo puede ver los archivos de su carpeta, así como los que haya en
las carpetas que no están ocultas, como la carpeta "compartir". En esta carpeta podemos colocar los
archivos que puedan ser vistos y descargados por todos los usuarios.
Para ver en un sitio FTP las sesiones que tenemos conectadas, pulsamos en el sitio FTP y en la
zona central aparece una opción llamada "Sesiones actuales de FTP". Ahí vemos todas las conexiones
activas y podremos desconectar las que se quiera.
Además, dentro de C:\inetpub\logs\Logfiles están los ficheros que guardan todas las conexiones
que ha tenido a lo largo del tiempo nuestro sitio FTP.
Como hemos indicado antes, lo más apropiado es utilizar un cliente FTP en modo gráfico.
Uno de ellos es Filezilla, de código abierto, que puede descargarse desde http://filezilla.sourceforge.net.
Una vez descargado se puede instalar normalmente.
Este cliente ofrece un menu principal (superior), así como una "Barra de herramientas", debajo de
dicho menú. La primera herramienta es el "Gestor de sitios", que permite crear sitios FTP favoritos. Otras
herramientas permiten detener una transferencia, para poder proseguir más tarde por el punto donde se
paró. El icono de "Conexión rápida" ofrece a modo de historial una lista de los sitios donde ya se ha
realizado una conexión.
La parte izquierda está destinada al cliente FTP, la máquina local, mientras que la derecha es para
el servidor FTP, la máquina remota. Al pulsar el botón derecho del ratón sobre una carpeta o archivo
aparece un menú que permitirá, entre otras tareas, añadir a la cola de transferencia o realizar la
transferencia (subir o descargar). La transferencia de los objetos colocados en la cola será iniciada con el
icono correspondiente de la "Barra de herramientas". En la parte de la máquina remota, una de las
opciones del citado menú es "Permisos de archivo" que permite ver o modificar (si podemos) los permisos
de los archivos.
Para activar la opción SSH y así realizar todas las transferencias cifradas, incluyendo nombre de
usuario y contraseña, basta con entrar en el "Gestor de sitios" y en la pestaña "General", en el campo
"Server Type" elegiremos SFTP.
7. Instalación y configuración de un
servidor FTP (vsftpd ) en Linux
Ubuntu Server.
Indicamos el ancho de banda máximo a 10 MB/seg para los usuarios locales y para los anónimos.
A continuación vamos a configurar el fichero log, para ello: En vsftpd_log_file , especificamos
el archivo de registro de vsftpd, en nuestro caso dejaremos el que viene por defecto. Para que
se utilice este archivo, xferlog_enable debe estar activado y xferlog_std_format debe ser NO ó,
si está en YES, entonces dual_log_enable debe estar activado. Es importante resaltar que si
syslog_enable está en YES, se utiliza el registro del sistema en lugar del archivo especificado en
esta directriz.
Los usuarios anónimos no podrán subir archivos, para ello dejamos comentada la siguiente
línea que se usaría para permitírselo.
Para que los usuarios puedan descargar archivos añadimos la siguiente línea.
Creamos una carpeta en /home para aislar al usuario anónimo que llamaremos público.
Descomentamos la siguiente línea para así poder enjaular a los usuarios locales.
Añadimos la siguiente línea para indicar el directorio en el cual estará enjaulado el usuario
anónimo.
Creamos un archivo llamado .message en el directorio donde queremos que aparezca un
mensaje al acceder a él. En este caso será para el directorio /home/publico/.
Realizamos una conexión FTP con el usuario anónimo y observamos que se encuentra
enjaulado en su directorio y además aparece el mensaje al acceder al mismo.
Para que el mensaje de los directorios funcione, la siguiente línea debe estar descomentada.
A continuación vamos a crear los usuarios locales carlos y maria, que serán los usuarios con
acceso al servidor FTP.
Restringiremos el acceso sólo a estos usuarios creados, para ello debemos añadir las siguiente
líneas.
En userlist_file indicaremos donde se encuentra el fichero que utilizaremos para indicar los
usuarios que pueden acceder al servidor, aquellos que no se encuentren en dicho fichero no
tendrán acceso a este.
Creamos dicho fichero y a continuación añadimos los usuarios maria, carlos y anonymous,
cualquier otro usuario que no se encuentre en este fichero no podrá acceder al servidor.
Vamos a enjaular sólo a algunos usuarios, teniendo en cuenta que el usuario anónimo ya está
aislado. Para ello vamos a añadir la siguiente línea en la cual indicaremos el fichero donde
introduciremos los usuarios que vamos a enjaular.
A continuación creamos el fichero vsftpd.chroot_list e introducimos en él al único usuario que
aislaremos, en este caso a carlos.
En el directorio particular de carlos hemos creado un archivo .message como hicimos con el
usuario anónimo para que aparezca un mensaje al iniciar sesión en dicho directorio, a
continuación comprobamos que tenemos acceso con carlos, que sale el mensaje y que
podemos subir un fichero a su directorio con el comando put. Debemos recordar darle
permisos al directorio particular de carlos para que sea posible escribir en él, nosotros hemos
elegido darle todos los permisos con el comando: #chmod 777 /home/carlos Observamos que
efectivamente todo está configurado correctamente.
A continuación vemos como quedan definitivamente los ficheros de configuración de carlos y
de maria. A carlos le hemos limitado el ancho de banda a 1 MB/seg.
A Maria también le hemos limitado el ancho de banda a 1 MB/seg, le hemos permitido que
suba ficheros y como observamos Maria no tiene la directiva local_root, ya que esta no se
encuentra aislada en ningún directorio.
8. Servidor FTP Windows Server 2008
Instalación.
Paso 1: En el servidor de IIS hacemos click en Agregar Servicios de Función.
Paso 6: Abrimos el Administrador de Internet Informatio Services (IIS) en Inicio >Herramientas Administrativas >
Administrador de Internet Informatio Servic es (IIS)
Paso 7: Borramos el sitio FTP por defecto y creamos uno nuevo pulsando boton derecho sobre Sitios FTP
> Nuevo > Sitio FTP.
Paso 8: Nos aparecerá el Asistente de configuración de FTP. Siguiente.
También podemos indicarlo pulsando el botón Examinar e indicar el directorio de manera gráfica.
Autenticación de Usuarios.
Paso 1: Entramos en Autenticación FTP.
Paso 2: Habilitamos la Autenticación anónima y Autenticación básica.
Paso 12: Le damos permisos pertinentes a ese usuario sobre la carpeta upload.
Paso 13: Probamos en el navegador que funciona y que deja subir al directorio upload.
Mensajes.
Finalmente podemos poner mensajes de bienvenida, salida, etc... dentro del FTP.