Instalación MongoDB

¡Hola!

Nos encontramos hoy con otra nueva entrada y en este caso vamos a instalar MongoDB (Base de datos NoSQL).

Se ha puesto bastante de moda y hay clientes que lo solicitan así que nos ponemos manos a la obra para:

  • Instalación y configuración inicial.
  • Usuario y contraseña para su administración.
  • Mejoras de seguridad.

Instalación MongoDB

La instalación la haremos en Ubuntu 18.04 y a través de los repositorios oficiales de MongoDB para tener las últimas novedades.

Agregando los repositorios

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

echo "deb http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

Instalando MongoDB

apt-get update
apt-get install -y mongodb-org
systemctl enable mongod
systemctl start mongod

Con esto hemos conseguido instalar MongoDB, habilitado en el arranque y arrancado en el sistema en el caso de que no esté levantado.

Ahora si queremos comprobar si está arrancado:

netstat -putan |grep mongod
ó
netstat -putan |grep 27017

Resultado:

127.0.0.1:27017         0.0.0.0:*               LISTEN      23869/mongod

Escuchando a servidores de fuera

Por defecto MongoDB sólo escucha en localhost o 127.0.0.1 y generalmente cuando un servidor se dedica a ello solamente tiene que escuchar al resto de sus vecinos o públicamente.

Para poder escuchar al público:

Editamos /etc/mongod.conf

Buscamos la línea de bindIp y agregamos nuestras IPS del servidor:

bindIp: 127.0.0.1,172.168.1.100,80.80.80.80

Como podéis ver lo que hemos hecho es habilitar las diferentes interfaces por las cuales pueden venir los distintos clientes de MongoDB.

Así que habilitad sólo la que vosotros vayáis usar por temas de seguridad, por regla general no se habilita al público pero sí se habilita en local.

Habilitar Usuario y Contraseña

MongoDB por defecto no viene con validación de usuario y contraseña. Eso no quiere decir que no sea seguro ya que se gestiona a nivel de usuarios del sistema local.

Para ello vamos a implantar usuario y contraseña para poder acceder al mismo.

mongo
use admin
db.createUser({user:"admin", pwd:"EhOCYR-BkSfsDpza", roles:[{role:"root", db:"admin"}]})
exit

Ahora vamos habilitarlo en el arranque.

vim /lib/systemd/system/mongod.service

#Sobre la línea 9, añadimos el parámetro "--auth"
ExecStart=/usr/bin/mongod --auth --config /etc/mongod.conf

#Recargamos el daemon del servicio
systemctl daemon-reload

#Reiniciamos el servicio
service mongod restart

Ahora nos toca probar lo que hemos hecho

mongo -u admin -p

Automáticamente nos solicitará la contraseña y no nos dejará entrar.

Mejoras de seguridad

Siempre hay que pensar con una mano puesta en la seguridad y para ello tenemos que seguir los siguientes consejos:

  1. Cambiar el puerto por defecto.
    • Esto lo podemos cambiar en el fichero /etc/mongod.conf.
    • Mientras más difícil lo pongas mejor.
  2. Permitir el acceso por Firewall
    • Solo permitimos aquellas máquinas que deben tener acceso.
    • Esto a veces puede ser un poco engorroso pero lo agradecerás a la larga.
  3. Escuchas de IP
    • Solo habilitar las interfaces necesarias.
  4. Cifrar con SSL la información.
    • Esta parte no la he probado, en cuanto haya hecho pruebas os crearé una mini entrada con ello.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *