Los hackers se están volviendo más sofisticados y saben cómo aprovechar las vulnerabilidades. Si tienes datos sensibles en tu base de datos MongoDB, es crucial tomar en serio la seguridad. ¿Pero cómo? ¡No te preocupes! ¡Este tutorial te tiene cubierto!
En este tutorial, aprenderás a proteger tus bases de datos MongoDB y a alejar a los hackers configurando medidas de seguridad.
¡Sigue leyendo y comienza a tomar el control de la seguridad de tu MongoDB!
Prerrequisitos
- Este tutorial será una demostración práctica. Para seguirlo, asegúrate de tener lo siguiente:
- MongoDB instalado en tu máquina Linux.
- A non-root user with
sudo
privileges.
Creación de un usuario administrativo dedicado
MongoDB no tiene ningún sistema de autenticación integrado. Por defecto, cualquiera con acceso a la base de datos tiene privilegios administrativos completos, ¡demasiado peligroso! ¿Cómo asegurar tu base de datos? Crearás un usuario con privilegios administrativos y cerrarás las bases de datos a ese usuario administrativo.
Esta configuración te permite proporcionar un único punto de acceso de usuario con privilegios administrativos, al tiempo que restringe lo que cada usuario puede hacer dentro de la base de datos. Por ejemplo, los desarrolladores deben tener acceso de solo lectura a las bases de datos, mientras que los administradores pueden crear y editar datos.
1. Abre tu terminal y ejecuta el siguiente comando mongo
sin argumentos. Este comando te permite conectarte a tu shell de MongoDB como el usuario administrador predeterminado.
Este usuario administrador es poderoso ya que tiene acceso completo de lectura/escritura a todas las bases de datos del servidor, y es mejor evitar utilizar este usuario para el trabajo diario.
Recibirás una advertencia que dice No se ha habilitado el control de acceso…, como se muestra a continuación.
Esta advertencia indica que cualquier persona que pueda acceder al servidor de MongoDB puede realizar las acciones que desee con las bases de datos. Estas acciones incluyen, pero no se limitan a, eliminar, eliminar, actualizar bases de datos.
Esta advertencia aparece porque aún no has habilitado el control de acceso. No te preocupes por ahora. Aprenderás cómo habilitar el control de acceso en la siguiente sección.

2. A continuación, ejecuta el comando show dbs
para mostrar todas las bases de datos en el servidor, incluidas las bases de datos admin que un usuario normal no debería ver.

3. Ejecute el comando use admin
a continuación para cambiar a la base de datos de administración ya que su enfoque está en crear un usuario administrativo dedicado. Este comando cambia el contexto de su base de datos actual para usar la base de datos de administración, como se muestra a continuación.
MongoDB utiliza la base de datos de administración para almacenar reglas de control de acceso y proporcionar autenticación incorporada, nombres de usuario y contraseña para los usuarios y sus roles. No puede eliminar ni cambiar el nombre de la base de datos de administración porque es esencial para la funcionalidad de la base de datos.

4. Ahora, copie y pegue el código a continuación en el shell de mongo y presione Enter. Este código crea un usuario llamado AdminATA
, con una contraseña de LDWbPf6Fy9Ezs3Mv
, pero puede usar credenciales diferentes si lo prefiere.
Este nuevo usuario tiene acceso de lectura/escritura (readWriteAnyDatabase
) a todas las bases de datos y acceso de administrador a todas las colecciones. Pero este usuario no tiene privilegios para eliminar bases de datos y no puede eliminar ni cambiar privilegios de otros usuarios.
Después de ejecutar el comando y si recibe un error, vuelva a verificar su código e inténtelo nuevamente.
5. Proporcione una contraseña segura cuando se le solicite, como se muestra a continuación, y presione Enter.

A continuación, puede ver un mensaje de Usuario añadido correctamente. Esta salida confirma que ha creado correctamente un usuario con privilegios administrativos y los ha restringido a los privilegios mínimos requeridos.
En este punto, ya tienes un usuario administrativo llamado AdminATA que puede hacer todo lo que necesitas en la base de datos sin dar acceso a todos.

6. Por último, ejecute el comando exit para salir del shell de mongo.

Agregando seguridad mediante la activación de la autenticación
Ahora que tienes un usuario administrativo, agregarás otra capa de seguridad activando la autenticación. Al hacerlo, se otorga acceso a la base de datos solo a los usuarios con las credenciales correctas.
La autenticación se refiere al proceso de validar una conexión, generalmente proporcionando un nombre de usuario y contraseña o utilizando un token de autenticación. La autenticación asegura que eres quien dices ser y no un impostor intentando acceder a recursos.
1. Habilita la autenticación editando el archivo de configuración de MongoDB con lo siguiente y guarda los cambios:
- Abre el archivo /etc/mongod.conf en tu editor de texto favorito. El archivo /etc/mongod.conf contiene la configuración de tu clúster MongoDB.
- Busca y descomenta la directiva #security eliminando el símbolo # delante de la directiva, como se muestra a continuación. Esta directiva le indica a MongoDB que busque la configuración de seguridad en el archivo de configuración.
- Añade una nueva línea debajo de la directiva security que diga authorization: enabled. Ten en cuenta que la línea authorization: enabled está sangrada (tiene dos espacios al principio), como se muestra a continuación.

2. A continuación, ejecuta el siguiente comando systemctl
para reiniciar el servidor MongoDB y que los cambios surtan efecto.
3. Por último, ejecuta el siguiente comando para ver el estado de tu servicio MongoDB.
A continuación, puedes ver una línea que dice Activo: activo (en ejecución) en texto verde, lo que indica que tu servidor MongoDB está en funcionamiento y listo para aceptar conexiones.

Probando si la autenticación funciona
Acabas de habilitar la autenticación, ¿pero cómo sabes si funciona? Iniciarás sesión con el usuario administrativo para probar y asegurarte de que la autenticación funcione viendo las bases de datos.
1. Ejecuta los siguientes comandos para acceder a la consola mongo
como lo hiciste en la sección “Creación de un Usuario Administrativo Dedicado” (paso uno).
Como puedes ver a continuación, ya no recibirás la advertencia El control de acceso no está habilitado… sobre habilitar la autenticación. En su lugar, recibirás un mensaje que te indica la versión de tu servidor MongoDB y la consola de MongoDB.

2. A continuación, vuelve a ejecutar el comando show dbs
para comprobar si aún puedes acceder a la base de datos.
El comando debería mostrarte todas las bases de datos, incluso la base de datos de administración. Pero como ves a continuación, no se muestra nada. ¿Por qué? Ver la lista de bases de datos es un privilegio reservado solo para usuarios administrativos.
No has autenticado tu consola mongo para usar el rol de Administrador, por lo que no estás autorizado para ver la lista de bases de datos.

Con la autenticación habilitada, la conexión fallará si alguien intenta acceder a la base de datos utilizando una cadena de conexión que no contenga las credenciales correctas.
La autenticación de las cadenas de conexión es una parte fundamental de la seguridad de MongoDB, y debes implementar la autenticación en todas las capas de la aplicación. Todas las conexiones a MongoDB deben utilizar una cadena de autenticación que consta de credenciales. Estas credenciales incluyen el nombre de usuario y la contraseña correctos.
3. Ejecuta el comando exit
para salir del shell de MongoDB.
4. Ahora, ejecuta el siguiente comando para iniciar sesión en el shell de MongoDB con el nombre de usuario (-u
) y la contraseña (-p
) de tu usuario administrativo recién creado. Reemplaza AdminATA
con el nombre de usuario que creaste en la sección “Creación de un Usuario Administrativo Dedicado” (paso cuatro).
El parámetro --authenticationDatabase
indica al shell de MongoDB que se autentique contra la base de datos admin
.
5. Proporciona tu contraseña cuando se te solicite para el usuario administrativo.


6. Finalmente, vuelve a ejecutar el comando show dbs
para ver si puedes ver todas las bases de datos.
Esta vez, como se muestra a continuación, aparece la lista de bases de datos, ya que eres un usuario administrador.

Conclusión
En este tutorial, aprendiste cómo conectar para crear un usuario administrativo y habilitar la autenticación. Has aprendido a tomar control de la seguridad de tu MongoDB y poner restricciones sobre quién puede acceder a las bases de datos en tu servidor.
En este punto, decides quién puede acceder a qué. ¿Qué sigue para ti? Tal vez aprender cómo usar un contenedor MongoDB de manera segura?