¿Qué modo es más seguro, Activo o Pasivo?

¿Qué modo es más seguro, Activo o Pasivo?

Estaba investigando los tipos de modos ftp activos y pasivos y estoy un poco confundido con algunas preguntas sobre mi escenario actual.

Guión: Tengo dispositivos Android como clientes que serán utilizados por una organización y la organización está muy preocupada por la seguridad de sus servidores o los datos que contienen o cualquier otra cosa. Un buen ejemplo es el servidor de un banco.

Ahora pueden tener entre 1000 y 1500 dispositivos Android. cada dispositivo obtendrá una lista de elementos de descarga y cada dispositivo recorrerá la lista uno por uno y descargará ese elemento y creará una nueva conexión para cada elemento.

Ahora veamos la preocupación por la seguridad y la cantidad de dispositivos con el caso de uso de FTP mencionado anteriormente. Tengo la siguiente pregunta.

Modo activo: Según tengo entendido, creo que debería usar el modo activo, ya que se ocupa de las preocupaciones de la organización sobre la apertura de múltiples puertos en el servidor porque el dispositivo Android del cliente iniciará tanto el comando como la conexión de datos. pero por otro lado, ¿puede el servidor lograr enviar o abrir un canal de datos para enviar 1000-1500 dispositivos desde un solo puerto en modo activo? ¿no fallará?

Modo pasivo: Si pienso en el modo pasivo, entonces tenemos que buscar la preocupación de abrir múltiples puertos en una organización con mucha seguridad. y en el peor de los casos, ¿cuántos puertos deberíamos abrir para el modo pasivo para 1000-1500 dispositivos Android? El escenario de descarga de archivos se menciona anteriormente.

Respuesta1

FTP utiliza 1 conexión TCP de control y una o más conexiones de datos.

La conexión de control se utiliza para transferir mensajes sobre qué hacer y qué se está haciendo entre el cliente y el servidor. Las conexiones de datos se utilizan para transferir datos. En esencia: el cliente le dice al servidor en la conexión de control: Dame ese archivo y el servidor envía los bytes del archivo a la conexión de datos.

Dado que su pregunta está relacionada con la seguridad, profundizaré un poco más aquí: un cliente "abre" una conexión TCP que envía un TCP SYN a un servidor. Estos SYN suelen estar sujetos a reglas de firewall. Ejemplo: Permitir que <ALL_IPS_IN_THE_INTERNET> se conecte a <MY_FTP_SERVER> en el puerto 21.

El modo FTP activo es cuando el cliente abre la conexión de control y le dice al servidor a qué IP y PUERTO el servidor debe abrir la conexión de datos.

El modo FTP pasivo es cuando el cliente abre la conexión de control y el servidor le dice al cliente a qué IP y PUERTO debe abrir la conexión de datos.

El modo FTP activo es problemático cuando el cliente está detrás de un enrutador NAT, que comparte una única dirección IP pública entre varios clientes. El cliente solo conoce su dirección IP privada e incluso si pudiera averiguar la IP pública del enrutador y la envía al servidor FTP, cuando el servidor intenta conectarse a la IP, la solicitud llegará al enrutador, con muchos clientes. detrás, y no sabe a qué cliente debe reenviar el SYN.

Una solución a este problema es la inspección profunda de paquetes. El enrutador reconocerá que la conexión de control va al puerto 21, por lo que echará un vistazo a la conexión y cuando el cliente le diga al servidor a qué puerto debe abrir la conexión de datos, el enrutador agregará un reenvío de puerto temporal para eso. puerto para paquetes del servidor ftp. El enrutador desactivará el reenvío de puertos cuando se cierre la conexión de control.

Eso es increíble y bueno siempre y cuando no te importe la seguridad, es decir: ESO ES MALO. Utilice siempre cifrado al autenticar o transferir datos confidenciales.

Cuando cifra, el enrutador ya no puede acceder a la conexión de control y, por lo tanto, no puede crear el reenvío de puerto dinámico para el cliente ftp en modo activo.

Ese problema se soluciona con el modo FTP Pasivo, ya que ambas conexiones las abre el cliente.

Pero eso crea otro problema, no para el cliente, sino para el pobre administrador del firewall del servidor. Dado que el puerto al que se conecta el cliente en modo pasivo es algo aleatorio, la regla de firewall resultante se ve así: Permitir que <ALL_IPS_IN_THE_INTERNET> se conecte a <MY_FTP_SERVER> en el puerto 21 y los puertos 1024-65535. Si tiene un demonio de servidor ftp decente, puede configurar el rango de puertos utilizados para las conexiones de datos, lo que mejora un poco el firewall: Permita que <ALL_IPS_IN_THE_INTERNET> se conecte a <MY_FTP_SERVER> en el puerto 21 y en los puertos 20000 a 21500; le brinda 1500 conexiones de datos simultáneas.

Puedes hacerlo, pero no lo recomendaría. Existe una mejor alternativa al FTP: HTTP.

  • HTTP no utiliza conexiones de control ni de datos, lo cual es una bendición que no conlleva desventajas reales.
  • HTTP está bien soportado por dispositivos de seguridad/firewalls/firewalls de aplicaciones web/... - estos productos pueden incluso intermediar las conexiones SSL de sus clientes y realizar filtrado de contenido en HTTPS.
  • La mayoría de los servidores HTTP se pueden configurar para listados de directorios de servidores.
  • Todos los servidores HTTP admiten descargas, la mayoría de ellas incluso se reanudan.
  • Una biblioteca de cliente HTTP ya está disponible en dispositivos Android y iPhone

Entonces implementaría el cliente así:

  1. Obtenga una lista de directorio de la URL configurada para enumerar todos los archivos disponibles para descargar
  2. Descarga los archivos

HTTP incluso admite cargas y reanudación de cargas fallidas.

Espero poder lanzar HTTP con éxito aquí, ¡porque FTP es malo!

EDITAR: Estoy agregando un enlace a una buena publicación que muestra las conexiones máximas en el comportamiento del modo PASV de vsftpd:https://serverfault.com/questions/563582/connections-number-of-vsftp-in-passive-mode

información relacionada