Almacene de forma segura las credenciales de los servicios de aplicaciones web en Apache

5

Estamos ejecutando una aplicación web en python usando wsgi con apache2, y debemos someterla a una prueba de penetración. Los evaluadores explorarán la posibilidad de daños si los atacantes obtienen acceso a la shell como usuario de apache.

Actualmente, el daño potencial es enorme, ya que tenemos las credenciales para la base de datos, el servicio s3, etc., todo almacenado en un archivo de texto legible por el usuario apache. Este parece ser el consejo predeterminado al configurar este tipo de aplicaciones, pero ¿hay una forma más segura de hacerlo?

Estaba pensando en usar apache (como root) para pasar las variables de entorno con setenv a la aplicación wsgi, pero ¿es esto realmente más seguro? ¿Algún consejo para esto?

    
pregunta Will 13.06.2012 - 20:46
fuente

1 respuesta

3

Realmente depende de cuál sea tu modelo de amenaza.

Si eliminamos todo lo demás y solo pensamos en la aplicación, básicamente no hay nada más que puedas hacer para mejorar realmente la seguridad de la aplicación. Manténgase alejado de las soluciones esotéricas y concéntrese en lo que es más fácil de mantener y limpiar. Quiero hacer hincapié en la limpieza, ya que normalmente el desastre de seguridad surge de situaciones complicadas.

De todos modos: si el atacante obtiene una ejecución remota de código bajo el usuario de la aplicación, no puede restringir el acceso a la configuración de ninguna manera; la aplicación debe acceder a ella, al igual que el atacante. Si obtiene capacidades de lectura de archivos, entonces el almacenamiento en una base de datos lo protegerá de la divulgación, incluso si tiene que almacenar las credenciales de la base de datos en un archivo, es probable que el atacante no pueda aprovecharlas. Si recibe una inyección de SQL, el acceso a la base de datos (en el caso poco probable de que esto no se traduzca en un código exec remoto), es más seguro tenerlos en un archivo. Realmente, depende de cómo se diseñe tu aplicación.

Ejecutar Apache como root es realmente una mala idea (bueno, deshabilitar la eliminación de privilegios, quiero decir). En lugar de implementar soluciones únicas, enfóquese en cosas que se mantendrán en su lugar sin más trucos y obtenga los beneficios de Pentest. pasar cosas a través del stdin, por ejemplo, hará que sea muy difícil para los evaluadores recuperar las credenciales, pero a la larga es probable que termines con un script de bash haciendo el trabajo ... que es mucho peor que las otras soluciones .

    
respondido por el Paradoxengine 14.06.2012 - 00:10
fuente

Lea otras preguntas en las etiquetas