🛡️Configurar servidor MongoDB en forma segura

Supervisor
Supervisor
  • Actualización

👇A continuación te mostraremos como configurar tu servidor con MongoDB en forma segura, cómo crear bases de datos, usuarios con permisos específicos y conectarte en forma remota.

Habilitar el puerto 27017 en el firewall para permitir el acceso a MongoDB

Para mayor seguridad, el puerto 27017 utilizado por MongoDB se encuentra cerrado por defecto y debes crear una regla de Firewall que lo abra.

Si desconoces cuales son las IPs desde las cuales, tu o tu aplicación, se conectarán al servidor de MongoDB, utiliza 0.0.0.0/0. Así permitirás que cualquier IP pueda conectarse a MongoDB. Sin embargo, te recomendamos crear reglas con las IPs específicas para brindarle mayor seguridad a tus bases de datos.

Verificar la versión de MongoDB

Accede a través de la consola SSH a tu servidor y verifica la versión de MongoDB con el siguiente comando:

mongod --version

Conocer la versión te servirá más adelante si decides utilizar un cliente con interfaz gráfica para administrar tus bases de datos y usuarios, ya que no todas tienen soporte para las últimas versiones de MongoDB.

Crear un usuario administrador en MongoDB

Ahora, a través de la consola SSH y utilizando los siguientes comandos, creamos un usuario con los permisos necesarios para administrar cualquier base de datos del servidor MongoDB.
Para ello, ejecutamos una instancia de MongoShell y lo hacemos en el puerto en el cual está configurado con el siguiente comando:
mongo --port 27017

use admin

db.createUser(
{
user: "myServerAdmin",
pwd: "mipassword",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
);

Cambia los datos “user” y “pwd” del código de arriba, con el usuario y contraseña que decidas utilizar.

290.png

Restringir el acceso No Autenticado a MongoDB

Por defecto, es posible acceder al servidor de MongoDB sin necesidad de autenticarse y esto genera problemas de seguridad. Ahora que ya disponemos de un usuario con los privilegios suficientes, cambiaremos la configuración para restringir el acceso mediante autenticación.
Para ello, editamos el archivo mongod.conf, quitando el comentario de la línea donde se encuentra auth = true
mcedit /etc/mongod.conf
291.png
Una vez guardado el cambio, reiniciamos el servicio de MongoDB para que los mismos hagan efecto.
service mongod restart
A partir de ahora podremos acceder a la consola MongoShell autenticándonos como el usuario administrador que creamos en el paso 3. Ingresa el usuario y contraseña que elegiste en lugar de “myServerAdmin” y “mipassword”.
mongo --port 20017 -u myServerAdmin -p mipassword --authenticationDatabase admin

 

Crear una Base de Datos y un usuario para la misma en MongoDB

Ahora, crearemos la base de datos que utilizaremos para nuestra aplicación. A diferencia de servidores como MySQL donde hay un comando explícito para crearlas, en MongoDB las base de datos se crean insertando el primer contenido (una colección) o creando un usuario para la misma.
En nuestro caso crearemos un base de datos llamada test agregándole un usuario llamado myDbAdmin.
use test

db.createUser(
{
user: "myDbAdmin",
pwd: "mipassword",
roles: [ { role: "readWrite", db: "test" } ]
}
);

292.png

Una vez listo, para acceder a la base de datos recién creada utilizamos el siguiente comando:

mongo --port 27017 -u myDbAdmin -p mipassword --authenticationDatabase test

Insertar los primeros datos (colección)

Ahora veremos, a través de un ejemplo, como insertar una colección de datos en la base que acabamos de crear.

use test

db.personal.save({nombre:'Ariel Perez',edad:23})
db.personal.save({nombre:'Diego Angel',edad:32})
db.personal.find()

Al hacerlo, veremos en pantalla los siguientes resultados:

{ "_id" : ObjectId("55d87309d6b60ea1b22fb2ad"), "nombre" : "Ariel Perez", "edad" : 23 }
{ "_id" : ObjectId("55d87311d6b60ea1b22fb2ae"), "nombre" : "Diego Angel", "edad" : 32 }

293.png

Aprovechar una interfaz gráfica

Si bien la consola MongoShell nos permite hacer prácticamente de todo con nuestro MongoDB, utilizar interfaces gráficas en la administración de bases de datos simplifica mucho la tarea.
En el mercado existen muchos clientes de administración para MongoDB y la gran mayoría son pagos. Algunos de los gratuitos que podemos sugerirte son Mongo Management Studio o MongoChef.
mongodb://usuario:password@host:puerto/nombre_db
Y en el ejemplo que utilizamos quedaría:
mongodb://myDbAdmin:mipassword@200.58.96.113:27017/test

¿Fue útil este artículo?

Usuarios a los que les pareció útil: 0 de 0

¿Tiene más preguntas? Enviar una solicitud