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 20017 en el firewall

Para mayor seguridad, el puerto 20017 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
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 20017

use admin

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

Cambia los datos 鈥渦ser鈥 y 鈥減wd鈥 del c贸digo de arriba, con el usuario y contrase帽a que decidas utilizar.

  • Restringir el acceso No Autenticado
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
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 鈥渕yServerAdmin鈥 y 鈥渕ipassword鈥.
mongo --port 20017 -u myServerAdmin -p mipassword --authenticationDatabase admin
  • Crear una Base de Datos y un usuario para la misma
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" } ]
}
);

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

mongo --port 20017 -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 }

  • 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:20017/test

驴Fue 煤til este art铆culo?

Usuarios a los que les pareci贸 煤til: 0 de 0

驴Tiene m谩s preguntas? Enviar una solicitud