Recientemente estuve jugando con MongoDB en uno de mis servidores Dev sin hacer nada demasiado serio y, a pesar de saberlo mejor, permití conexiones remotas desde cualquier IP. A los pocos días, la base de datos fue "hackeada" con un intento de rescate. Me encogí de hombros y decidí seguir adelante y vincular la IP a mi IP pública personal y al servidor local pensando que cerraría la brecha.
No. La base de datos se ha visto comprometida una vez más, así que decidí echar un vistazo al registro y, como muestra el día, la conexión se completó desde una IP que no estaba incluida en mi configuración. ¿Cómo podría estar pasando esto todavía?
Además, ejecuté el service mongodb restart después de realizar los cambios de ipbind.
Aquí está la sección de interfaz de red de mi configuración
# network interfaces net: port: 27017 bindIp: [127.0.0.1,90.207.xxx.xxx,76.94.xxx.xxx,23.23.xxx.xxx]La configuración de bindIp es una lista de las direcciones IP que escucha su servidor MongoDB, no un firewall para limitar el acceso remoto. Si su servidor tiene una IP pública y una privada, la lista bindIp debe tener como máximo tres entradas: 127.0.0.1 (localhost), la IP privada y la IP pública.
Idealmente, debe limitar su implementación de MongoDB para que solo escuche localhost o una IP privada, y se conecte de forma remota a través de SSH o VPN.
La seguridad en profundidad requiere múltiples medidas, como se describe en la lista de verificación de seguridad de MongoDB .
Por ejemplo, además de corregir su configuración de bindIp , debe:
mongod y mongos para que requieran SSL para todas las comunicaciones de red .tratar
netstat -tulpn | grep mongodentonces sabrá en qué ip está vinculado el servicio mongo ...
Encontré el problema. [xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx] no debe ser la sintaxis correcta para el enlace IP. Para probar, cambié el enlace IP de nuevo a
# network interfaces net: port: 27017 bindIp: 127.0.0.1Lo que de hecho bloqueó mis intentos de conexión, así que luego intenté
# network interfaces net: port: 27017 bindIp: [127.0.0.1,1.1.1.1]Lo cual es una IP descaradamente incorrecta y me permitió conectarme sin hacer preguntas. Había copiado esta sintaxis de una pregunta anterior de stackoverflow. Ahora solo necesito encontrar la manera apropiada de hacer esto.