[Jiwang] Explicación detallada del protocolo FTP

1. Introducción al concepto

File Transfer Protocol, protocolo de transferencia de archivos , es un protocolo de capa de aplicación que, basado en la arquitectura cliente / servidor, implementa servicios para compartir archivos y utiliza transmisión TCP.

2. Dos modos de trabajo

FTP admite los dos modos de trabajo siguientes:

  1. Modo activo (POST) : el cliente envía información del puerto al servidor FTP y el servidor se conecta activamente al puerto.
  2. Modo pasivo (PASV) : el servidor FTP abre y envía información del puerto al cliente, el cliente se conecta al puerto y el servidor acepta pasivamente el puerto.
    Actualmente, la mayoría de los servidores FTP utilizan el modo pasivo, pero algunos escenarios requieren el modo activo.

(1) Modo activo

Insertar descripción de la imagen aquí

Flujo de trabajo en modo activo

  1. El cliente selecciona aleatoriamente un puerto X y envía una solicitud al puerto 21 del servidor (puerto predeterminado, que se puede cambiar) a través de TCP para establecer un canal de comando. Una vez que se establece el canal de comando, cualquier instrucción de operación posterior, como carga y descarga, se transmitirá primero a través del canal de comando. Por supuesto, el proceso de establecer un canal de comando requiere el protocolo de enlace de tres vías de TCP.

  2. Cuando están involucradas operaciones como carga y descarga, el cliente seleccionará aleatoriamente el puerto Y nuevamente, notificará al servidor a través del canal de comando y solicitará el establecimiento de un canal de datos. A diferencia del canal de comando, que solo transmite instrucciones, el canal de datos se utiliza para la transmisión de datos real.

  3. Después de recibir la notificación, el servidor se conecta activamente al puerto Y del cliente a través del puerto 20 (puerto predeterminado), en este momento el canal de datos se establece oficialmente y el cliente y el servidor comienzan a transmitir datos reales.

    Como puede ver, el protocolo FTP utiliza dos enlaces, el canal de comando para transmitir instrucciones y el canal de datos para transmitir datos. Cabe señalar que el canal de datos no se establecerá al principio y solo se establecerá temporalmente cuando se trate de transmisión de datos.

    Ahora la pregunta es, parece que el modo activo puede funcionar muy bien, ¿por qué existe un modo pasivo y el modo pasivo se ha vuelto común?
    Insertar descripción de la imagen aquí
    La respuesta es que, de hecho, suele haber firewalls o enrutadores entre el cliente y el servidor. Cuando el cliente solicita establecer un canal de datos, el servidor se conectará activamente al puerto Y del firewall en lugar del puerto Y del cliente, y el establecimiento del canal de datos falla. En este momento, parece que el cliente se ha conectado al servidor, pero no puede transmitir datos.

    Para evitar la vergüenza causada por los firewalls, surgió el modo pasivo.

(2) modo pasivo

Insertar descripción de la imagen aquí
Flujo de trabajo en modo pasivo

  1. Al igual que el modo activo, el cliente selecciona aleatoriamente un puerto X, envía una solicitud al puerto 21 del servidor a través de TCP y establece un canal de comando.

  2. Cuando se trata de operaciones como carga y descarga, el cliente notifica al servidor a través del canal de comando y solicita el establecimiento de un canal de datos. En este momento, el cliente en modo pasivo no selecciona aleatoriamente un puerto para notificar al servidor.

  3. Después de que el servidor recibe la notificación para establecer el canal de datos, seleccionará aleatoriamente su propio puerto Z y continuará informando al cliente a través del puerto Z del canal de comando.

  4. El cliente se conecta activamente al puerto Z del servidor a través de su propio puerto Y aleatorio. En este momento, el canal de datos está oficialmente establecido.

    El modo pasivo resuelve el problema del cliente que se esconde detrás del firewall y no puede establecer un canal de datos, porque el establecimiento del canal de datos lo inicia el cliente y el servidor lo acepta pasivamente. Sin embargo, cuando el servidor está oculto detrás de un firewall, el modo pasivo aún no puede establecer un canal de datos.
    Insertar descripción de la imagen aquí
    Por supuesto, hay formas de penetrar tanto los firewalls como los enrutadores, por lo que no entraré en detalles aquí.

3. Razones de la aparición del modo pasivo.

En la historia del FTP, hubo un modo activo, pero ¿por qué apareció nuevamente el modo pasivo?

Hace mucho tiempo no existía la tecnología para compartir Internet, luego surgió la siguiente situación:

El acceso compartido a Internet significa que muchas computadoras comparten una IP de red pública para usar Internet. Por ejemplo, una determinada red de área local comparte la IP de red pública 210.33.25.1 para acceder a Internet. Cuando un usuario de la red interna 192.168.0.1 accede al servidor FTP en la red externa, si se usa el modo activo, 192.168.0.1 le dice al servidor FTP que necesito un archivo determinado y que he abierto el puerto x. Debido a que es una conexión a Internet compartida, cuando 192.168.0.1 sale de la puerta de enlace, su propia dirección IP se traduce a la dirección IP pública de 210.33.25.1. Entonces, el mensaje recibido por el servidor es que 210.33.25.1 requiere un archivo determinado y tiene el puerto x abierto. Luego, el servidor FTP transferirá datos al puerto X de 210.33.25.1, lo que por supuesto no tendrá éxito porque la dirección que abre el puerto x no es 210.33.25.1.

En modo activo, los dos puertos de FTP son relativamente fijos: si el puerto de comando es x, el puerto de datos es x-1. De forma predeterminada, el puerto de comando es 21 y el puerto de datos es 20. Por supuesto, ambos números de puerto se pueden modificar. Es muy conveniente utilizar el firewall de esta manera, siempre que estos dos puertos estén abiertos. Pero si el cliente comparte Internet, no se puede utilizar FTP normal.

Por lo tanto, definitivamente se requiere el modo pasivo.

El modo pasivo es más problemático: de forma predeterminada, el puerto de comando es 21, pero el puerto de datos es aleatorio.

4. Tres modos de autenticación

  1. Modo de usuario anónimo: cualquiera puede iniciar sesión en el servidor FTP directamente sin verificación de contraseña. Este modo no es seguro y generalmente solo se usa para transferir archivos públicos sin importancia. No se recomienda su uso en entornos de producción.
  2. Modo de usuario local: verifique los permisos de inicio de sesión a través de usuarios locales del sistema Linux, que es más seguro que el modo de usuario anónimo.
  3. Modo de usuario virtual: al verificar los permisos de inicio de sesión del usuario virtual, el usuario virtual solo puede acceder al servicio FTP proporcionado por el sistema Linux, pero no puede acceder a otros recursos del sistema Linux. Este modo es más seguro que los otros dos modos. Si tiene requisitos de seguridad más altos para los datos del servidor, puede configurar este modo usted mismo bajo la guía de profesionales relevantes.

Punto de conocimiento ampliado: puerto

Un puerto puede entenderse simplemente como la salida de comunicación entre una computadora y el mundo exterior .

En tecnología de redes, puerto tiene dos significados: uno es un puerto físico, también conocido como interfaz, como módem ADSL, conmutadores y enrutadores que se utilizan para conectarse a otros dispositivos de red, como puertos RJ-45 y puertos SC, etc. ; el segundo es el puerto del software, que generalmente se refiere al puerto en el protocolo TCP/IP. El rango de puertos es de 0 a 65535, como el puerto 80 para navegar por servicios web, el puerto 21 para servicios FTP, etc.

El papel del puerto de software: es un símbolo de unificar los procesos de aplicación del sistema TCP/IP y permite que los procesos de aplicación de computadoras que ejecutan diferentes sistemas operativos se comuniquen entre sí.

El protocolo TCP orientado a servicios de conexión y el protocolo UDP sin servicio utilizan números de puerto de 16 bits (el rango de puertos es 0 ~ 65535) para representar y distinguir diferentes aplicaciones en la red. El protocolo de capa de red IP utiliza números de protocolo específicos (TCP 6, UDP 17 ) Representar y distinguir protocolos de capa de transporte.

Tres categorías principales de puertos :

  1. Puertos conocidos: de 0 a 1023, están estrechamente vinculados a algunos servicios. Por lo general, la comunicación en estos puertos indica el protocolo de un determinado servicio. Por ejemplo: el puerto real 80 es siempre comunicación HTTP.
  2. Puertos Registrados: del 1024 al 49151. Están vagamente vinculados a algunos servicios. Esto significa que muchos servicios están vinculados a estos puertos y estos puertos también se utilizan para muchos otros fines. Por ejemplo: muchos sistemas manejan puertos dinámicos que comienzan alrededor del 1024.
  3. Puertos Dinámicos y/o Privados: del 49152 al 65535. En teoría, estos puertos no deberían asignarse a estos servicios. En la práctica, a las máquinas se les suelen asignar puertos dinámicos a partir de 1024. Pero hay excepciones: el puerto RPC de SUN comienza en 32768.

5. La diferencia entre FTPS y SFTP

Cuando utilizan FTP para transferir archivos, los usuarios deben obtener permiso de transferencia de archivos proporcionando credenciales al servidor FTP. Por supuesto, es posible que algunos servidores FTP públicos no requieran credenciales para acceder a sus archivos, pero no se puede garantizar la seguridad de la transmisión de datos. Cualquier transmisión de datos no cifrados en la red pública es muy peligrosa, por lo que para proteger la seguridad de los datos transmitidos, los dos protocolos siguientes se derivan de FTP: FTPS y SFTP.

FTPS se divide en FTPS SSL implícito y FTPS SSL explícito

  • FTPS SSL implícito : este modo normalmente se ejecuta en el puerto 990. En este modo, todo intercambio de datos requiere el establecimiento de una sesión SSL entre el cliente y el servidor, y el servidor rechazará cualquier intento de conexión que no utilice SSL.

  • FTPS SSL explícito : el servidor con SSL explícito puede admitir sesiones FTP y FTPS. Antes de iniciar una sesión, el cliente debe establecer una conexión no cifrada con el servidor FTP y enviar el comando AUTH TLS o AUTH SSL antes de enviar las credenciales del cliente para solicitar al servidor que cambie el canal de comando a un canal cifrado SSL. Cuando se establece correctamente, el usuario Las credenciales se envían al servidor FTP, lo que garantiza que cualquier comando durante la sesión se cifre automáticamente a través del canal SSL.

    Resumen rápido : cuando el modo implícito está habilitado, el puerto predeterminado de FTP se cambia a TCP/990, se establece automáticamente una conexión segura durante el período de servicio y el cliente también debe admitir el modo de conexión segura, es decir, usar SSL para conectarse. . Cuando el modo explícito está habilitado, el método de conexión y el puerto predeterminado son los mismos que FTP, pero la conexión segura debe activarse con un comando de tipo AUTH SSL/TLS antes de que los datos puedan transmitirse normalmente.

SFTP

Protocolo seguro de transferencia de archivos, protocolo seguro de transferencia de archivos.
FTPS agrega una capa de SSL al protocolo FTP. SFTP es un protocolo basado en el protocolo de red SSH (Secure Shell), que es completamente diferente de FTPS. SFTP no utiliza canales de comando y canales de datos separados, sino que tanto los datos como los comandos se transmiten en paquetes de datos con formato especial a través de una única conexión.

SFTP proporciona dos métodos para verificar conexiones:

  • Al igual que con FTP, sólo es necesario verificar el ID de usuario y la contraseña al conectarse. Sin embargo, a diferencia de FTP, estas credenciales están cifradas, lo que constituye la principal ventaja de seguridad de SFTP.
  • Además de las contraseñas, es posible autenticarse mediante claves SSH y conectarse mediante el protocolo SFTP.

6. Preguntas frecuentes relacionadas con FTP

  1. Para los servidores, abrir servicios y proporcionar cargas y descargas de archivos es intrínsecamente peligroso. Si realmente necesita habilitar el servicio FTP, asegúrese de configurar los permisos de usuario.
  2. El FTP en sí es una transmisión de texto claro, por lo que el protocolo en sí no es seguro. Puedes considerar usar SFTP que viene con SSH.
  3. Si se encuentra con la situación "Puede conectarse al servidor FTP, pero no puede transferir archivos", puede solucionar el problema según el modo FTP y los permisos de archivos del servidor.

Supongo que te gusta

Origin blog.csdn.net/muyiyufei/article/details/129288310
Recomendado
Clasificación