sql >> Base de Datos >  >> NoSQL >> MongoDB

Mejores prácticas para la seguridad de MongoDB

Cuando se trata de administrar sistemas de bases de datos, un aspecto crucial es la seguridad de la base de datos. La falla en establecer una buena base para la seguridad de cualquier sistema de base de datos puede resultar en una violación de datos por la cual un intruso externo tendrá acceso no autorizado a ellos. En consecuencia, eventos como este pueden provocar daños en la reputación de la marca, multas y sanciones por incumplimiento, propiedad intelectual comprometida o incluso el cierre de la empresa.

MongoDB, la base de datos NoSQL más popular, proporciona una gama de herramientas, controles y medidas formuladas para proporcionar una base para los tres pilares de la seguridad de la información:confidencialidad, integridad y disponibilidad. La seguridad de los datos suele verse comprometida en el nivel de confidencialidad debido a una mayor facilidad de uso y acceso.

Qué tipos de datos debe proteger

Al igual que otras bases de datos, MongoDB involucra dos tipos de datos:

  1. Datos en reposo:son datos almacenados en el disco del sistema de archivos.
  2. Datos en tránsito:se trata de datos que se mueven a través de una red, por ejemplo, entre la base de datos y una aplicación.

Para proteger sus datos dentro de cualquier base de datos, sus medidas de seguridad deben abordar:

  • Datos en los archivos de la base de datos.
  • Aplicaciones asociadas a la base de datos.
  • La infraestructura informática y de red utilizada para acceder a la base de datos.
  • El servidor de la base de datos física y el hardware subyacente.

Lista de verificación de seguridad de MongoDB

Antes de configurar su implementación de producción de MongoDB, debe tener en cuenta un estándar mínimo de seguridad para garantizar que su implementación sea segura. Consulte la siguiente lista de comprobación de seguridad de MongoDB para

  1. Especifique el mecanismo de autenticación habilitando el control de acceso . Antes de permitir el acceso a la base de datos, es imprescindible verificar la identidad del usuario. MongoDB admite dos mecanismos en este caso:el primero es el mecanismo de autenticación de respuesta de desafío salado (SCRAM), que es el mecanismo de autenticación predeterminado en MongoDB. Verifica las credenciales proporcionadas (nombre de usuario y contraseña) con la base de datos de autenticación, y la autenticación de certificado X.509 se utiliza tanto para la autenticación del cliente como para la autenticación interna de los miembros del conjunto de réplicas y los clústeres fragmentados.

  2. Establecer control de acceso basado en roles . Cada aplicación o persona que tenga acceso a la base de datos debe tener una identidad única creada por el administrador de usuarios. Defina roles con derechos de acceso exactos y asígnelos a los usuarios que necesitan realizar las operaciones.

  3. La comunicación entre mongod, mongos, aplicaciones y MongoDB debe cifrarse . El cifrado se logra a través de la configuración TLS/SSL.

  4. Protección de datos . Si usa el motor de almacenamiento WiredTiger para datos en reposo, puede cifrar los datos mediante el cifrado en reposo. Si usa un motor de almacenamiento diferente, cifre los datos usando el sistema de archivos, el cifrado físico o del dispositivo y agregue los permisos del sistema de archivos. Además, puede cifrar campos dentro de documentos con el cifrado de nivel de campo del lado del cliente antes de pasar datos desde el servidor.

  5. Red de operación segura . MongoDB debe ejecutarse en un entorno de red confiable de modo que solo los clientes confiables puedan tener acceso a la interfaz y los puertos de la red. Puede lograr esto deshabilitando el acceso raíz SSH directo y configurando la configuración con grupos de seguridad para el tráfico entrante y saliente a las instancias de MongoDB.

  6. Actividades del sistema de auditoría . Hacer un seguimiento de las actividades de acceso de los usuarios a la base de datos es muy importante. La auditoría permite a los administradores ejercer los controles adecuados y permitir un análisis forense adecuado. Algunas instalaciones de auditoría, como MongoDB Enterprise, proporcionan filtros para eventos específicos, como eventos de autenticación, para reducir los datos que deben analizarse.

  7. Habilitar opciones de configuración seguras al ejecutar MongoDB . Se recomienda limitar el uso de código JavaScript compatible con MongoDB, como mapReduce, $where y  $function. Puede deshabilitar completamente estas opciones usando la opción --noscripting. Valide los campos de entrada utilizando módulos como mongoose. Además, puede usar net.writeObjectCheck para asegurarse de que todos los documentos almacenados por la instancia de mongod sean BSON válidos.

  8. Ejecute MongoDB con un usuario dedicado . No vale la pena ejecutar MongoDB en un sistema operativo al que pueden acceder varios usuarios. Para estar seguro, MongoDB debe ser ejecutado por una cuenta de usuario de sistema dedicada que tenga permisos para acceder a los datos pero no permisos innecesarios que puedan comprometer la integridad de los datos.

Prácticas de seguridad deficientes de MongoDB que se deben evitar

Recientemente, ha habido un aumento en los incidentes de piratería de bases de datos, especialmente MongoDB. Esto no se debe a que MongoDB no cumpla con los estándares para abordar los problemas de seguridad, sino a que los desarrolladores no siguen las mejores prácticas de seguridad.

MongoDB es un DBMS de código abierto, lo que significa que algunos desarrolladores pueden conocer los entresijos más que otros. Esto no siempre significa que su base de datos esté en riesgo de intrusión externa, a menos que incurra en alguno de los siguientes errores:

  1. Uso de los puertos predeterminados . No hay nada de malo en usar los puertos predeterminados (27017 y 27018), pero a veces puede olvidar configurar los grupos de seguridad responsables de administrar el tráfico en su sistema. Los piratas informáticos siempre intentarán acceder a la base de datos con los puertos predeterminados antes de intentar otra cosa. Puede ejecutar MongoDB en un puerto diferente con la opción de puerto, es decir, $mongo –puerto 23456. Sin embargo, la forma recomendada es cambiar la configuración en el archivo /etc/mongod.conf editando la línea a continuación con su número de puerto preferido:

    net:
    	port:27017


    MongoDB, de forma predeterminada, se ejecuta sin autenticación, lo que a menudo ha sido un problema para las nuevas implementaciones que entran en producción. Si no se habilita la autenticación, cualquier persona puede acceder a la base de datos con facilidad. Cree siempre un usuario con permisos de acceso basados ​​en roles para interactuar con la base de datos MongoDB.

  2. Almacenamiento incorrecto de credenciales de usuario . Algunos desarrolladores codifican las credenciales de nombre de usuario y contraseña en el proyecto, y cuando las hacen públicas, cualquiera puede tener acceso a ellas, lo que hace que la base de datos sea vulnerable.

  3. Error al limitar el acceso a la base de datos a dispositivos de red conocidos . En este caso, siempre se debe limitar el acceso a la base de datos para conocer solo las aplicaciones y los balanceadores de carga a través de una lista blanca. Esto limita la disponibilidad de la base de datos a redes desconocidas que podrían representar una amenaza para la seguridad.

  4. Evitar el uso de SSL . La autenticación SSL es muy importante para garantizar que solo las conexiones confiables lleguen a la base de datos.

  5. Error al usar LDAP para la rotación de contraseñas . LDAP vincula a los usuarios con un directorio corporativo de modo que cuando su rol cambia o dejan la empresa, los cambios se aplican automáticamente al grupo de la base de datos. Esto garantiza que su acceso a los datos se limitará al rol al que se les ha reasignado o se limitará por completo si abandonan la empresa.

Infraestructura de red reforzada

Muchas veces, las amenazas a la seguridad comienzan en el nivel de exposición de la red porque esta es la parte de más fácil acceso para la mayoría de los piratas informáticos. Además de garantizar que solo los hosts de confianza tengan acceso a MongoDB, puede mejorar la seguridad fortaleciendo la red. El endurecimiento de la red implica dos procedimientos con respecto a MongoDB:

  1. Cortafuegos . Los cortafuegos se utilizan para limitar el tráfico entrante de hosts que no son de confianza que, de otro modo, expondrían la base de datos de MongoDB a intrusiones externas. Para los sistemas operativos Windows, la interfaz de línea de comandos netsh brinda acceso al Firewall de Windows. En los sistemas Linux, la interfaz de iptables brinda acceso al firewall de netfilter subyacente. El firewall filtrará los hosts que no sean de confianza y garantizará que solo el tráfico de fuentes confiables pueda llegar a mongod y mongos, además de crear una conexión con las salidas confiables.

  2. Redes privadas virtuales (VPN) . Las VPN permiten que dos redes se conecten a través de una red confiable cifrada y de acceso limitado. Lo hacen proporcionando validación de certificados y una selección de protocolos de encriptación que pueden requerir un nivel riguroso de autenticación y la identificación de todos los clientes. Las VPN proporcionan un túnel seguro; por lo tanto, las conexiones creadas en la instancia de MongoDB mediante VPN pueden evitar la manipulación y los ataques de intermediarios.

Conclusión

Al igual que con todas las bases de datos de código abierto, la seguridad debe ser una prioridad principal para su infraestructura MongoDB. Implementar su base de datos MongoDB con la configuración predeterminada es un camino claro hacia un desastre de seguridad. Por lo tanto, es crucial comprender completamente cómo funciona la seguridad dentro de MongoDB y seguir todas las mejores prácticas para garantizar la máxima seguridad. Lo que es más importante, la auditoría de las actividades de los usuarios, como la autenticación, proporciona una ventana para identificar lagunas y planificar el futuro antes de que ocurra un desastre.

Herramientas como ClusterControl lo ayudan a eliminar las conjeturas sobre la seguridad de la base de datos y garantizar que sus implementaciones de MongoDB siempre sigan el modelo de seguridad respectivo. Con ClusterControl, puede configurar fácilmente sus bases de datos, controles de acceso y cifrado para datos en reposo y en tránsito. Si aún no lo ha hecho, descargue ClusterControl hoy y comience su prueba gratuita de 30 días para ver cómo ClusterControl puede ayudarlo a administrar y mejorar la seguridad de su base de datos MongoDB.