Protocolos SFTP y FTPS

prefacio

Hace apenas una semana estaba escribiendo un ensayo sobre el tema indicado en el título y me encontré con el hecho de que, digamos, no hay tanta información educativa en Internet. Datos en su mayoría secos e instrucciones de configuración. Por eso, decidí corregir ligeramente el texto y publicarlo como artículo.

¿Qué es FTP?

FTP (Protocolo de transferencia de archivos) es un protocolo para transferir archivos a través de una red. Es uno de los protocolos básicos de Ethernet. Apareció en 1971 y trabajó inicialmente en redes DARPA. Actualmente, al igual que HTTP, la transferencia de archivos se basa en un modelo que consta de un conjunto de protocolos TCP/IP (Protocolo de control de transmisión/Protocolo de Internet). Definido en RFC 959.

El protocolo define lo siguiente:

  • ¿Cómo se realizará la verificación de errores?
  • Método de empaquetado de datos (si se utiliza empaquetado)
  • ¿Cómo indica el dispositivo emisor que ha finalizado un mensaje?
  • ¿Cómo indica el dispositivo receptor que ha recibido un mensaje?

Comunicación entre cliente y servidor.

Echemos un vistazo más de cerca a los procesos que ocurren durante la operación FTP. La conexión la inicializa el intérprete de protocolo del usuario. La centralita se controla a través de un canal de control en el estándar TELNET. Los comandos FTP son generados por el intérprete de protocolo del usuario y enviados al servidor. Las respuestas del servidor también se envían al usuario a través del canal de control. En general, el usuario tiene la posibilidad de establecer contacto con el intérprete de protocolo del servidor y por medios distintos al intérprete del usuario.

La característica principal de FTP es que utiliza conexiones duales. Uno de ellos se utiliza para enviar comandos al servidor y ocurre de forma predeterminada a través del puerto TCP 21, que se puede cambiar. La conexión de control existe mientras el cliente se comunica con el servidor. El canal de control debe estar abierto al transferir datos entre máquinas. Si está cerrado, se detiene la transmisión de datos. A través del segundo se produce la transferencia directa de datos. Se abre cada vez que se produce una transferencia de archivos entre el cliente y el servidor. Si se transfieren varios archivos simultáneamente, cada uno de ellos abre su propio canal de transmisión.

FTP puede funcionar en modo activo o pasivo, cuya elección determina cómo se establece la conexión. En modo activo, el cliente crea una conexión de control TCP con el servidor y envía su dirección IP y un número de puerto de cliente arbitrario al servidor, y luego espera a que el servidor inicie una conexión TCP con esta dirección y número de puerto. En caso de que el cliente esté detrás de un firewall y no pueda aceptar una conexión TCP entrante, se puede utilizar el modo pasivo. En este modo, el cliente usa el flujo de control para enviar un comando PASV al servidor y luego recibe del servidor su dirección IP y número de puerto, que luego el cliente usa para abrir un flujo de datos desde su puerto arbitrario.

Es posible que los datos se transfieran a una tercera máquina. En este caso, el usuario organiza un canal de control con dos servidores y organiza un canal de datos directo entre ellos. Los comandos de control pasan por el usuario y los datos van directamente entre los servidores.

Al transmitir datos a través de una red, se pueden utilizar cuatro representaciones de datos:

  • ASCII: utilizado para texto. Los datos, si es necesario, se convierten de la representación de caracteres en el host emisor a "ASCII de ocho bits" antes de la transmisión y (de nuevo, si es necesario) a la representación de caracteres en el host receptor. En particular, se cambian los caracteres de nueva línea. Como resultado, este modo no es adecuado para archivos que contengan más que texto sin formato.
  • Modo binario: el dispositivo emisor envía cada archivo byte a byte y el destinatario almacena el flujo de bytes al recibirlo. Se ha recomendado la compatibilidad con este modo para todas las implementaciones de FTP.
  • EBCDIC: se utiliza para transferir texto sin formato entre hosts en codificación EBCDIC. De lo contrario, este modo es similar al modo ASCII.
  • Modo local: permite que dos computadoras con configuraciones idénticas envíen datos en su propio formato sin convertirlos a ASCII.

La transferencia de datos se puede realizar en cualquiera de tres modos:

  • Modo de transmisión: los datos se envían como una secuencia continua, lo que libera a FTP de realizar cualquier procesamiento. En cambio, todo el procesamiento lo realiza TCP. El indicador de fin de archivo no es necesario excepto para separar datos en registros.
  • Modo de bloque: FTP divide los datos en varios bloques (bloque de encabezado, número de bytes, campo de datos) y luego los transmite a TCP.
  • Modo de compresión: los datos se comprimen utilizando un único algoritmo (normalmente codificando longitudes de ejecución).

El servidor FTP es un servidor que brinda la posibilidad de utilizar el Protocolo de transferencia de archivos. Tiene ciertas características que lo distinguen de los servidores web convencionales:

  • Se requiere autenticación de usuario
  • Todas las operaciones se realizan dentro de la sesión actual.
  • Capacidad para realizar diversas acciones con el sistema de archivos.
  • Se utiliza un canal separado para cada conexión.

El cliente FTP es un programa que le permite conectarse a un servidor remoto a través de FTP y también realizar las acciones necesarias en él con elementos del sistema de archivos. El cliente bien puede ser un navegador, en cuya barra de direcciones se debe ingresar la dirección, que es la ruta a un directorio o archivo específico en el servidor remoto, de acuerdo con el diagrama de bloques de URL general:

ftp://user:pass@address:port/directory/file

Sin embargo, utilizar un navegador web en este contexto sólo le permitirá ver o descargar los archivos de interés. Para aprovechar al máximo todas las ventajas de FTP, debe utilizar un software especializado como cliente.

La autenticación FTP utiliza un esquema de nombre de usuario/contraseña para otorgar acceso. El nombre de usuario se envía al servidor con el comando USER y la contraseña se envía con el comando PASS. Si el servidor acepta la información proporcionada por el cliente, entonces el servidor enviará una invitación al cliente y comenzará la sesión. Los usuarios pueden, si el servidor admite esta función, iniciar sesión sin proporcionar credenciales, pero el servidor solo puede otorgar acceso limitado para dichas sesiones.

El host que proporciona el servicio FTP puede proporcionar acceso FTP anónimo. Los usuarios normalmente inician sesión con "anónimo" (puede distinguir entre mayúsculas y minúsculas en algunos servidores FTP) como nombre de usuario. Aunque normalmente se pide a los usuarios que proporcionen su dirección de correo electrónico en lugar de una contraseña, en realidad no se realiza ninguna verificación. Muchos servidores FTP que proporcionan actualizaciones de software admiten el acceso anónimo.

Diagrama de protocolo

La interacción cliente-servidor durante una conexión FTP se puede visualizar de la siguiente manera:

Protocolos SFTP y FTPS

FTP seguro

Originalmente, FTP no estaba destinado a ser seguro, ya que estaba destinado a las comunicaciones entre múltiples instalaciones y agencias militares. Pero con el desarrollo y la difusión de Internet, el peligro de acceso no autorizado ha aumentado muchas veces. Era necesario proteger los servidores de varios tipos de ataques. En mayo de 1999, los autores del RFC 2577 resumieron las vulnerabilidades en la siguiente lista de problemas:

  • Ataques ocultos (ataques de rebote)
  • Ataques falsos
  • Ataques de fuerza bruta
  • Captura de paquetes, rastreo
  • robo de puertos

El FTP normal no tiene la capacidad de transferir datos en forma cifrada, por lo que los atacantes pueden interceptar fácil y fácilmente los nombres de usuario, contraseñas, comandos y otra información. La solución habitual a este problema es utilizar versiones "seguras" protegidas por TLS del protocolo vulnerable (FTPS) u otro protocolo más seguro, como SFTP/SCP, que se proporciona con la mayoría de las implementaciones del protocolo Secure Shell.

FTPS

FTPS (FTP + SSL) es una extensión del protocolo estándar de transferencia de archivos que añade a su funcionalidad básica la creación de sesiones cifradas mediante el protocolo SSL (Secure Sockets Layer). Hoy en día, la protección la proporciona su análogo más avanzado TLS (Transport Layer Security).

SSL

El protocolo SSL fue propuesto por Netscape Communications en 1996 para garantizar la seguridad y privacidad de las conexiones a Internet. El protocolo admite la autenticación de cliente y servidor, es independiente de la aplicación y es transparente para los protocolos HTTP, FTP y Telnet.

El protocolo SSL Handshake consta de dos etapas: autenticación del servidor y autenticación de cliente opcional. En la primera etapa, el servidor responde a la solicitud del cliente enviando su certificado y parámetros de cifrado. Luego, el cliente genera una clave maestra, la cifra con la clave pública del servidor y la envía al servidor. El servidor descifra la clave maestra con su clave privada y se autentica ante el cliente devolviendo un mensaje autenticado por la clave maestra del cliente.

Los datos posteriores se cifran y autentican con claves derivadas de esta clave maestra. En el segundo paso, que es opcional, el servidor envía una solicitud al cliente y el cliente se autentica ante el servidor devolviendo la solicitud con su propia firma digital y un certificado de clave pública.

SSL admite una variedad de algoritmos criptográficos. Durante el establecimiento de la comunicación se utiliza el criptosistema de clave pública RSA. Después del intercambio de claves, se utilizan muchos cifrados diferentes: RC2, RC4, IDEA, DES y TripleDES. También se utiliza MD5, un algoritmo para crear un resumen de mensajes. La sintaxis de los certificados de clave pública se describe en X.509.

Una de las ventajas importantes de SSL es su total independencia de plataforma de software. El protocolo se desarrolla sobre los principios de portabilidad y la ideología de su construcción no depende de las aplicaciones en las que se utiliza. Además, también es importante que se puedan superponer de forma transparente otros protocolos sobre el protocolo SSL; ya sea para aumentar aún más el grado de protección de los flujos de información de destino o para adaptar las capacidades criptográficas de SSL para alguna otra tarea bien definida.

conexión SSL

Protocolos SFTP y FTPS

El canal seguro proporcionado por SSL tiene tres propiedades principales:

  • El canal es privado. El cifrado se utiliza para todos los mensajes después de un simple diálogo que sirve para determinar la clave secreta.
  • El canal está autenticado. El lado del servidor de la conversación siempre se autentica, mientras que el lado del cliente se autentica opcionalmente.
  • El canal es confiable. El transporte de mensajes incluye verificación de integridad (usando MAC).

Características de FTPS

Hay dos implementaciones de FTPS, que utilizan diferentes métodos para proporcionar seguridad:

  • El método implícito implica el uso del protocolo SSL estándar para establecer una sesión antes de enviar datos, lo que, a su vez, rompe la compatibilidad con los clientes y servidores FTP habituales. Para compatibilidad con clientes que no admiten FTPS, se utiliza el puerto TCP 990 para la conexión de control y el 989 para la transferencia de datos, lo que conserva el puerto estándar 21 para el protocolo FTP. Este método se considera obsoleto.
  • Explícito es mucho más conveniente, ya que utiliza comandos FTP estándar, pero cifra los datos al responder, lo que le permite usar la misma conexión de control tanto para FTP como para FTPS. El cliente debe solicitar explícitamente la transferencia segura de datos desde el servidor y luego aprobar el método de cifrado. Si el cliente no solicita una transferencia segura, el servidor FTPS tiene derecho a mantener o cerrar la conexión no segura. Se agregó un mecanismo de negociación de autenticación y seguridad de datos bajo RFC 2228 que incluye el nuevo comando FTP AUTH. Aunque este estándar no define explícitamente mecanismos de seguridad, sí especifica que el cliente debe iniciar una conexión segura utilizando el algoritmo descrito anteriormente. Si el servidor no admite conexiones seguras, se debe devolver un código de error 504. Los clientes FTPS pueden obtener información sobre los protocolos de seguridad admitidos por el servidor mediante el comando FEAT, sin embargo, el servidor no está obligado a revelar qué niveles de seguridad tiene. soportes. Los comandos FTPS más comunes son AUTH TLS y AUTH SSL, que proporcionan seguridad TLS y SSL, respectivamente.

SFTP

SFTP (Protocolo seguro de transferencia de archivos) es un protocolo de transferencia de archivos de capa de aplicación que se ejecuta sobre un canal seguro. No confundir con (Protocolo simple de transferencia de archivos), que tiene la misma abreviatura. Si FTPS es simplemente una extensión de FTP, entonces SFTP es un protocolo separado y no relacionado que utiliza SSH (Secure Shell) como base.

Secure Shell

El protocolo fue desarrollado por uno de los grupos del IETF llamado Secsh. La documentación de trabajo del nuevo protocolo SFTP no se convirtió en un estándar oficial, pero comenzó a utilizarse activamente para el desarrollo de aplicaciones. Posteriormente, se publicaron seis versiones del protocolo. Sin embargo, el aumento paulatino de la funcionalidad en el mismo llevó a que el 14 de agosto de 2006 se decidió dejar de trabajar en el desarrollo del protocolo debido a la finalización de la tarea principal del proyecto (desarrollo SSH) y la falta. de un nivel de experto suficiente para pasar al desarrollo de un protocolo de sistema de archivos remoto completo.

SSH es un protocolo de red que permite el control remoto del sistema operativo y la tunelización de conexiones TCP (por ejemplo, para transferencia de archivos). Tiene una funcionalidad similar a los protocolos Telnet y rlogin, pero, a diferencia de ellos, cifra todo el tráfico, incluidas las contraseñas transmitidas. SSH permite elegir entre diferentes algoritmos de cifrado. Los clientes SSH y los servidores SSH están disponibles para la mayoría de los sistemas operativos de red.

SSH le permite transferir de forma segura casi cualquier otro protocolo de red en un entorno no seguro. Por lo tanto, no solo puede trabajar de forma remota en su computadora a través del shell de comandos, sino también transmitir una transmisión de audio o video (por ejemplo, desde una cámara web) a través de un canal cifrado. SSH también puede utilizar la compresión de los datos transmitidos para el cifrado posterior, lo cual es conveniente, por ejemplo, para iniciar de forma remota clientes X WindowSystem.

La primera versión del protocolo, SSH-1, fue desarrollada en 1995 por el investigador Tatu Ulönen de la Universidad Tecnológica de Helsinki (Finlandia). SSH-1 fue escrito para brindar mayor privacidad que los protocolos rlogin, telnet y rsh. En 1996, se desarrolló una versión más segura del protocolo, SSH-2, que es incompatible con SSH-1. El protocolo ganó aún más popularidad y en el año 2000 tenía aproximadamente dos millones de usuarios. Actualmente, el término “SSH” generalmente significa SSH-2, porque La primera versión del protocolo prácticamente no se utiliza debido a importantes deficiencias. En 2006, el grupo de trabajo del IETF aprobó el protocolo como estándar de Internet.

Hay dos implementaciones comunes de SSH: comercial privada y de código abierto gratuito. La implementación gratuita se llama OpenSSH. En 2006, el 80% de las computadoras en Internet usaban OpenSSH. La implementación patentada es desarrollada por SSH Communications Security, una subsidiaria de propiedad total de Tectia Corporation, y es gratuita para uso no comercial. Estas implementaciones contienen casi el mismo conjunto de comandos.

El protocolo SSH-2, a diferencia del protocolo telnet, es resistente a los ataques de escucha de tráfico (“sniffing”), pero no a los ataques de intermediario. El protocolo SSH-2 también es resistente a ataques de secuestro de sesión, ya que es imposible unirse o secuestrar una sesión ya establecida.

Para evitar ataques de intermediario al conectarse a un host cuya clave aún no conoce el cliente, el software del cliente muestra al usuario una "huella digital de clave". Se recomienda comparar cuidadosamente la "instantánea de clave" que muestra el software del cliente con la instantánea de clave del servidor, obtenida preferiblemente a través de canales de comunicación confiables o en persona.

La compatibilidad con SSH está disponible en todos los sistemas tipo UNIX y la mayoría tiene un cliente y un servidor ssh como utilidades estándar. Existen muchas implementaciones de clientes SSH para sistemas operativos que no son UNIX. El protocolo ganó gran popularidad después del desarrollo generalizado de analizadores de tráfico y métodos para interrumpir el funcionamiento de las redes locales, como una solución alternativa al inseguro protocolo Telnet para gestionar nodos importantes.

Comunicación mediante SSH

Para trabajar a través de SSH, necesita un servidor SSH y un cliente SSH. El servidor escucha las conexiones de las máquinas cliente y, cuando se establece una conexión, realiza la autenticación, después de lo cual comienza a prestar servicio al cliente. El cliente se utiliza para iniciar sesión en una máquina remota y ejecutar comandos.

Protocolos SFTP y FTPS

Comparación con FTPS

Lo principal que distingue a SFTP de FTP y FTPS estándar es que SFTP cifra absolutamente todos los comandos, nombres de usuario, contraseñas y otra información confidencial.

Tanto el protocolo FTPS como el SFTP utilizan una combinación de algoritmos asimétricos (RSA, DSA), algoritmos simétricos (DES/3DES, AES, Twhofish, etc.), así como un algoritmo de intercambio de claves. Para la autenticación, FTPS (o para ser más precisos, SSL/TLS sobre FTP) utiliza certificados X.509, mientras que SFTP (protocolo SSH) utiliza claves SSH.

Los certificados X.509 incluyen una clave pública y cierta información sobre el certificado del propietario. Esta información permite, por otra parte, verificar la integridad del propio certificado, la autenticidad y el propietario del certificado. Los certificados X.509 tienen una clave privada correspondiente, que normalmente se almacena por separado del certificado por razones de seguridad.

La clave SSH contiene solo la clave pública (la clave privada correspondiente se almacena por separado). No contiene ninguna información sobre el propietario de la clave. Algunas implementaciones SSH utilizan certificados X.509 para la autenticación, pero en realidad no verifican toda la cadena de certificados; solo se utiliza la clave pública (lo que hace que dicha autenticación sea incompleta).

Conclusión

Sin duda, el protocolo FTP sigue desempeñando un papel importante en el almacenamiento y distribución de información en la red a pesar de su venerable antigüedad. Es un protocolo conveniente, multifuncional y estandarizado. Sobre esta base se han construido muchos archivos de archivos, sin los cuales el trabajo técnico no sería tan eficaz. Además, es fácil de configurar y existen programas de servidor y cliente para casi todas las plataformas actuales y no tan actuales.

A su vez, sus versiones protegidas resuelven el problema de la confidencialidad de los datos almacenados y transmitidos en el mundo moderno. Ambos protocolos nuevos tienen sus pros y sus contras y cumplen funciones ligeramente diferentes. En aquellas áreas donde se necesita un archivo de archivos, es preferible usar FTPS, especialmente si ya se ha utilizado allí anteriormente el FTP clásico. SFTP es menos común por su incompatibilidad con el antiguo protocolo, pero es más seguro y tiene más funcionalidad, ya que forma parte del sistema de gestión remota.

Lista de fuentes

Fuente: habr.com

Añadir un comentario