¿Alguien tiene experiencia en asegurar / fortalecer el servidor MongoDB? Las listas de verificación o guías serían bienvenidas.
Las bases de datos NoSQL son relativamente nuevas (aunque podría decirse que son un concepto antiguo), no he visto ninguna guía específica de fortalecimiento de MongoDB y los lugares habituales que veo ( CISSecurity , las publicaciones de los proveedores, Sans, etc., se quedan cortas). Sugiere que sería un buen proyecto para una organización, uni student, infosec community para escribir uno y mantenerlo.
Hay algo de información básica en Mongodb.org. Deben seguirse todos los pasos aquí, incluida la habilitación de la seguridad. El propio sitio indica que MongoDB solo tiene un nivel de seguridad muy básico. enlace
MongoDB y otras bases de datos NoSQL también tienen muchas menos características (especialmente de seguridad) que las bases de datos SQL maduras, por lo que es poco probable que encuentres permisos específicos o cifrado de datos, usa MD5 para el hashing de contraseñas con el nombre de usuario como valor inicial. También hay limitaciones, como que la autenticación no esté disponible con fragmentación antes de la versión 1.9.1, por lo que realizar una evaluación de riesgos y construir un modelo de amenazas para resolver sus necesidades de seguridad y amenazas es una buena idea. En base a esta salida, las bases de datos MongoDB o NoSQL en general pueden no ser adecuadas para sus necesidades, o puede que necesite usarlas de una manera diferente que maximice sus ventajas y minimice sus debilidades (por ejemplo, para extractos de datos en lugar de su información más sensible) o detrás de una serie de capas de controles de red en lugar de estar directamente conectado a su aplicación web).
Dicho esto, creo firmemente que los principios de seguridad son agnósticos en tecnología. Si analiza incluso los ataques más recientes y una buena lista en datalossdb.org, es sorprendente la cantidad de personas que aún están relacionadas con las contraseñas predeterminadas y los parches faltantes. Con la defensa en profundidad, si sigue las siguientes prácticas, debería tener suficiente seguridad para proteger la mayoría de los activos (por ejemplo, individual, comercial), probablemente no sea militar.
Principios de fortalecimiento de la base de datos:
Algunas cosas muy iniciales para recordar son:
en realidad son aplicables en todos los servicios DataStorage
PS: experiencia mongodb muy limitada
Aquí hay una lista de verificación para la seguridad de MongoDB
Habilitar autenticación: incluso si ha implementado sus servidores Mongodb en una red confiable, es una buena práctica de seguridad habilitar la autenticación. Le proporciona "Defensa en profundidad" si su red está comprometida. Edite su archivo de configuración mongod para habilitar la autenticación
No exponga su base de datos de producción a Internet: restringir el acceso físico a su base de datos es un aspecto importante de la seguridad. Si no es necesario, no exponga su base de datos de producción a Internet. En caso de cualquier compromiso si un atacante no puede conectarse físicamente a su servidor MongoDB, sus datos son mucho más seguros. Si está en AWS, puede colocar su base de datos en una subred privada de VPC. Lea la publicación del blog Implementación de MongoDB en una VPC para obtener más información.
Use firewalls: use firewalls para restringir qué otras entidades pueden conectarse a su servidor mongodb. La mejor práctica es permitir que solo los servidores de aplicaciones accedan a la base de datos. Si está alojado en AWS, use "Grupos de seguridad" para restringir el acceso. Si está alojado en un proveedor que no admite construcciones de firewall, puede configurarlo usted mismo fácilmente usando "iptables". Consulte la documentación de mongodb para configurar iptables para su escenario.
Use los archivos de clave para configurar el conjunto de réplicas: especifique un archivo de clave compartido para habilitar la comunicación entre sus instancias de mongodb en un conjunto de réplicas. Para habilitar esto, agregue el parámetro del archivo de claves al archivo de configuración como se muestra a continuación. El contenido del archivo debe ser el mismo en todas las máquinas.
Deshabilitar la interfaz de estado HTTP Mongodb de forma predeterminada proporciona una interfaz http que se ejecuta de forma predeterminada en el puerto 28017 que proporciona la página de estado "inicial". Esta interfaz no se recomienda para uso de producción y se deshabilita mejor. Use la configuración de configuración "nohttpinterface" para deshabilitar la interfaz http.
Deshabilitar la interfaz REST La interfaz REST monogdb no se recomienda para la producción. No admite ninguna autenticación. Por defecto viene apagado. Si lo ha activado utilizando la opción de configuración "resto", debe desactivarlo para los sistemas de producción.
Configure Bind_ip Si su sistema tiene varias interfaces de red, puede usar la opción “bind_ip” para restringir su servidor mongodb para escuchar solo las interfaces que sean relevantes. Por defecto, mongodb se unirá a todas las interfaces
Habilitar SSL: si no usa SSL, sus datos viajan entre su cliente Mongo y el servidor Mongo sin cifrar y son susceptibles de espionaje, manipulación y ataques de "personas en el medio". Esto es especialmente importante si se conecta a su servidor Mongodb a través de redes no seguras como Internet.
Autorización basada en roles: MongoDB admite la autenticación basada en roles para brindarle un control detallado sobre las acciones que puede realizar cada usuario. Use construcciones basadas en roles para restringir el acceso en lugar de hacer que todos los usuarios sean administradores. Consulte la documentación de roles para obtener más detalles.
Enterprise mongodb & Kerberos Enterprise mongodb se integra con Kerberos para la autenticación. Consulte la documentación de mongodb para más detalles. Los sistemas de nombre de usuario / contraseña son intrínsecamente inseguros; utilice la autenticación basada en bordillos si es posible.
Descargo de responsabilidad: soy el fundador de scalegrid.io
Además, le recomendaría que también cifrara sus datos de mongodb en reposo, como lo han indicado otros comentarios. Puede usar LUKS (configuración de clave unificada de Linux) para configurar el cifrado de nivel de volumen.