Notas #H4ckSeed : Diferencias entre FTP, FTPS y SFTP

Sin duda alguna, muchas veces nos es “complicado” elegir que protocolo de transferencia de archivos debemos de brindar en nuestros servidores caseros como en producción, ya sea por desconocimiento o porque simplemente se nos “olvido”. Más cuando casi todos se parecen en nombre y no es pan de cada día en nuestra dieta diaria, existen algunas diferencias clave entre ellos, en particular, cómo se produce el intercambio de datos, además de considerar los niveles de seguridad y claro el firewall.

El protocolo FTP (File Transfer Protocol), ya tiene algunos años de vida, propuesto por primera vez en 1971 y publicado en el RFC 114, ya en 1985, tras ser agregado nuevos comandos y nuevas funcionalidades  fue publicado el RFC 959  siendo este el estándar que los clientes y servidores FTP usan actualmente.

modelo_ftp

By No machine-readable author provide. Oscarxs.ULE~commonswiki assumed (based on copyright claims). [Public domain], via Wikimedia Commons

La forma de trabajo de FTP es a través de dos canales, usando el puerto 21 la conexión de control y bajo el puerto 20 la conexión de datos.

 Control, se ejecuta en el puerto 21 del servidor, es el responsable de aceptar conexiones de clientes y el manejo del intercambio de comandos simples entre un cliente y servidor FTP. Los comandos de usuario y contraseña utilizados para la autenticación de un usuario de FTP son ejemplos de comandos que se intercambian en el canal de control. El canal de comando permanece abierta hasta que el cliente envía el comando quit para desconectar, o el servidor desconecta la fuerza el cliente debido a la inactividad u otra razón.

Datos, se ejecuta utilizando los puertos bajo demanda temporales de escucha en el servidor (modo pasivo) o en el cliente (modo activo) y es responsable del intercambio de datos en forma de listados de directorios y transferencias de archivos. Los comandos list, store y retr utilizados para obtener un listado de directorio del servidor, la carga de un archivo y la descarga de un archivo son ejemplos de comandos (enviados utilizando el canal de control) que se puede abrir un canal de datos. A diferencia del canal de control que permanece abierta durante toda la sesión FTP, el canal de datos se cierra una vez que la transferencia de datos se ha completado. Con el fin de manejar las transferencias de archivos concurrente o listados de directorios se debe utilizar un rango de puertos del canal de datos.

Cualquier dato enviado por estos canales, al no ser cifrado, puede ser interceptado y leído. Una forma común de explotar esta vulnerabilidad, es por un attack-man-in-the-middle “gracias” a un ARP comprometido y un sniffer. La diferencia entre un servicio FTP down o no, radicara en entender bien los conceptos de modo activo y pasivo (motivo para una entrada exclusiva para ello)

Protocolo FTPS (FTP Secure), a diferencia del FTP normal, esta extensión esta cifrada usando los protocolos de cifrado TLS/SSL , publicada en RFC 2228.

Este protocolo se puede definir es 3 formas

  • FTPS Explícito, usa obligatoriamente  TLS. Este es el método preferido de acuerdo al RFC que define FTP sobre TLS. El cliente se conecta al puerto 21 del servidor y comienza una sesión FTP sin cifrar de manera tradicional, pero pide que la seguridad TLS sea usada y realiza la negociación apropiada antes de enviar cualquier dato sensible.
  • AUTH como está definido en el RFC 2228, mencionado anteriormente.
  • FTPS Implícito, es un estilo antiguo, aunque todavía ampliamente usado, en el cual el cliente se conecta a un puerto distinto (como el 990), realizando una negociación SSL antes de enviar cualquier comando FTP, considerado obsoleto en favor del explicito.

Protocolo SFTP (SSH FTP) mucho lo confunden con FTPS, supongo por el nombre, ya que por funcionalidades son totalmente distintas, a excepción que ambas son cifradas. Esta basado en SSH (Secure Shell), que es otro protocolo muy conocido por proporcionar acceso seguro a cuentas en servidores remotos. Se diferencia de FTP/FTPS que no utiliza canales de control y de datos separadas. Ambas se transfieren en paquetes con formato especial a través de una única conexión.

Se pueden proteger aún más mediante el uso de claves públicas y privadas, que ofrecen una forma alternativa de autenticación, suele usar el puerto 22 para comunicaciones entrantes y salientes, desde el servidor como desde el cliente, respectivamente.

Bonus:

Protocolo TFTP (Trivial file transfer Protocol) es un protocolo muy simple semejante a una versión básica de FTP.  a menudo se utiliza para transferir pequeños archivos en una LAN (red local). A diferencia de los protocolos anteriores que usan TCP en la capa de transporte este usa UDP (puerto 69), no puede listar el contenido de los directorios, no es cifrado, ni autenticado.

Hasta otro post y buenas vibras lectores.

Anuncios

One comment

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s