Administrar e implementar contraseñas de aplicaciones web

4

¿Cuáles son algunas de las mejores prácticas para administrar e implementar contraseñas de aplicaciones web y claves privadas? P.ej. la contraseña para acceder a una base de datos o servicios externos como la API de Facebook. En general, me refiero a usar hardware dedicado o un proveedor de nube general y no un proveedor específico como Heroku o EC2.

¿Lo mejor que puede hacer sin un HSM es implementar las credenciales en un archivo de texto sin formato en un directorio protegido contra lectura al que solo pueda acceder el usuario de la aplicación web? ¿Debería tener un archivo con todas las contraseñas o un archivo por usuario o almacenar en variables de entorno? ¿Cómo se las arregla realmente para ponerlos en los servidores? ¿Puede usar una herramienta de administración de la configuración (por ejemplo, chef / puppet) para implementarlas y mantenerlas actualizadas? ¿Cómo se deben almacenar estas credenciales? ¿Deberían almacenarse en formato cifrado en el directorio de control de origen que contiene las configuraciones de administración de configuración? ¿Alguna recomendación sobre herramientas para usar que pueda ser útil? (por ejemplo, keyczar, servidor secreto, etc.) Si las contraseñas están cifradas, ¿cuál es una buena manera de compartir la clave de descifrado entre el equipo de DevOps? (¿LastPass, KeePass, etc.?)

Sé que esa es una larga lista de preguntas, pero estas son todas las cosas a las que no he encontrado buenas respuestas. Me interesa cualquier información, ya sea un estudio de caso de alguien que lo está haciendo bien, que se deben hacer concesiones entre diferentes alternativas, cosas que deben evitarse o buscarse claramente. Realmente no sé cuáles son las mejores prácticas y tengo herramientas útiles frente a lo que tenemos que decidir por nuestra propia situación y resolver por nuestra cuenta.

    
pregunta Ben McCann 19.11.2013 - 19:49
fuente

2 respuestas

1

Su pregunta es muy vaga y cubre varias áreas. Un ejemplo sería de gran ayuda.

Según el título de su pregunta, parece que está interesado en cómo manejar de forma segura las credenciales que requiere una aplicación. Si se trata de un entorno de Microsoft, puede cifrar secciones de web.config que se utiliza para almacenar información confidencial (credenciales de inicio de sesión de SQL, etc.). Esta publicación ofrece una buena explicación: por qué-usar-rsa-for-dpapi-web-farm-encriptación . En resumen, si tiene un solo servidor web DPAPI es la solución recomendada mientras que Las claves RSA son las preferidas para las granjas de servidores web.

Sin embargo, creo que también está interesado en una solución de administración de contraseña empresarial. El instructor de SANS Jason Fossen publicó una excelente entrada en su Blog de seguridad de Windows . Escribió un script que asignará una contraseña única a las cuentas locales y aprovecha el cifrado asimétrico para guardar la contraseña en una ubicación centralizada. En la entrada también menciona una serie de productos comerciales en el espacio de Administración de contraseñas de contraseñas o Enterprise.

HSM generalmente solo se usa para cuentas críticas como administradores de dominio / empresa o para certificados utilizados por infraestructura crítica. Para uso general o diario, estas soluciones de administración de contraseñas empresariales son excelentes.

Hace bastante tiempo, busqué en la solución Lieberman y me pareció muy interesante. Hay una auditoría completa para registrar al usuario que accede a las credenciales, a qué credenciales se accedió y, por supuesto, cuándo. También hay flexibilidad para configurar cuentas temporales (solo válidas por x), lo que es útil para contratistas, consultores, etc.

    
respondido por el user2320464 23.11.2013 - 22:53
fuente
0

Creo que sería útil volver a algunos principios básicos. Un buen punto de partida es diseñar cosas para que NUNCA haya una razón para que la aplicación o los administradores conozcan la contraseña de un usuario en texto sin formato. Solo debe tener la versión cifrada / cifrada de la contraseña. Si nunca conoce la contraseña, entonces nunca necesita o incluso tiene la opción de comunicarla con el usuario.

Lo siguiente que hay que hacer es una evaluación de riesgos y consecuencias. ¿Cuáles son los principales riesgos y cuáles serían las consecuencias si se identificaran esos riesgos? Esto le dará una idea del nivel de seguridad que necesita y qué opciones son aceptables.

Entonces, el problema se convierte en una cuestión de la gota de trabajo en cómo configurar / registrar nuevos usuarios de una manera segura que satisfaga su evaluación de riesgos. Hay una serie de opciones, muchas de las cuales dependen de la información que tenga. La mayoría de las soluciones se basan en proporcionar una contraseña única o un enlace único que puedan usar. Ambos tendrían un tiempo de espera, tras el cual ya no serían utilizables. Cuando utilizan la contraseña o el enlace, se verán obligados a establecer su contraseña 'real', etc.

El problema se convierte entonces en resolver la mejor manera de comunicar esta contraseña o enlace al usuario. Esto dependerá de una combinación de las dos opciones disponibles, es decir, correo electrónico privado, SMS, teléfono, etc., y los riesgos y consecuencias en caso de que la información caiga en las manos equivocadas.

La evaluación de riesgos y consecuencias es crítica. Si el nivel de seguridad y protección no coincide con el nivel de riesgo y las consecuencias, es probable que los usuarios no estén contentos con el servicio. O pensarán que no es lo suficientemente seguro y evitarán usarlo o les resultará muy difícil de usar y evitarán usarlo.

    
respondido por el Tim X 21.11.2013 - 23:31
fuente