GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo tomar el control de su seguridad MongoDB

Los piratas informáticos son cada vez más sofisticados y saben cómo aprovechar las vulnerabilidades. Si tiene datos confidenciales en su base de datos MongoDB, es fundamental que se tome la seguridad en serio. ¿Pero cómo? ¡No te preocupes! ¡Este tutorial lo tiene cubierto!

En este tutorial, aprenderá a proteger sus bases de datos MongoDB y protegerse de los piratas informáticos mediante la configuración de medidas de seguridad.

¡Siga leyendo y comience a tomar el control de su seguridad MongoDB!

Requisitos

  • Este tutorial será una demostración práctica. Para seguir, asegúrese de tener lo siguiente:
  • MongoDB instalado en su máquina Linux.
  • Un usuario no root con sudo privilegios.

Creación de un usuario administrativo dedicado

MongoDB no tiene ningún sistema de autenticación incorporado. De manera predeterminada, cualquier persona con acceso a la base de datos tiene privilegios administrativos completos, ¡demasiado peligroso! ¿Cómo proteger su base de datos? Creará un usuario con privilegios administrativos y bloqueará las bases de datos para ese usuario administrativo.

Esta configuración le permite proporcionar un único punto de acceso de usuario con privilegios administrativos mientras 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 mongo comando a continuación sin ningún argumento. Este comando le permite conectarse a su shell MongoDB como el usuario administrador predeterminado.

Este usuario administrador es poderoso ya que tiene pleno acceso de lectura/escritura a todas las bases de datos en el servidor, y es mejor evitar usarlo para el trabajo diario.

mongo

Recibirá una advertencia que dice El control de acceso no está habilitado …., Como se muestra abajo.

Esta advertencia indica que cualquiera que pueda acceder al servidor MongoDB puede realizar las acciones que quiera con las bases de datos. Estas acciones incluyen, entre otras, la eliminación, eliminación y actualización de bases de datos.

Esta advertencia aparece porque aún no ha habilitado el control de acceso. No te preocupes por eso, por ahora. Aprenderá cómo habilitar el control de acceso en la siguiente sección.

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

show dbs

3. Ejecute el use admin Comando a continuación para cambiar a la base de datos de administración, ya que su enfoque es 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 integrada, nombres de usuario y contraseñas para los usuarios y sus funciones. No puede eliminar o cambiar el nombre de la base de datos de administración porque es esencial para la funcionalidad de la base de datos.

use admin

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 diferentes credenciales como prefiera.

Este nuevo usuario tiene lectura/escritura (readWriteAnyDatabase ) acceso a todas las bases de datos y acceso de administrador a todas las colecciones. Pero este usuario no tiene privilegios para descartar/eliminar la base de datos y no puede descartar o cambiar los privilegios de otros usuarios.

Después de ejecutar el comando y obtiene un error, vuelva a verificar su código e intente nuevamente.

# The db.createUser() method creates a new user on the current database, with the privileges specified by roles.
db.createUser(
{
# Specifying the username AdminATA, but you can enter whatever username you like
user: "AdminATA",
# The passwordPrompt() method is a universal helper function 
# that tells the MongoDB shell to prompt you for a password for the AdminATA user.
pwd: passwordPrompt(),
# Specifying  the roles you want your AdminATA user to have.
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)

5. Proporcione una contraseña segura cuando se le solicite, como se muestra a continuación, y presione Entrar.

A continuación, puede ver un usuario agregado con éxito mensaje. Este resultado confirma que creó correctamente un usuario con privilegios administrativos y lo restringió a los privilegios mínimos requeridos.

En este punto, ya tiene un usuario administrativo llamado AdminATA que puede hacer todo lo que necesita en la base de datos sin dar acceso a todos.

6. Finalmente, ejecute el comando exit para salir del shell mongo.

exit

Agregar seguridad al habilitar la autenticación

Ahora que tiene un usuario administrativo, agregará otra capa de seguridad al habilitar la autenticación. Al hacerlo, otorga acceso a la base de datos solo a los usuarios con las credenciales correctas.

La autenticación se refiere al proceso de validación de una conexión, normalmente proporcionando un nombre de usuario y una contraseña o utilizando un token de autenticación. La autenticación garantiza que usted es quien dice ser y no un impostor que intenta acceder a los recursos.

1. Habilite la autenticación editando el archivo de configuración de MongoDB con lo siguiente y guarde los cambios:

  • Abra /etc/mongod.conf archivo en su editor de texto favorito. El /etc/mongod.conf El archivo contiene la configuración de su clúster MongoDB.
  • Busque y descomente el #security directiva eliminando el # símbolo delante de la directiva, como se muestra a continuación. Esta directiva le dice a MongoDB que busque la configuración de seguridad en el archivo de configuración.
  • Agregue una nueva línea debajo de la seguridad directiva que dice autorización:habilitado . Tenga en cuenta que la autorización:habilitada la línea está sangrada (tiene dos espacios al principio), como se muestra a continuación.

2. A continuación, ejecute el siguiente systemctl Comando para reiniciar el servidor MongoDB para que los cambios surtan efecto.

sudo systemctl restart mongod

3. Finalmente, ejecute el siguiente comando para ver el estado de su servicio MongoDB.

sudo systemctl status mongod

A continuación, puede ver una línea que dice Activo:activo (en ejecución) en texto verde, lo que indica que su servidor MongoDB se está ejecutando y está listo para aceptar conexiones.

Probar si la autenticación funciona

Acaba de habilitar la autenticación, pero ¿cómo sabe que funciona? Iniciará sesión en el usuario administrativo para probar y asegurarse de que su autenticación funcione al ver las bases de datos.

1. Ejecute los siguientes comandos para acceder al mongo shell como lo hizo en la sección "Creación de un usuario administrativo dedicado" (paso uno).

mongo

Como puede ver a continuación, ya no recibe el El control de acceso no está habilitado… advertencia sobre la habilitación de la autenticación. En su lugar, recibirá un mensaje que le indicará la versión de su servidor MongoDB y su shell MongoDB.

2. A continuación, vuelva a ejecutar el show dbs Comando para verificar si aún puede acceder a la base de datos.

show dbs

El comando debería mostrarle todas las bases de datos, incluso la base de datos de administración. Pero como ves a continuación, no aparece nada. ¿Por qué? Ver la lista de bases de datos es un privilegio reservado solo para usuarios administrativos.

No ha autenticado su mongo shell para usar la función de administrador, por lo que no está 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 contiene las credenciales correctas.

La autenticación de las cadenas de conexión es una parte fundamental de la seguridad de MongoDB y debe implementar la autenticación en todas las capas de la aplicación. Todas las conexiones a MongoDB deben usar una cadena de autenticación que consta de credenciales. Estas credenciales incluyen el nombre de usuario y la contraseña correctos.

3. Ejecute el exit Comando para salir del shell de MongoDB.

exit

4. Ahora, ejecute el siguiente comando para iniciar sesión en el shell de MongoDB con el nombre de usuario administrativo recién creado (-u ) y contraseña (-p ). Reemplazar AdminATA con el nombre de usuario que creó en la sección "Creación de un usuario administrativo dedicado" (paso cuatro).

El --authenticationDatabase El parámetro le dice al shell de MongoDB que se autentique contra el admin base de datos.

mongo -u AdminATA -p --authenticationDatabase admin

5. Proporcione su contraseña para su usuario administrativo cuando se le solicite.

6. Finalmente, vuelva a ejecutar el show dbs comando para probar y ver si puede ver todas las bases de datos.

show dbs

Esta vez, como puede ver a continuación, la lista de bases de datos aparece ya que es un usuario administrador.

Conclusión

En este tutorial, aprendió cómo conectarse para crear un usuario administrativo y habilitar la autenticación. Aprendió a tomar el control de su seguridad MongoDB y poner restricciones sobre quién puede acceder a las bases de datos en su servidor.

En este punto, puedes decidir si quién puede acceder a qué. Entonces, ¿qué sigue para ti? ¿Quizás aprender a usar un contenedor MongoDB de forma segura?


Linux
  1. Cómo agregar un usuario a su escritorio Linux

  2. ¿Cómo puedes proteger tu computadora?

  3. Cómo crear una copia de seguridad de su base de datos a través del panel de control de Plesk

  4. Cómo crear una nueva base de datos o un nuevo usuario de base de datos en el panel de control de Plesk

  5. Controlador de brillo:tome el control completo del brillo de su monitor

Cómo verificar los privilegios de usuario de MySQL en Linux

¿Cómo hacer una copia de seguridad de la base de datos MySQL desde el panel de control HELM?

¿Cómo agregar una base de datos MySQL en SolidCP?

Cómo cambiar la contraseña de usuario de la base de datos

Cómo realizar una copia de seguridad de la base de datos en Plesk

Cómo instalar WordPress en el panel de control de Vesta