Saltar al contenido
TCPRiesgo alto si se expone

Puerto 27017 (MongoDB): para qué sirve y cómo protegerlo

El puerto 27017 TCP es el puerto por defecto de MongoDB. Durante años MongoDB se instalaba sin autenticación y escuchando en todas las interfaces, lo que provocó miles de bases de datos borradas y secuestradas a cambio de un rescate. Debe escuchar solo en local o en la red interna, siempre con autenticación.

Qué es el puerto 27017

Desde la versión 3.6, MongoDB escucha por defecto solo en localhost. El problema reaparece cuando se publica el puerto en Docker ("27017:27017") o se cambia bindIp a 0.0.0.0 para conectar con Compass desde casa.

En Docker Compose, lo habitual es no publicar el puerto en absoluto: el backend llega a la base de datos por la red interna de Docker usando el nombre del servicio (mongodb://mongodb:27017).

¿Es peligroso tener abierto el puerto 27017?

Riesgo alto: No debe estar abierto a Internet.

  • Bases de datos borradas y notas de rescate.
  • Filtración de datos.

Cómo proteger el puerto 27017

  • security.authorization: enabled.
  • bindIp: 127.0.0.1 o la IP interna.
  • En Docker, sin ports: la red interna basta.
  • Túnel SSH para usar Compass.

Comandos y configuración

Comprobar si el puerto 27017 está abierto

bash
sudo ss -tlnp | grep ':27017 '
nc -zv 203.0.113.10 27017
sudo nmap -p 27017 203.0.113.10

/etc/mongod.conf

yaml
net:
  port: 27017
  bindIp: 127.0.0.1
security:
  authorization: enabled

Compass a través de un túnel SSH

bash
ssh -N -L 27018:127.0.0.1:27017 ana@203.0.113.10
# en Compass: mongodb://usuario:clave@127.0.0.1:27018/?authSource=admin

También puedes comprobarlo desde fuera de tu red con nuestro escáner de puertos online.

Herramientas para comprobarlo

Preguntas frecuentes

¿Es peligroso exponer MongoDB?

Mucho. Los bots buscan el 27017 continuamente; una instancia sin autenticación se vacía y se secuestra en cuestión de horas.

Puertos relacionados

Ver la lista de puertos