Necesito asegurar la comunicación entre una aplicación (se ejecuta en cualquier PC y ha sido diseñada para Windows) y un dispositivo externo (se ejecuta en UNIX). La aplicación se ejecuta en Windows, mientras que el dispositivo está basado en Unix. Puedo influir directamente en la aplicación, pero no puedo influir en el dispositivo (tengo que comunicarme con la persona que está desarrollando el firmware para los dispositivos). Ambos lados deben estar en la misma LAN para poder comunicarse entre sí, pero el tráfico entre ellos debe ser seguro. Hay varias conexiones TCP en bruto así como FTP. La comunicación es bidireccional. También hay una transmisión UDP dirigida, pero esto solo sucede a veces y los datos enviados no son tan sensibles, por lo que no hay necesidad de protección aquí todavía. Se puede conectar un dispositivo a varios hosts que ejecutan la aplicación y la aplicación se puede conectar a varios dispositivos. También debo asegurarme de que nadie obtenga acceso no autorizado a los dispositivos o manipule paquetes de datos entre la aplicación y los dispositivos. Esto significa que necesito controles de autorización e integridad. Mi objetivo es simplemente hacer que las comunicaciones TCP y FTP dentro de la LAN sean seguras. También podría ser posible que los usuarios necesiten acceso remoto a los dispositivos desde fuera de la LAN, pero esa es una historia diferente. Por ahora solo quiero asegurar el tráfico que está ocurriendo dentro de la LAN.
Hasta ahora todo bien. He investigado qué opciones de seguridad están disponibles. Mi problema parece ser bastante simple pero parece que hay muchas soluciones diferentes por ahí. Dos de ellos parecen estar adaptándose perfectamente a mi problema.
TLS / SSL SSH
Por lo que sé, SSH opera en la capa de aplicación mientras que TLS / SSL se implementa por encima de la capa TCP. ¿Esto significa que básicamente necesito una aplicación externa que configure un túnel SSH protegido para la comunicación de datos? ¿Necesito varios túneles para cada conexión que estoy usando (TCP, FTP sin procesar)? Si voy por SSH, ciertamente reemplazaré el FTP por SFTP. Por lo que sé, esto reduce la cantidad de puertos abiertos, ya que SFTP solo usa un puerto para el control y la transferencia de datos. Sin embargo, escuché que no es posible con SFTP limitar el ancho de banda del servidor. Necesitamos reducir la velocidad a la que el servidor FTP está enviando archivos porque el dispositivo tiene recursos limitados y el tráfico podría bloquear otros datos. Esto es posible con FTP
Por otro lado, hay TLS / SSL. No necesito programas de terceros aquí, pero debo ocuparme de TLS / SSL en la aplicación que estoy usando. Esto significa que la aplicación debe conocer el cifrado, que yo sepa. Permite el cifrado, la autenticación y puede garantizar la integridad de los datos para la comunicación. Eso está bien, pero ¿es posible aquí hacer un túnel de todo a través de una conexión? (De nuevo, tengo varias conexiones TCP y transferencia FTP). Podría reemplazar el FTP con FTPS, pero escuché que el FTPS (y el FTP en general) parecen tener problemas con NAT o firewalls. En el futuro, es posible que alguien necesite tener acceso a los servidores FTP en los dispositivos. Sin embargo, como mencioné anteriormente, si eso sucede, necesitaremos un servidor de acceso central de todos modos para que no sea un problema.
Ok, lo siento por todo el texto con el que te estoy molestando. Simplemente no estoy seguro de qué solución se adapta mejor a mi problema. Mis objetivos son simplemente asegurar el tráfico de datos y minimizar los puertos que deben estar abiertos en los dispositivos o en el host que ejecuta la aplicación.
¿Qué puedes sugerir? ¿SSH o TLS / SSL? ¿O tal vez algo completamente diferente (como VPN)?