it-swarm-es.com

¿Cuál es la diferencia en seguridad entre una conexión VPN y una conexión SSL?

Me gustaría diseñar una aplicación cliente-servidor donde el servidor se coloca en Internet. Supongo que podría configurar la conexión cliente-servidor usando VPN (¿está usando IPSec?) O usando una conexión SSL (posiblemente https). ¿Cuáles son las diferencias entre VPN/IPsec y SSL/https para asegurar una conexión de servidor cliente a través de Internet?

65
Jonas

VPN significa "red privada virtual". Es un concepto genérico que designa una parte de una red más grande (por ejemplo, Internet en general) que está aislada lógicamente de la red más grande a través de medios que no son de hardware (eso es lo que significa "virtual"): no es que estemos usando distintos cables e interruptores; más bien, el aislamiento se realiza mediante el uso de criptografía.

SSL (ahora conocido como TLS) es una tecnología que toma un medio de transporte bidireccional y proporciona un medio bidireccional seguro. Requiere que el medio de transporte subyacente sea "mayormente confiable" (cuando no se ataca, los bytes de datos se transfieren en el orden debido, sin pérdida ni repetición). SSL proporciona confidencialidad, integridad (las alteraciones activas se detectan de manera confiable) y alguna autenticación (generalmente autenticación de servidor, posiblemente autenticación mutua de cliente-servidor si se usan certificados en ambos lados).

Entonces, VPN y SSL no son del mismo nivel. Una VPN implementación requiere alguna criptografía en algún momento. Algunas implementaciones de VPN en realidad usan SSL, lo que resulta en un sistema en capas: la VPN transfiere paquetes IP (de la red virtual) serializándolos en una conexión SSL, que a su vez usa TCP como medio de transporte, que se construye sobre paquetes IP (en la red física desprotegida). IPsec es otra tecnología que está más profundamente integrada en los paquetes, que suprime algunas de esas capas y, por lo tanto, es un poco más eficiente (menos sobrecarga de ancho de banda). Por otro lado, IPsec debe administrarse bastante profundo dentro del código de red del sistema operativo, mientras que una VPN basada en SSL solo necesita alguna forma de secuestrar el tráfico entrante y saliente; el resto puede estar inactivo en el software de nivel de usuario.

Según tengo entendido su pregunta, tiene una aplicación donde algunas máquinas deben comunicarse a través de Internet. Tiene algunos requisitos de seguridad y está pensando en usar SSL (sobre TCP sobre IP) o posiblemente HTTPS (que es HTTP-over-SSL-over-TCP-over-IP), o configurar una VPN entre el cliente y el servidor y usar "plain" TCP en esa red privada (el punto de la VPN es que le brinda una red segura donde ya no necesita preocuparse por la confidencialidad) Con SSL, su código de conexión debe ser consciente de la seguridad; desde el punto de vista de la programación, no abre una conexión SSL como si fuera "solo un socket". Algunas bibliotecas lo hacen relativamente simple, pero aún así, debe administre la seguridad a nivel de aplicación. Una VPN, por otro lado, está configurada a nivel de sistema operativo, por lo que la seguridad no está entre su aplicación en el cliente y su aplicación en el servidor, sino entre el sistema operativo del cliente y el sistema operativo del servidor : ese no es el mismo modelo de seguridad, aunque en muchas situaciones la diferencia resulta no ser relevante.

En la práctica, una VPN significa que se necesita algún paso de configuración en el sistema operativo del cliente. Es bastante invasivo. El uso de dos aplicaciones basadas en VPN en el mismo cliente puede ser problemático (en términos de seguridad, porque el cliente actúa como un puente que une dos VPN que deben aislarse nominalmente entre sí, y también en la práctica, debido a colisiones en la dirección espacio). Si el cliente es un cliente, hacer que configure una VPN correctamente parece una tarea imposible. Sin embargo, una VPN significa que las aplicaciones no necesitan ser conscientes de la seguridad, por lo que esto facilita mucho la integración de software de terceros en su aplicación.

77
Thomas Pornin

Ambos tienen problemas de seguridad si no se configuran correctamente. Pero primero comencemos con algunas definiciones:

Cisco tiene una buena definición de VPN:

VPN puede tomar varias formas. Una VPN puede estar entre dos sistemas finales, o puede estar entre dos o más redes. Una VPN se puede construir usando túneles o encriptación (esencialmente en cualquier capa de la pila de protocolos), o ambos, o alternativamente construir usando MPLS o uno de los métodos de "enrutador virtual". Una VPN puede consistir en redes conectadas a la red de un proveedor de servicios mediante líneas arrendadas, Frame Relay o ATM, o una VPN puede consistir en suscriptores de acceso telefónico que se conectan a servicios centralizados u otros suscriptores de acceso telefónico. https://www.Cisco.com/c/en_in/products/security/vpn-endpoint-security-clients/what-is-vpn.html

En cuanto a SSL:

SSL (Secure Sockets Layer), también conocido como TLS (Transport Layer Security), es un protocolo que permite que dos programas se comuniquen entre sí de manera segura. Al igual que TCP/IP, SSL permite que los programas creen "sockets", puntos finales para la comunicación y establezcan conexiones entre esos sockets. Pero SSL, que se basa en TCP, agrega la capacidad adicional de cifrado. http://www.boutell.com/newfaq/definitions/ssl.html

En relación con su pregunta, la principal diferencia es que SSL a menudo utiliza el navegador para cifrar datos entre el usuario final y el servidor, y se usa comúnmente para áreas de sitios web que requieren la protección de la confidencialidad y la integridad de los datos.

VPN/IPSEC requiere un software de cliente VPN específico y generalmente es para proporcionar acceso remoto a sistemas o redes. También existe la opción de utilizar L2TP o L2F en lugar de IPSEC.

Sin embargo, las VPN SSL son cada vez más frecuentes como un medio para proporcionar acceso a redes/sistemas a través del navegador web. Este enfoque tiene muchos beneficios, ya que utiliza el navegador web común para habilitar la conexión segura. La granularidad de este enfoque también es una buena forma de controlar los accesos a aplicaciones específicas.

En cuanto a los problemas de seguridad:

SSL -

  • Los cifrados de seguridad débiles podrían conducir a la capacidad de realizar ataques de estilo intermediario contra el usuario final, lo que provocaría una pérdida de confidencialidad/integridad de los datos.

    • Una mezcla mal configurada de contenido HTTP/HTTPS también podría conducir a una pérdida de confidencialidad/integridad de los datos.

IPSEC -

15
David Stubley

Algunas muy buenas respuestas aquí, no repetiré lo que ya se dijo.
Sin embargo, me pareció que faltaba un punto: SSL es mucho más fácil de configurar de forma ad-hoc, especialmente si no se requieren certificados de cliente.
IPsec, por otro lado, siempre requiere certificados de cliente (suponiendo una configuración normal y típica), y también hay otras dificultades en la configuración y distribución inicial.

Como tal, IPsec suele ser más adecuado para una red controlada, y menos en Internet salvaje y desconocida. Consulte más información en esta otra pregunta: " datos de IPsec (seguridad de protocolo de Internet) ".

Por lo tanto, volviendo a su pregunta real, en casi todos los casos en los que está poniendo el servidor en Internet, no esperaría que sus usuarios se conectaran usando una VPN. (Existen excepciones, por supuesto).
En su lugar, simplemente configure certificados SSL en su servidor, señale a sus clientes y listo, (solo asegúrese de validar explícitamente el certificado, dependiendo del idioma/tecnología/biblioteca que tenga) re usando ...)

7
AviD

¿Estás mirando estas opciones para crear una VPN segura? Generalmente, SSL es más fácil de implementar y se admite mejor para un tipo de VPN de escritorio a red, como cuando un empleado en el hogar se conecta a la red corporativa. Si está realizando una implementación más compleja, como una VPN encriptada de red a red (por ejemplo, entre dos organizaciones diferentes), entonces IPSEC proporcionará un mejor control y más opciones de personalización.

Hay un decente documento técnico sobre el tema de Juniper Networks, aunque podría estar sesgado por las fortalezas de sus productos.

5
Eugene Kogan

Bueno, la diferencia es algo así como la diferencia entre un círculo y un cuadrado (ambos son formas, pero difieren mucho). Ambos aseguran las comunicaciones, pero lo hacen en diferentes niveles y de diferentes maneras. IPSEC es cifrado y autorización por cable, mientras que SSL es específico de la aplicación.

IPSEC tiene control de acceso mientras que SSL no.

¿Puedes ser más específico con lo que estás tratando de resolver?

2
Steve

Esta podría ser una respuesta muy larga, pero intentaré la corta.

Cuando usa https, su navegador (actúa como un cliente SSL) solo cifrará esta conexión con el servidor web.

Cuando usa VPN, necesita un cliente especial y establecer un túnel entre el cliente y el servidor. Luego puede configurar qué tráfico pasa por el túnel. Esto puede ser todo o solo su tráfico http.

Cuando solo desea configurar una aplicación cliente/servidor que pueda comunicarse con http, la solución más fácil debería ser el tráfico https, cuando necesita ser encriptado. Es mucho más complicado configurar una VPN y mantenerla.

2
Christian

Esto depende de su modelo de amenaza, de la naturaleza del protocolo del servidor del cliente que necesita y de sus clientes.

¿Está destinado a usuarios finales poco sofisticados? Luego use SSL: en este punto, la complejidad de la VPN solo desactivará a muchos usuarios potenciales.

¿Desea implementar el cliente como una aplicación de navegador (perahps con javascript)? Por otra parte, https/ssl parece ser el camino a seguir.

¿El servidor alguna vez necesita notificar asincrónicamente al cliente de algo? Entonces HTTPS puede no ser lo que desea (aunque se puede hacer para que lo haga).

¿Qué tan grande es el riesgo de phishing? Si sería fácil para los atacantes atraer a la gente hacia ellos como un MITM, SSL probablemente sea mejor ya que autentica cada servidor al cliente. Una VPN típica, una vez configurada, no ayuda al usuario a evitar a un atacante que se ha metido en otros hosts en la VPN. Esto probablemente no sea un gran riesgo, pero nuevamente depende de lo que esté haciendo.

Si está implementando esto en la nube (tanto cliente como servidor), puede obtener una VPN de forma casi gratuita que puede abordar algunas amenazas muy casuales.

2
nealmcb

Estoy lejos de ser un experto en seguridad, pero creo que la diferencia más importante entre los dos no está en las otras respuestas.

Por VPN, la comunicación es así:

HTTP client <-[raw]-> VPN client
  <-[encrypted]-> 
VPN server <-[raw]-> HTTP server

Por HTTPs va de esta manera:

HTTP client
  <-[encrypted]-> 
HTTP server

Entonces, mediante VPN, los datos desprotegidos pueden viajar en la red local de los clientes y en la red local de los servidores. Si no confía en esas redes por completo, es una buena idea utilizar HTTP. Tenga en cuenta que la VPN y los pares cliente-cliente, servidor-servidor HTTP no están necesariamente en computadoras idénticas, p. los enrutadores se pueden configurar para ser servidores o clientes VPN.

Dado que estas tecnologías funcionan en un nivel diferente, no son mutuamente excluyentes, por lo que puede usar ambas si desea otra capa de protección y no le importa la caída del rendimiento que viene con ella o simplemente puede usar una de ellas, que se adapta mejor a tus necesidades. Hasta donde yo sé, ambas tecnologías se consideran seguras si están configuradas correctamente.

0
inf3rno