La forma más segura de entregar una aplicación web para el acceso sin conexión [cerrado]

3

Habiendo creado una aplicación web basada en una pila de PHP que se implementa en un servidor, me gustaría tener una forma de proporcionar acceso a ella sin conexión. Hay una base de datos de pacientes y citas que deben consultarse para el acceso de lectura cuando una conexión no está disponible o no está disponible. El acceso a la aplicación web requiere un inicio de sesión de cuenta.

La preocupación es que, dada la naturaleza sensible de los datos, tanto en términos de código como de base de datos, la implementación local de la aplicación web en su forma original definitivamente no es una opción.

Me preguntaba si reunir una VM encriptada junto con la aplicación web y un servidor web proporcionaría suficiente seguridad. Se le solicitará una contraseña al cliente, ejecute la máquina virtual y conéctese a la aplicación web utilizando una dirección local, de la misma manera que lo haría con el servidor remoto.

Mis expectativas en términos de seguridad serían que un atacante con acceso al sistema local no:

  1. poder iniciar sesión en la máquina virtual
  2. tener acceso al código real de la aplicación web mientras la VM se está ejecutando
  3. tener acceso a los datos de la base de datos mientras se ejecuta la máquina virtual
  4. no puede inferir información confidencial a través del volcado de memoria mientras se ejecuta la máquina virtual
  5. incluso si copian la imagen, no podrán usarla sin la contraseña

¿Se puede lograr esto con una máquina virtual y cuánta protección ofrece el cifrado? Por lo que he visto, el tipo de información que los proveedores están dispuestos a proporcionar es más en términos de pasos de configuración y menos en términos de capacidades de seguridad.

También me preguntaba si proporcionar una versión recortada de la aplicación web como un cliente ejecutable ofuscado (que tendría que volver a implementar desde cero y mantenerla sincronizada con la aplicación web real) y una base de datos cifrada serviría para Una mejor solución.

    
pregunta Nick 02.11.2015 - 11:26
fuente

2 respuestas

0

Depende de la plataforma de virtualización, pero casi todas las apuestas están desactivadas si un atacante obtiene acceso a la máquina virtual mientras se está ejecutando. Suponiendo que puedan reiniciarse sin necesidad de ingresar una contraseña, pueden obtener acceso de un solo usuario y tomar los datos que deseen en ese momento.

De manera similar, no tiene control sobre el sistema que se usa para ejecutar la imagen; si descarga la memoria en el disco, los datos se descargarán. Un atacante suficientemente motivado podría escribir un sistema de virtualización compatible que tenga este comportamiento.

Idealmente, no desea almacenar datos completos localmente. Una solución mejor, aunque obviamente más costosa, podría ser buscar conexiones redundantes a este sistema, ya que es claramente crítico para la práctica. Alternativamente, podría ser posible ejecutar un servidor local con una copia de los datos; esto tiene muchos de los mismos problemas que un dispositivo virtualizado, pero es probable que se pueda supervisar la manipulación más fácilmente y se almacene en una ubicación protegida físicamente, lo que facilita el acceso físico más difícil. De lo contrario, este servidor tendría que tratarse de la misma forma que el servidor de aplicaciones principal, recibir parches y tener un firewall adecuado, sería un espejo del servidor principal. Sin embargo, esto solo se debe tener en cuenta si existe suficiente experiencia técnica para ejecutar sistemas de alto riesgo.

    
respondido por el Matthew 02.11.2015 - 12:20
fuente
0

@matthew ya habló sobre los inconvenientes de usar una VM para esto. Quiero agregar que, para una aplicación de este tipo, usaría un servicio web. Si el presupuesto es un problema, puede almacenar la interfaz en una placa Raspberry Pi o Arduino, que es muy barata. La idea es que el front-end siempre se presente, pero la información requiere una conexión del lado del servidor, o al usar trabajadores web puede configurar una cola que procesará las tareas cuando se restablezca una conexión. Esto podría implementarse como una aplicación Chrome o similar, este tipo de aplicaciones están diseñadas para " desconecte primero "acceso, como se indica en su capítulo" Desarrollar en la nube ". El punto principal es que la capa de presentación no necesita estar vinculada a la capa de red. Este capítulo ("Sin conexión primero") tiene algunos puntos muy buenos sobre la seguridad.

Las preocupaciones de seguridad en este caso están relacionadas con el cifrado. También consideraría el uso de tokens temporales para el cifrado, por lo que incluso si se recupera una tarea desde el extremo frontal antes de enviarla y eliminarla, la sal utilizada para el hash sería diferente de otra tarea

    
respondido por el Purefan 02.11.2015 - 13:11
fuente

Lea otras preguntas en las etiquetas