El Protocolo de transferencia de archivos (en inglés File Transfer Protocol o FTP) 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.
Índice del artículo
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.
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 y/o apropiarse de los archivos transferidos.
FTP tiene dos modos de funcionamiento:
– Modo activo: en este modo de funcionamiento el servidor FTP crea el canal de datos en el puerto TCP 20, mientras que en el lado del cliente se elige un puerto aleatorio superior al puerto TCP 1024.
En este modo de funcionamiento es obligatorio que el cliente FTP tenga abierto los puertos superiores al 1024, algo peligroso si estamos conectados a Internet, y que también presenta problemas si estamos detrás de NAT. Para solucionar este problema se desarrolló el modo pasivo (PASV), el cual es el más utilizado actualmente.
– Modo pasivo: en este modo de funcionamiento, a través del puerto 21 de control, el servidor FTP le dice al cliente FTP a qué puerto externo debe conectarse para transferir la información.
De esta forma, el cliente establecerá una conexión desde el puerto que le haya indicado. De esta manera, el servidor FTP deberá tener un puerto TCP 21 para el canal de control, y un rango de puertos TCP a elegir por el propio administrador.
SFTP
El protocolo SFTP (SSH File Transfer Protocol) o también conocido como transferencia de ficheros SSH, es un protocolo que no tiene nada que ver con el protocolo FTP. SFTP no es la versión segura del protocolo FTP, ya que está basado en el protocolo SSH por completo.
Este protocolo SFTP nos permite autenticarnos y realizar transferencia de ficheros entre equipos como si fuera un servidor FTPES, pero utilizando criptografía del protocolo SSH que tengamos instalado en el servidor de archivos.
SFTP tampoco es un protocolo donde FTP utilice SSH para asegurar la conexión, es un protocolo completamente nuevo basado en SSH y no en FTP.
El protocolo SFTP hace uso del puerto TCP 22 por defecto, el mismo que el protocolo SSH. Si en nuestro servidor de archivos tenemos un servidor SSH para ejecutar comandos CLI, también tendremos la opción de habilitar el SFTP para conectarnos con clientes SFTP como FileZilla, y comenzar a transferir archivos.
La autenticación de SFTP es exactamente la misma que en SSH, es decir, si en SSH utilizamos clave pública, en SFTP también deberemos hacer uso de esta criptografía de clave pública.