Created
February 16, 2022 17:22
-
-
Save emrivero/6d4bccfa1e91c3ed13c6dabff8f54c91 to your computer and use it in GitHub Desktop.
Apuntes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FTP (File Transfer Protocol - Protocolo de Transferencia de Archivos) es un programa que se | |
utiliza para transferir información, almacenada en ficheros, de una máquina remota a otra local, | |
o viceversa (RFC 959). Para poder realizar esta operación es necesario conocer la dirección IP (o | |
el "nombre") de la máquina a la que nos queremos conectar para realizar algún tipo de | |
transferencia. | |
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. | |
Para solucionar este problema son de gran utilidad | |
aplicaciones como scp y sftp, incluidas en el paquete | |
SSH, que permiten transferir archivos pero cifrando | |
todo el tráfico. | |
En el modelo, el intérprete de protocolo (PI) de usuario, inicia la conexión de control en el puerto | |
21. Las órdenes FTP estándar las genera el PI de usuario y se transmiten al proceso servidor a | |
través de la conexión de control. Las respuestas estándar se envían desde el PI del servidor al PI | |
de usuario por la conexión de control como respuesta a las órdenes. | |
Estas órdenes FTP especifican parámetros para la conexión de datos (puerto de datos, modo de | |
transferencia, tipo de representación y estructura) y la naturaleza de la operación sobre el | |
sistema de archivos (almacenar, recuperar, añadir, borrar, etc.). El proceso de transferencia de | |
datos (DTP) de usuario u otro proceso en su lugar, debe esperar a que el servidor inicie la | |
conexión al puerto de datos especificado (puerto 20 en modo activo o estándar) y transferir los | |
datos en función de los parámetros que se hayan especificado. | |
Vemos también en el diagrama que la comunicación entre cliente y servidor es independiente | |
del sistema de archivos utilizado en cada computadora, de manera que no importa que sus | |
sistemas operativos sean distintos, porque las entidades que se comunican entre sí son los PI y | |
los DTP, que usan el mismo protocolo estandarizado: el FTP. | |
También hay que destacar que la conexión de datos es bidireccional, es decir, se puede usar | |
simultáneamente para enviar y para recibir, y no tiene por qué existir todo el tiempo que dura | |
la conexión FTP. | |
3.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. | |
3.2 Modo Pasivo | |
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). En el protocolo FTP existen 5 tipos de | |
transferencia en ASCII y en binarios. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment