Estoy buscando "Mejores prácticas de seguridad" para un servidor MongoDB, además de las mejores prácticas de seguridad del servidor "general". ¿Podría indicarme recursos útiles?MongoDB Security
Respuesta
Hay dos enfoques:
- Instalar mongodb sin
--auth
opción en el entorno de confianza. Por lo general, es la red local donde se instaló la aplicación, la base de datos. Y los servidores fuera de esta red no tienen acceso a mongodb y otros recursos. - instalar mongodb con
--auth
opción en un entorno en el que los puertos de mongodb no están bloqueados por el firewall y todos pueden acceder a él.
más detalles sobre la seguridad que usted puede encontrar here.
Las preocupaciones de seguridad son siempre específicas de una aplicación. Realmente no es posible responder completamente esta pregunta de manera general.
A menudo, las aplicaciones que se basan en bases de datos NOSQL serán susceptibles de OWASP A4 - Insecure Direct Object Reference. Debe tenerse en cuenta que el valor _ID
no es un cifrado criptográfico, este valor depende en gran medida de una marca de tiempo y por eso es bastante fácil para un atacante adivinar estos valores.
Otro problema común es CWE-602 - client side enforcement of server side security. Nunca se debe confiar en el cliente y si están interactuando con la base de datos directamente, entonces son los propietarios de la base de datos, , período.
Asumiendo que tiene un servicio web que interactúa con el MongoDB
el servidor sólo merecen los derechos, es necesario un nombre de usuario regular para permitir que los derechos de acceso pareja de servidores con un cliente mediante una sesión. De esa manera, debes evitar falsificar los derechos.
Filtra todas las solicitudes de los clientes. Eso es bastante fácil, el Mongo solicita ser un jSON, puede restringir el jSON a specific schema y sobrecargar el pedido con limitaciones/restricciones. Tenga en cuenta que el servidor sobrecargará la solicitud utilizando las variables de la sesión. Esto se puede hacer tanto para restricciones de acceso como para evitar que el cliente envíe solicitudes pesadas que sobrecargarán su sistema.
Filtra el resultado, "podar el árbol". Esta podría ser una última verificación si, por ejemplo, acepta devolver el nombre del usuario pero no su ID. Dicho esto, es más probable un paso más sobre el filtrado de la solicitud del cliente.
Utilice una conexión segura https. Esto asegurará que su cliente esté hablando con el servidor correcto pero también con su servidor para seguir hablando con el mismo cliente (no hay secuestro en teoría).
Evite juntar información, intente utilizar los modelos tanto como sea posible para obtener claridad y evitar que una información delicada se almacene en el lugar equivocado.
Lo que se necesita básicamente hay que hacer es
Habilitar autenticación
abierto mongodb cáscara
use admin
db.addUser("admin","adminpassword")
(IMPORTANTE: necesitará un usuario administrador antes de habilitar la autenticación, o de lo contrario perderás acceso a los datos).
Ahora editar el archivo de configuración mongodb sudo vi /etc/mongodb.conf
y elimine auth=true
. Guardarlo y reiniciar MongoDB sudo service mongodb restart
Enlazar a MongoDB red de confianza o de la máquina
archivo de configuración Editar MongoDB y añadir bind_ip = 127.0.0.1
o una coma lista de IPs que serán capaces de conectarse a MongoDB separado. Luego reinicie.
Para más información se puede encontrar una guía para hacer esto en mi sitio web here
Esta respuesta es realmente bastante límite, en mi opinión; es auto-promocional, y realmente no incluye ninguna información de valor aquí, en este sitio. Finalmente, ha descuidado incluir la divulgación requerida de que es su sitio al que está enlazando. Estoy agregando esa revelación aquí; ** No olvides esa divulgación en el futuro **, por favor. –
Claro que haré esto la próxima vez. – Manu
- 1. Widget Security
- 2. cakePHP security
- 3. Cakephp Security
- 4. Grails security
- 5. JSON vs. Pickle security
- 6. Spring Security: setUserPrincipal manualmente
- 7. Java Security Testing
- 8. CruiseControl.net web dashboard security
- 9. Grails Spring Security Testing
- 10. Ajax Security (espero)
- 11. HTML5 localStorage security
- 12. Embedded Flash Security
- 13. Cufón font security
- 14. Web API Security
- 15. Assembly.CreateInstance and security
- 16. Spring Security Meta Annotation
- 17. iOS Keychain Security
- 18. CXF Client Security
- 19. burying authentication spring security
- 20. Jetty webserver security
- 21. ¿Alguien usa Rhino Security?
- 22. Java Security contra ESAPI
- 23. Spring security accessing principal
- 24. Client Server socket security
- 25. Spring Security Encrypt MD5
- 26. Android SharedPreference security
- 27. Spring Security filtro personalizado
- 28. Ruby y WS-Security
- 29. Java Security Framework
- 30. Security Testing a Website
Hay una excelente información en las respuestas a continuación. A menudo encuentro las preguntas cerradas como "no constructivas", que tienen información que no pude encontrar fácilmente sin la ayuda de aquellos que la agregaron aquí. Quiero decir "no se desanime cuando se cierren las preguntas que hace o responde". Creo que hay muchos cierres y cerradores demasiado entusiastas. Respondo muchas preguntas 'bash' y puedo decirte que nunca hay una * mejor * forma/respuesta, pero esas preguntas nunca se cierran. –