1. Introducción FTP (sigla en inglés de File Transfer Protocol

Anuncio
Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web
UT 2 –FTP
FTP
1. Introducción
FTP (sigla en inglés de File Transfer Protocol - Protocolo de Transferencia de
Archivos) en informática, es un protocolo de red para la transferencia de archivos entre
sistemas conectados a una red TCP (Transmission Control Protocol), basado en la arquitectura
cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar
archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado
en cada equipo.
Los servidores FTP se usan principalmente para tres cosas:
1. subir las páginas web al hosting.
2. como servidor de archivos de libre acceso (denominado FTP anónimo). Los FTP
anónimos son servidores FTP a los que puede conectarse cualquiera empleando como usuario
anonymous y como password cualquier dirección de correo.
3. hacer backup (copia de seguridad).
El Servicio FTP es ofrecido por la capa de Aplicación del modelo de capas de red
TCP/IP al usuario, utilizando normalmente el puerto de red 20 y el 21. Un problema básico de
FTP es que está pensado para ofrecer la máxima velocidad en la conexión, pero no la máxima
seguridad, ya que todo el intercambio de información, desde el login y password del usuario en
el servidor hasta la transferencia de cualquier archivo, se realiza en texto plano sin ningún tipo
de cifrado, con lo que un posible atacante puede capturar este tráfico, acceder al servidor, o
apropiarse de los archivos transferidos.
2. Modos de conexión del cliente FTP
FTP admite dos modos de conexión del cliente. Estos modos se denominan Activo (o Estándar,
o PORT, debido a que el cliente envía comandos tipo PORT al servidor por el canal de control
al establecer la conexión) y Pasivo (o PASV, porque en este caso envía comandos tipo PASV).
Tanto en el modo Activo como en el modo Pasivo, el cliente establece una conexión con el
servidor mediante el puerto 21, que establece el canal de control.
AW – UT 2 – FTP
Página 1 de 8
Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web
UT 2 –FTP
2.1. Modo Activo
En modo Activo, el servidor siempre crea el canal de datos en su puerto 20, mientras
que en el lado del cliente el canal de datos se asocia a un puerto aleatorio mayor que el 1024.
Para ello, el cliente manda un comando PORT al servidor por el canal de control indicándole
ese número de puerto, de manera que el servidor pueda abrirle una conexión de datos por
donde se transferirán los archivos y los listados, en el puerto especificado.
Lo anterior tiene un grave problema de seguridad, y es que la máquina cliente debe
estar dispuesta a aceptar cualquier conexión de entrada en un puerto superior al 1024, con los
problemas que ello implica si tenemos el equipo conectado a una red insegura como Internet.
De hecho, los cortafuegos que se instalen en el equipo para evitar ataques seguramente
rechazarán esas conexiones aleatorias. Para solucionar esto se desarrolló el modo Pasivo.
2.2. Modo Pasivo
AW – UT 2 – FTP
Página 2 de 8
Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web
UT 2 –FTP
Cuando el cliente envía un comando PASV sobre el canal de control, el servidor FTP le
indica por el canal de control, el puerto (mayor a 1023 del servidor. Ej:2040 ) al que debe
conectarse el cliente. El cliente inicia una conexión desde el puerto siguiente al puerto de
control (Ej: 1036) hacia el puerto del servidor especificado anteriormente (Ej: 2040).[1]
Antes de cada nueva transferencia, tanto en el modo Activo como en el Pasivo, el
cliente debe enviar otra vez un comando de control (PORT o PASV, según el modo en el que
haya conectado), y el servidor recibirá esa conexión de datos en un nuevo puerto aleatorio (si
está en modo pasivo) o por el puerto 20 (si está en modo activo).
3. Instalación de un servidor ftp en Linux
Existen numerosos servidores de ftp, (vsftpd, ftpd, proftpd...), nosotros usaremos el
último, Professinal FTP Daemon, uno de los más potentes y versátiles con licencia GPL.
// Instalación de servidor ftp
usuario@server:$ sudo aptitude install proftpd-basic
Durante la instalación nos preguntará si queremos ejecutar ProFTPd como demonio
independiente o mediante inetd (escogeremos independiente) y se creará el usuario ftp, con
directorio personal /home/ftp (en las últimas versiones: Se crea el directorio personal /srv/ftp
para el usuario ftp con permisos drwxr-xr-x o lo que es lo mismo 755 el usuario ftp tendría
permisos de lectura, escritura y ejecución, los miembros de su grupo sólo tendrían permisos de
lectura y ejecución y el resto de los usuarios solo se les permitiría la ejecución.), shell /bin/false
y sin contraseña.
El directorio /home/ftp directorio personal /srv/ftp sólo contiene el archivo welcome.msg, cuyo
contenido se muestra al conectarse.
Nada mas instalado, cada usuario del sistema podrá acceder al sistema de ficheros del
servidor con su usuario y contraseña, con los mismos permisos que tendría en local. Por
defecto aparece en su home.
Si queremos que alguno usuario que tiene cuenta local no entre en el ftp, existe un
archivo /etc/ftpusers, donde están los usuarios locales que no pueden entrar por ftp.
Si queremos dar de alta nuevos usuarios, tendremos que hacerlo con adduser, pero si
queremos que sólo sean usuarios para el ftp, hay que cambiarles la ruta de Shell por /bin/false.
AW – UT 2 – FTP
Página 3 de 8
Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web
UT 2 –FTP
4. Arranque y parada manual del servidor FTP
El servidor ftp, al igual que todos los servicios en Debian, dispone de un script de
arranque y parada en la carpeta /etc/init.d.
// Arranque del servidor FTP
# /etc/init.d/proftpd start
// Parada del servidor FTP
# /etc/init.d/proftpd stop
// Reinicio del servidor FTP
# /etc/init.d/proftpd restart
5. Configuración del servidor FTP
El fichero de configuración está en /etc/proftpd/proftpd.conf
Al principio del fichero encontramos un montón de directivas que configuran los
aspectos generales del servidor:

ServerName. Nombre del Servidor que verán los clients.

Port. Establece el puerto de control, por el que se establecen las conexiones.

DisplayLogin. Mensaje de bienvenida al servidor

….. otras muchas

Limitando un directorio
Si queremos aplicar directivas sólo a un directorio, las pondremos dentro de un bloque
Directory:
<Directory [directorio]>
Directivas…
</Directory>
Una de ellas puede ser:
AllowOverwrite on

#Permitir sobreescritura de los ficheros.
Ftp anónimo
AW – UT 2 – FTP
Página 4 de 8
Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web
UT 2 –FTP
Existe una modalidad muy usada en los directorios de ftp, es el de acceso anónimo y
que está implantada en todos los clientes ftp. Los usuarios entran al servidor con el usuario
anonymous y con cualquier contraseña, normalmente una dirección de correo. Esto se usa
para poner ficheros para descarga pública.
Para indicarle a ProFTPd que un directorio debe ser tratado como un directorio de
acceso anónimo y aplicarle directivas específicas, usaremos:
<Anonymous [directorio]>
directivas...
</Anonymous>
Al instalar ProFTPd viene ya comentada una posible configuración de un directorio
anónimo por ftp. Este sería el directorio /etc/ftp, se ha creado un usuario sólo para ftp (sin
acceso a Shell), con este fin y luego se le crea un alias en la configuración para que se use
anonymous, una configuración simple puede ser:
<Anonymous ~ftp>
User
ftp
Group
nogroup
UserAlias
anonymous ftp
MaxClients
10
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>

Limitando permisos
Podemos limitar y especificar quién puede hacer qué a cualquier directorio y usuario
que queramos. Esta directiva se puede poner de manear general o dentro de un directorio en
particular.
<Limit [LOGIN] [READ] [WRITE] [ALL]…>
<Quien o quienes>
</Limit>
AW – UT 2 – FTP
Página 5 de 8
Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web
UT 2 –FTP
Limitar el acceso a 10.1.X.X y 192.168.1.7, a cualquier otra máquina se le denegará el acceso.
<Limit LOGIN>
Order Allow, Deny
Allow from 10.1., 192.168.1.7
Deny from all
</Limit>
Permitir la escritura a juanito, alberto y a cualquiera que se conecte desde 10.0.0.15 a cualquier
otra máquina se le denegará el acceso.
<Limit WRITE>
AllowUser juanito,alberto...
Allow 10.0.0.15
Deny all
</LIMIT>
Permitir un directorio de subida pero no de lectura
<Directory subida/*>
<Limit READ>
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
</Directory>

Más configuración
Con ProFTPd se pueden realizar muchas otras cosas, se pueden extender por medio
de módulos que le permiten añadir una nueva funcionalidad, se pueden crear directorios
virtuales (Virtual host) que consiste en no responder de la misma manera según quién y cómo
se conecte, y también admite ficheros .ftpaccess, similares a los .htaccess de Apache, para
AW – UT 2 – FTP
Página 6 de 8
Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web
UT 2 –FTP
que los usuarios sin tocar el fichero de configuración, puedan poner sus propias
configuraciones.
Más información:
http://www.proftpd.org/docs/example-conf.html
http://tutorialesfaciles.wordpress.com/windows/montar-servidor-ftp-con-filezilla-server/
6. FTP Cliente
6.1. Cliente de comandos
Los clientes ftp son muy bonitos, pero el protocolo ftp también se pude usar por
comandos, sin mucha dificultad. En una máquina unix siempre tenemos el comando ftp. Desde
el cliente tecleamos. ftp 10.0.0.2, nos autenticamos correctamente y... ya estamos dentro.
Ahora, ¿qué hacemos?. Por ejemplo probamos con ls y pwd. Estos comandos los conocemos
y funcionan en un ftp.
Hace falta saber cómo se copia desde el cliente al servidor y viceversa. No es muy
difícil. Escribimos put <fichero_local> (fichero que exista en la carpeta que estábamos cuando
hayamos hecho ftp). Con esto subiremos un archivo al servidor.
Si escribimos get <fichero_del_server> (alguno de los que veamos al hacer un ls).
Nos descargaremos a local el fichero. Para terminar la sesión quit
6.2. Cliente gráfico
FileZilla es un cliente FTP, gratuito, libre (GNU) y de código abierto. Sustenta FTP,
SFTP y FTP sobre SSL. Inicialmente sólo diseñado para funcionar bajo Windows, desde la
versión 3.0.0, gracias al uso de wxWidgets, es multiplaforma, estando disponible además para
otros sistemas operativos, entre ellos Linux, FreeBSD y MacOS X.
Las principales características son el Site Manager (Administrador de sitios), Message
Log (Registro de mensajes), y Transfer Queue (Cola de transferencia).
El administrador de sitios permite a un usuario crear una lista de sitios FTP con sus
datos de conexión, como el número de puerto a usar, o si se utiliza inicio de sesión normal o
anónima. Para el inicio normal, se guarda el usuario y opcionalmente la contraseña.
El registro de mensajes se muestra en la parte de arriba de la ventana. Muestra en
forma de consola los comandos enviados por FileZilla y las respuestas del servidor remoto.
AW – UT 2 – FTP
Página 7 de 8
Ciclo: Sistemas Microinformáticos y Redes
Módulo: Aplicaciones Web
UT 2 –FTP
La vista de archivo y carpeta, situada debajo del registro de mensajes, proporciona una
interfaz gráfica para FTP. Los usuarios pueden navegar por las carpetas y ver y alterar sus
contenidos tanto en la máquina local como en la remota, utilizando una interfaz de tipo árbol de
exploración. Los usuarios pueden arrastrar y soltar archivos entre los ordenadores local y
remoto.
La cola de transferencia, situada en la parte de abajo de la ventana, muestra en tiempo
real el estado de cada transferencia activa o en cola.
Manual filezilla:
http://www.ujaen.es/sci/redes/ftp/Filezilla/trabajarConFZ.html
AW – UT 2 – FTP
Página 8 de 8
Descargar