Asegurando múltiples conexiones con diferentes protocolos todos juntos

1

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)?

    
pregunta WMEZ 13.11.2013 - 11:29
fuente

2 respuestas

1

Con SSL / TLS, lo más probable es que tenga que abrir varios puertos (uno por servicio) y, de hecho, FTPS (FTP sobre SSL / TLS) puede causar algún problema al tratar con la conexión de datos (puerto que se abre para establecer) la conexión, la dirección del dispositivo NAT a tener en cuenta, etc.).

SSH puede parecer más adecuado ya que permite abrir solo un puerto:

  • SSH ofrece soporte nativo para los protocolos SFTP y SCP para transferencias de archivos (incluso si no conozco la configuración de QoS en este nivel, generalmente administrada por el host o dispositivos externos), todo dentro de una sola conexión TCP (en oposición a las dos conexiones TCP requeridas por FTP),
  • Para el TCP sin formato, es posible que desee echar un vistazo a las opciones de configuración de los subsistemas SSH, que se utilizan principalmente para hacer que 'sshd' use un programa externo para manejar las solicitudes de SFTP. Puede permitirle definir sus propios subsistemas suplementarios correspondientes. a sus necesidades,
  • Y, por último, SSH ofrece servicios de tunelización para proteger cualquier tipo de conexiones TCP.
respondido por el WhiteWinterWolf 13.11.2013 - 11:57
fuente
1

Me gusta el hecho de que estás buscando utilizar los protocolos existentes en lugar de intentar inventar algo, con demasiada frecuencia las personas que publican están demasiado ansiosas por reinventar la rueda. Ninguna de las soluciones que ha elegido es difícil de implementar y usar mediante programación, Windows y Unix / Linux tienen un montón de soporte para ambas, y hay una gran cantidad de código de ejemplo para usar. Dado que también está en una LAN, asumo que no hay restricciones de ancho de banda o de latencia, por lo que si utiliza SSL / TLS o SFTP depende completamente de cómo funcionan sus aplicaciones:

  • Si está transfiriendo archivos o grupos de archivos de un sistema a otro scp / sftp es una buena opción. Es simple, robusto y rápido.
  • SSH, si se usa a menudo para conexiones de control, especialmente si el sistema que se controla es un sistema Unix / Linux, es fácil ejecutar comandos de comandos en el sistema remoto
  • TLS es el protocolo de elección si desea utilizar las API para el control y la mensajería entre sistemas. También puedes usarlo para transferencias de datos. Puede requerir más puertos pero estás en una LAN, por lo que no es un problema

Por lo tanto, puede usar uno de estos o una combinación de ellos dependiendo de lo que se supone que deben hacer sus aplicaciones. Respecto a la seguridad de estos protocolos recuerda estas cosas:

  1. La administración de claves y certificados es de importancia primordial para la seguridad de estos protocolos
  2. Pruebe y use paquetes nativos que ya existen en las implementaciones del sistema operativo para el cifrado y la gestión de certificados / claves, simplificará enormemente la ruta de actualización
respondido por el GdD 13.11.2013 - 13:27
fuente

Lea otras preguntas en las etiquetas