¿Cómo hacer un server MongoDB seguro?

Estoy deseando que mi website utilice MongoDB como su almacén de datos. He utilizado MongoDB en mi entorno de desarrollo sin preocupaciones, pero estoy preocupado por la security con un server público.

Mi server es un VPS que ejecuta Arch Linux. La aplicación web también se ejecutará en él, por lo que sólo tiene que aceptar las conexiones de localhost. Y ningún otro usuario (por ssh o de otro modo) tendrá acceso directo a mi server.

¿Qué debo hacer para proteger mi instancia de MongoDB?

Mongo sólo soporta una security muy básica:

  • configuration de la authentication. Crear un usuario con una contraseña segura (un nombre de usuario y una contraseña en el context de la database)
  • enlazar MongoDB a 127.0.0.0 (la interfaz de bucle invertido)
  • cambiar el puerto pnetworkingeterminado

Seguridad y authentication Documentación de MongoDB .

Esta es una buena list de verificación

  1. Habilitar authentication – Incluso si ha implementado sus serveres Mongodb en una networking de confianza, es una buena práctica de security habilitar la authentication. Le proporciona "Defensa en profundidad" si su networking está comprometida. Edite su file de configuration mongod para habilitar la authentication

  2. No exponga su db de producción a Internet – Restringir el acceso físico a su database es un aspecto importante de la security. Si no es necesario, no exponga su database de producción a Internet. En caso de cualquier compromiso si un atacante no puede conectarse físicamente a su server MongoDB, sus datos son mucho más seguros. Si está en AWS puede colocar sus db en una subnetworking privada VPC. Lea la publicación del blog Implementando MongoDB en un VPC para get más información.

  3. Utilizar cortafuegos – Utilice cortafuegos para restringir qué otras entidades pueden conectarse a su server mongodb. La mejor práctica es permitir que los serveres de aplicaciones tengan acceso a la database. Si está alojado en AWS, use 'Grupos de security' para restringir el acceso. Si está alojado en un proveedor que no admite construcciones de cortafuegos, puede configurarlo fácilmente usando 'iptables'. Consulte la documentation de mongodb para configurar iptables para su escenario.

  4. Utilice files key para configurar el set de réplicas: especifique un file de key compartida para habilitar la comunicación entre sus instancias mongodb en un set de réplicas. Para habilitarlo, agregue el parámetro keyfile al file de configuration como se muestra a continuación. El contenido del file debe ser el mismo en todas las máquinas.

  5. Desactivar la interfaz de estado HTTP Mongodb proporciona de forma pnetworkingeterminada una interfaz http que se ejecuta por defecto en el puerto 28017 que proporciona la página de estado "inicio". Esta interfaz no está recomendada para uso en producción y está mejor desactivada. Utilice el parámetro de configuration "nohttpinterface" para deshabilitar la interfaz http.

  6. Desactivar la interfaz REST La interfaz monogdb REST no se recomienda para la producción. No admite ninguna authentication. Está desactivado de forma pnetworkingeterminada. Si lo ha activado con la opción de configuration "rest" debe desactivarla para los sistemas de producción.

  7. Configurar Bind_ip Si su sistema tiene múltiples interfaces de networking, puede utilizar la opción "bind_ip" para restringir su server mongodb para escuchar sólo en las interfaces que son relevantes. Por defecto mongodb se enlazará a todas las interfaces

  8. Habilitar SSL – Si no usa SSL, sus datos viajan entre su cliente Mongo y el server Mongo sin cifrar y son susceptibles a escuchas indebidas, manipulación indebida y ataques de "hombre en el medio". Esto es especialmente importante si se está conectando a su server Mongodb a través de networkinges no seguras como Internet.

  9. Autorización basada en funciones: MongoDB admite la authentication basada en roles para brindarle un control detallado sobre las acciones que pueden realizar cada usuario. Utilice construcciones basadas en roles para restringir el acceso en lugar de hacer que todos los administradores de sus usuarios. Consulte la documentation de funciones para get más detalles.

  10. Enterprise mongodb & Kerberos Enterprise mongodb se integra con Kerberos para la authentication. Consulte la documentation mongodb para get más detalles. Los sistemas de nombre de usuario / contraseña son intrínsecamente inseguros: utilice la authentication basada en la restricción si es posible.

https://scalegrid.io/blog/10-tips-to-improve-your-mongodb-security/

Descargo de responsabilidad: Soy el fundador de scalegrid.io

misma consulta ha sido bien discutido aquí ~ https://security.stackexchange.com/questions/7610/how-to-secure-a-mongodb-instance/7655#7655

Pocas cosas muy iniciales para recordar son:

Remove IP Binding from all to just the IP (private or localhost), you expect to get Connection Request Change the default Port Bindings Give only requinetworking permissions (like no update/delete permissions to select query users) Setup ssh keys for requinetworking master-slave connection, removing involvement of passwords You can even setup an encrypted tunnel for connection between your application and mongodb 

en realidad son aplicables a todos los DataStorage Services

PS: muy limitada experiencia mongodb

Por security, es mejor prevenir cualquier acceso externo al nodo MongoDB. Podrías ejecutar la aplicación y MongoDB en diferentes nodos. El nodo de la aplicación es accesible desde el exterior, mientras que el nodo MongoDB sólo abre el puerto MongoDB al nodo de la aplicación.

También siga la list de comprobación oficial de MongoDB para proteger MongoDB.

FireCamp lo automatiza para usted en Cloud, como AWS. FireCamp hace cumplir la security. 1) AppAccessSecurityGroup es el único que tiene acceso a MongoDB. Por favor, cree su nodo de aplicación en AppAccessSecurityGroup y el VPC en el que se ejecuta el nodo MongoDB. 2) Se crea un nodo Bastion y es el único que podría SSH a los nodos MongoDB. 3) MongoDB authentication de usuario y control de acceso entre los miembros de un ReplicaSet están habilitados.