Arquitectura del software de aplicación web: seguridad básica

1

Soy un completo principiante en el tema de seguridad y sé que debo leer esto , pero tengo una pequeña pregunta a la que espero que exista una respuesta corta.

Digamos que tengo tres componentes de una aplicación web 'hablando' entre ellos:

  • un extremo delantero;
  • una base de datos;
  • un componente de almacenamiento.

Cada uno de los componentes reside en una máquina físicamente distinta que tiene una conexión a Internet.

¿Cómo, entonces, una máquina de front-end puede conectarse a la máquina de base de datos de manera segura? ¿Cómo puede saber la máquina de la base de datos si la máquina de front-end se está conectando y no un atacante?

¿Existe alguna "mejor práctica" para conectar dos componentes en un sistema físicamente distribuido de manera tan segura, que solo ciertos componentes puedan acceder a otros componentes mientras que todas las demás fuentes tienen acceso restringido a esos componentes?

    
pregunta AviD 05.03.2012 - 19:29
fuente

1 respuesta

2

La solución estándar aquí en realidad utiliza tres niveles, independientemente del servidor, donde tiene un nivel / servidor web orientado a Internet (solo nivel de presentación), luego un nivel / servidor de aplicaciones (lógica de negocios de su aplicación), y luego una base de datos / servidor (almacenamiento).

Un servidor de seguridad se ubica frente a su servidor web y solo permite el tráfico de la web (http y / o https). Otro servidor de seguridad luego se emplaza entre su servidor web y su servidor de aplicaciones y solo permite que los protocolos necesarios para que su aplicación funcione pasar a través y sólo desde el servidor web (s). El servidor web está, en efecto, aislado entre dos cortafuegos en lo que llamamos DMZ y las interfaces tanto de Internet a DMZ como de DMZ a la red interna están estrictamente controladas de modo que solo pasan los protocolos esperados y solo de / a anfitriones esperados. Pero ... SOLO el nivel web debe ser accesible desde Internet, y solo debe utilizar los protocolos necesarios (HTTP y / o HTTPS). El servidor de aplicaciones no debería serlo, y la base de datos y / o el almacenamiento no deberían ser ABSOLUTAMENTE accesibles desde Internet. La idea aquí es que solo el front-end, nivel web, debería ser accesible desde Internet ... todas las conexiones al nivel de aplicación deben provenir del nivel web y todas las conexiones al nivel de base de datos deben provenir del nivel de aplicación.

Puede hacer esto más fuerte implementando SSL / TLS mutuamente autenticados entre los niveles.

Microsoft tiene una buena reseña en este que se encuentra aquí . Incluye un montón de cosas .NET / ASP, pero la idea general es independiente de la plataforma.

    
respondido por el jeffsix 05.03.2012 - 20:06
fuente

Lea otras preguntas en las etiquetas