Protegiendo archivos confidenciales cargados [cerrado]

1

Tenemos una aplicación web en Linux (App A) que usa PHP y Zend y otra en Windows que usa Asp.net C # (App B). Ambos acceden a la misma base de datos. La aplicación B es solo para uso interno, mientras que la aplicación A puede utilizarse fuera de nuestra red.

Recibimos una solicitud para permitir la carga de archivos desde ambas aplicaciones y también debería ser accesible desde ambos lados. El archivo contendrá información personal, por lo que debe ser confidencial y seguro tanto como sea posible.

Estamos considerando la posibilidad de almacenar los archivos en la base de datos, ya que es más fácil de implementar, dada la situación actual de que las aplicaciones residen en servidores con sistemas operativos diferentes.

¿Cómo podemos al menos agregar una capa de seguridad (por ejemplo, cifrado) a nuestras aplicaciones para que el archivo solo sea accesible para los usuarios aprobados?

¿Cómo podemos proteger los archivos contra ataques?

[ACTUALIZACIÓN 2015-07-10]

Nos dimos cuenta del efecto a largo plazo de guardar los datos en la base de datos, así que estamos pensando en guardarlos en un servidor de archivos

    
pregunta artsylar 09.07.2015 - 04:23
fuente

3 respuestas

2

Hay numerosas preguntas con respuestas en este sitio, así como las Owasp Guidelines que cubren los riesgos de permitir el archivo. las cargas y cómo almacenar los archivos correctamente.

Es posible que desee verificar la legislación que se aplica a su aplicación y tomar las medidas necesarias para almacenar los archivos en consecuencia ( cifrado, derechos de acceso, integridad de datos, registro ).

En cuanto a su idea de almacenar archivos en la base de datos, creo que causará mucho estrés (así como sobrecarga de almacenamiento) a sus servidores. Es más conveniente almacenar archivos fuera de la raíz web con ACL (control de acceso) estricto y, posiblemente, cifrado.

La base de datos puede ser útil para almacenar metadatos y derechos de acceso para los usuarios de la (s) aplicación (es) web.

Es posible compartir los archivos entre servidores / aplicaciones de forma segura utilizando protocolos estándar como rsync o incluso https .

También puede considerar escanear los archivos cargados en busca de malware y fuzzing .

Averigüe cuáles son sus requisitos , consulte legislación y obtenga una descripción general de cómo debería funcionar su solución y qué precauciones está tomando. Luego consulte a un asesor / experto y revíselo.

    
respondido por el Alasjo 09.07.2015 - 10:42
fuente
1

Alasjo ya proporcionó una buena respuesta, pero creo que alguna información adicional podría ayudarlo a comprender las dificultades que tiene y cómo abordarlas.

En tu pregunta sugeriste cifrado. El simple cifrado de los datos cargados no puede ser suficiente para protegerlos. Dado que los datos cifrados son inútiles sin un medio para descifrarlos, su aplicación tendría que proporcionar una forma de descifrarlos. Si su atacante puede suplantar a un usuario con derechos para acceder a los datos, podría permitir que su aplicación lo descifre por él. Este problema es aún mayor si todos los usuarios que iniciaron sesión en su sistema pueden acceder a los datos cargados.

Lo que realmente necesita es un buen proceso de autenticación combinado con una buena autorización (también conocida como gestión de derechos):

1) La autenticación es para garantizar que nadie esté usurpando la identidad de un usuario legítimo. Puede comenzar asegurándose de que su usuario esté utilizando contraseñas difíciles de adivinar (p. Ej., Utilizando zxcvbn ) y NO obligándoles a cambiarlo regularmente (Los inconvenientes son mucho mayores que los beneficios). Luego, debe seguir la guía de OWASP sobre la autenticación.

2) La autorización es para garantizar que el usuario solo pueda acceder a los datos sobre los que tiene derechos. Hay muchas formas de definir y verificar los derechos, y debe tener cuidado de separarlos de los conceptos. Por lo general, se sigue el modelo RBAC , pero su aplicación puede requerir un control más preciso, así que elija sabiamente. RBAC consiste en poner al usuario en el grupo s (o roles) y otorgar derechos a los grupos (y no a los usuarios). En su caso, puede permitir que solo el cargador y el destinatario de los datos cargados accedan a él. El destinatario puede ser implícitamente un grupo. OWASP tiene una lista de verificación de la autorización también.

Puede cifrar los datos cargados, pero no espere obtener un aumento significativo en la seguridad de ellos. Explicar cómo hacerlo correctamente requeriría otra respuesta o guía. Pero, por supuesto, los procesos de carga y descarga en sí mismos deben estar protegidos mediante TLS.

No olvides seguir los consejos proporcionados por Alasjo en su respuesta también.

    
respondido por el Anonymous Coward 10.07.2015 - 09:56
fuente
0

Creo que Docker sería una posible solución para esto. No soy un experto en Docker. Así que esta es una solución de idea conceptual.

Estoy pensando que podrías crear algunos contenedores para la base de datos e ilustrar. Entonces digamos que construyes 3 contenedores (1-master, 1-internal y 1-webapp) con la misma base de datos en cada uno. Luego puede hacer que se analicen antes de que se sincronicen para evitar conflictos, malware, etc.

Con el boot2docker puede implementar con Linux, MAC o Windows, lo que tendría sentido ya que tiene Linux y Windows que acceden a la base de datos.

Docker tiene algunas herramientas ya integradas que podrían ayudarte a comenzar. De esta manera, puede hacer lo que quiera en los contenedores (es decir, cifrar, ACL, etc.) para que pueda controlar cada base de datos por separado, protegerlas de forma independiente.

Una vez más, esto solo significa una sugerencia de concepto.

enlace

    
respondido por el rhymsy 10.07.2015 - 06:08
fuente

Lea otras preguntas en las etiquetas