Ambiente seguro para servidores con datos privados confidenciales

4

Estoy desarrollando una aplicación web que expondrá una API pública al mundo, pero almacenará datos personales muy confidenciales y privados. Tener el contenido hackeado sería fatal.

Estaré usando las siguientes tecnologías:

  • REST (sobre HTTPS)
  • servidor Apache en el backend
  • base de datos PostgreSQL

Se me ha ocurrido una idea (lo pensé yo mismo, por lo que puede tener vulnerabilidades que los expertos en seguridad pueden detectar aquí).

Los componentes de mi entorno seguro son los siguientes:

  1. Máquina A: servidor frontal (público) en una máquina dedicada (yo). Esta máquina tiene reglas de firewall para permitir solo conexiones TCP a través del puerto 443 (HTTPS) (ii). La configuración de Apache solo acepta ciertos patrones de expresiones regulares de la API publicada (iii). Apache reenvía la solicitud al servidor B, utilizando una asignación de API interna y utilizando un puerto secreto no estándar

  2. Máquina B: (yo). Esta máquina se ha configurado para aceptar solo datos de la Máquina A (ii). Aquí es donde existen la lógica de aplicación y los datos. (iii). Los resultados se devuelven a la Máquina A, para enviar al solicitante.

¿Puede alguien mejorar esta configuración (es decir, 'endurecer' o hacerlo más seguro)?

    
pregunta Homunculus Reticulli 10.12.2015 - 13:39
fuente

4 respuestas

5

Busque asesoramiento profesional ... en serio, si los datos son tan confidenciales como usted dice y las consecuencias son realmente fatales, sería negligente confiar en los consejos de aquí sobre los cuales basar una solución.

Nadie puede ofrecer una respuesta contextual confiable porque no hay suficiente información sobre los requisitos comerciales para los que está la solución. Algunas cosas deberían ser consideradas para determinar una solución apropiada: la audiencia prevista, qué datos son, para qué se usarán, etc. pueden abrir arquitecturas alternativas que podrían proporcionar una mitigación de riesgos más efectiva.

Habrá aspectos que no se mencionan en su pregunta ... control de acceso (posiblemente de factores múltiples), pseudo o requisito de identidad en el mundo real (registro de impactos), cifrado de datos.

Si se encuentra en Europa, se aplicará la legislación de protección de datos ... así que hay toda una serie de requisitos previos incluso antes de recopilar los datos: condiciones para el procesamiento, dónde se pueden procesar los datos, para qué se pueden utilizar, etc. .

Sé que esta no es una respuesta directa a tu pregunta, pero me estaba quedando sin espacio en un comentario ... es posible que hayas considerado todo esto, ¡pero solo quería asegurarme!

    
respondido por el R15 10.12.2015 - 16:17
fuente
1

Básicamente, A actúa como un cortafuegos para B , y realiza algunas comprobaciones de validez adicionales.

¿Cómo se conectan las máquinas A y B ? ¿Hay (o podría haber) otras máquinas en esa red? Si los hay, esta división podría no comprarte mucha seguridad. Asegúrese de que la conexión esté encriptada y de que la máquina B sea segura y que esté conectada directamente a Internet.

El uso de expresiones regulares para validar las llamadas a la API me parece un poco extraño, pero es más probable que te salgas con un servicio mal configurado en B de esa manera.

Como nota general: esta configuración introduce complejidad adicional. Los sistemas complejos son más difíciles de asegurar que los simples. ¿Los datos en B siguen siendo seguros si A se ha comprometido? Si no, simplemente aumentaste la superficie de ataque. Verifique si puede obtener el mismo nivel de seguridad con una sola máquina.

    
respondido por el tarleb 10.12.2015 - 14:03
fuente
1

Estamos hablando de información confidencial aquí, información financiera un poco más. Es muy importante para usted asegurarse de que el acceso a la base de datos esté estrictamente permitido para aquellos que solo están autorizados. Puedo sugerir que al menos tiene que separar físicamente sus máquinas / servidores, es decir, servidores web, de aplicaciones y de bases de datos, y tener un firewall en medio. Los datos transferidos entre los servidores deben estar encriptados, lo mismo ocurre con los datos almacenados en el servidor de la base de datos. Aparte de eso, todos los valores básicos deben estar en su lugar, por ejemplo. IPS, IDS, SSL, etc.

    
respondido por el neena 11.12.2015 - 08:33
fuente
-1

Esto suena como un tipo de configuración dmz. Básicamente, si la información es fatal si se pierde, entonces sugeriría buscar la seguridad física y las configuraciones de estilo 2FA / biometric / yubikey. Los miles de dólares que vale la pena el esquife endurecido podrían valer la pena, aunque podría especificar uno usando una caja fuerte estándar.

    
respondido por el m2kin2 11.12.2015 - 08:46
fuente

Lea otras preguntas en las etiquetas