X

Puerto FTP

Cuando hablamos del protocolo FTP o File Transfer Protocol por sus iniciales en inglés hablamos de unos de los protocolos cliente-servidor más antiguos de internet, básicamente es un protocolo de transferencia de archivos que facilita enormemente la tarea, el servidor funciona en primer lugar validando la identidad el usuario remoto y una vez validado permite subir, descargar o actualizar archivos de un servidor remoto.

Y en el ámbito del web hosting, el desarrollo web y demás, muchas veces escuchamos hablar del «puerto FTP», pero pocos alguna vez se han preguntado si conocen el verdadero concepto sobre qué es el puerto 21, o un puerto en general cuando hablamos de protocolos.

Por eso desde este artículo, intentaremos echar luz al asunto del famoso puerto FTP, para que puedas entender qué es y cómo funciona.

¿Que es un puerto en computación?

Un puerto puede definirse como una interface que permite la transmisión de datos en uno u otro sentido, el puerto puede ser físico, es decir por hardware o puede ser lógico por software.

En redes de computadoras y más especialmente en el protocolo TCP un puerto es un indicador numérico que va del cero al 65535 y se asigna a una vía de comunicación que puede ser utilizada por aplicaciones y servicios para comunicarse y transferir datos.

Si bien cualquier puerto puede ser asignado para cualquier tipo de datos por convención hay puertos que están reservados para ciertas tareas o ciertos protocolos, por ejemplo sabemos que el puerto 80 y el 443 se destina a servidores web y los puertos 25,110,143,456,587,993 a los diferentes servicios y protocolos de correo y para FTP se utilizan los puertos 20 y 21 que son los que hablaremos hoy.

Si bien cualquier puerto se puede utilizar para cualquier tarea, en la práctica existen determinados puertos que por convención se utilizan para determinados servicios, por ejemplo el puerto 80 que ya nombramos, al introducir una dirección de una web en el navegador, esta automáticamente se va a establecer una comunicación con el puerto 80 que aloja la web.

El hecho que por defecto un servidor web utilice el puerto 80 hace las cosas más fáciles al usuario, ya que no tiene que saber de antemano el puerto, si el servidor web corriera en otro puerto diferente estaríamos obligados a especificar el puerto.

Lo mismo ocurre con otros servicios comunes como los de correo o del Servidor DNS, el que estén en un puerto conocido de antemano hace que sea más fácil e incluso más rápido que estar averiguando el puerto, sin embargo hay excepciones en los que sí conviene cambiar de puerto.

Diferentes variantes

A lo largo del tiempo el protocolo FTP fue agregando funcionalidades y variantes, tanto para agregar nuevas funcionalidades como para solucionar asuntos no contemplados originalmente como el cifrado de la conexión por lo que podemos configurar una conexión de diferentes maneras dependiendo de lo que ofrezca el servidor, aquí veremos las opciones más comunes.

FTP

El protocolo FTP vio la luz a principios de los años setentas y comenzó a usarse en abril de 1971 cuando se estandarizó RFC 114 y recibió una re estructuración en 1973 por el surgimiento de TCP/IP, fue una de tantas modificaciones que sufrió ya que con el correr de los años fueron añadidos nuevos comandos y funcionalidades hasta llegar a la especificación RFC 959 en octubre de 1985 que es el que conocemos y utilizamos actualmente.

El protocolo FTP permite el envió y recepción de ficheros entre dos equipos, usualmente entre un cliente y el servidor aunque en algunos casos entre dos servidores, siendo un de ellos cliente del otro.

Para transferir archivos se utilizan dos modos, el modo ASCII y el modo binario, el primero es óptimo para transferir archivos de texto como pueden ser archivos html, Javascript, CSS, Json, XML, etc mientras que el modo binario es utilizado para transferir archivos que como su nombre lo indica son binarios como pueden ser imágenes, audio, videos, comprimidos y cualquier tipo de archivos que no son de tipo textos.

Puerto FTP 20 y 21

Los puertos más comunes a utilizar son el puerto 21 y el puerto número 20, el primero se utiliza para establecer la comunicación y autentificarse en el servidor mientras que el segundo se suele utilizar luego para la transferencia misma de los archivos entre el cliente y el servidor.

Una comunicación FTP puede funcionar de dos modos, de modo Activo o de Modo Pasivo, en el modo Activo el servidor FTP luego de establecer la comunicación mediante el puerto 21 utiliza el del lado del servidor el puerto 20 y del lado del cliente se estable un puerto por arriba del 1024.

Este modo no es aconsejable por seguridad debido a que implicaría al cliente tener puertos abiertos e incluso puede traer problemas de conexión entre el cliente está dentro de una red local y se conecta mediante NAT con el servidor, para solucionar este inconveniente es que se utiliza el modo Pasivo.

El modo Pasivo es en el cual es el servidor utiliza normalmente el puerto 21 para establecer la conexión y un rango de puertos abiertos que permiten la transferencia de archivos.

Sin embargo este protocolo nativamente no admite cifrado ya que fue concebido en una época donde existan grandes limitaciones técnicas de desarrollo y donde la seguridad no era visto como una prioridad debido que su uso estaba destinado a redes pequeñas o aisladas donde Internet no exista tal como la conocemos hoy, para solucionar esto el protocolo FTP evolucionó y fueron como surgieron los siguientes protocolos basados en FTP que si soporta cifrados.

FTPS y FTPES

El protocolo FTP fue desarrollado en una era pre-internet y no se existan los riesgos de seguridad actuales, FTP al igual que la mayoría de los protocolos no fueron pensados para una Internet por lo que carece de cualquier tipo de cifrado, para solucionar este problema fue que se desarrolló FTP con una capa de cifrado SSL/TLS que se encarga de proteger los datos, esto es lo que conocemos como FTPS y que no hay que confundir con SFTP que veremos más adelante.

La comunicación comienza como todas las comunicaciones FTP y se solicita a través de comandos que la comunicación se realice que a través de TLS antes de enviar cualquier dato sensible, como por ejemplo el usuario y contraseña.

Si el certificados son aceptados y la negociación de cifrado entre el programa cliente y el servicio FTP del servidor finaliza correctamente a partir de ahí la comunicación será cien por ciento cifrada.

Los certificados SSL/TLS pueden implementar diferentes algoritmos de cifrado y además tiene fechas de caducidad y su autenticidad debe ser verificada por el programa cliente por lo que es habitual en el proceso ocurra errores como que el certificado haya expirado o los algoritmos aceptados por el servidor sean diferentes que los que el cliente es capaz de manejar y no sea posible establecer la comunicación.

A la hora de conectarse utilizando SSL/TLS existen dos modos, el más antiguo y ya no recomendado llamado modo implícito donde en lugar de utilizar el puerto 21 se utiliza el puerto 990 que es mediante el que se establece y negocia la conexión antes de enviar o recibir cualquier dato, ya sea el usuario y contraseña de login o archivos a transferir.

El segundo modo que es el más utilizado hoy es el modo Explicito o FTPES es el cliente el que decide si solicita o no que la comunicación sea cifrada, en caso de hacerlo recién se comienza a negociar entre cliente y servidor para establecer una comunicación compatible entre los dos, en una instalación básica del servidor solo se utiliza TLS, en caso de querer maximizar la seguridad y utilizar SSL se requiere un certificado emitido por alguna autoridad como Certificados SSL los que ofrecemos en Infranetworking.

La comunicación comienza en el puerto 21 inicialmente y luego el servidor asigna rango de puertos para la transferencia posterior de archivos, para configurar un cliente de FTP como por ejemplo Filezilla en modo FTPS puedes seguir esta guía como Subir archivos usando FTPS donde te explicamos paso a paso como configurarlo de forma sencilla.

TFTP

El protocolo llamado Trivial File Transfer Protocol es una simplificación del FTP normal que fue diseñado para ser utilizado en transferir archivos entre computadoras de una misma red, la principal diferencia es que en lugar de utilizar TCP para el transporte utiliza UDP (Protocolo de datagramas de usuario) y el puerto 69.

Tampoco tiene capacidad de cifrado ni admite métodos de autentificación por lo que su uso está limitado a ciertos entornos o situaciones donde la seguridad no es un factor determinante, si bien las primeras versiones de TFTP data de principios de los años ochenta ha recibido casi una docena de modificaciones oficiales al estándar siendo la más reciente en 2015 por lo que está en plena evolución y no sería extraño que en el futuro si implementa seguridad y vemos nuevas implementaciones y usos.

SFTP

Es común pensar que SFTP es FTP con cifrado cuando realmente es un protocolo completamente diferente, si bien los mismos clientes FTP suelen soportar SFTP por detrás funcionan completamente diferente.

Una de las principales diferencias entre SFTP y FTP aparte de la capa de cifrado que le brinda mayor seguridad es la capacidad de transferir atributos de archivo que el FTP no tiene, es decir que junto con el archivo se pueden transferir otros datos como el propietario, el grupo y datos de fecha y hora, mientras que con FTP propietario y grupo quedan a nombre del usuario y las marcas de tiempo con fecha y hora de cuando fue copiado y no con las originales.

Al usar SSH en SFTP tradicionalmente se utiliza el puerto 22 del servidor SSH sin embargo como por seguridad el puerto SSH se suele cambiar para utilizar SFTP se debe hacer con el puerto que se le asigne a SSH que básicamente puede ser cualquiera, no hay un estándar por lo que para conectarnos debemos saber de antemano el puerto.

Otra diferencia fundamental es que al usar SFTP si el servidor no esta bien configurado se puede acceder a todo el árbol de directorios y acceso al Shell del sistema algo que tiene serias implicaciones de seguridad si las credenciales son comprometidas mientras que con el FTP normal siempre se está limitado a la carpeta del usuario sin acceso a terminal por lo que es más seguro a nivel de servidor.

Conclusion

Cada tipo de configuración de un servidor FTP o cada modo de conexión tiene sus propios puertos, si bien no existe un regla obligatoria para definir un puerto existen convenciones que sirven de guía o como pauta para configurar, seguir estas pautas hace más fácil al usuario la configuración de la conexión y para facilita la inter interoperabilidad entre sistemas aunque nada impide cambiarlos ya sea por seguridad o por el motivo que queramos.

Artículos relacionados