mongodb - 为什么默认的 mongodb docker 实例不安全?

标签 mongodb docker ubuntu

我在我的 ubuntu 服务器上运行一个 mongoDB 作为 docker 容器。昨天数据库被黑了,我不明白配置错误的地方。好的,我只是使用默认配置——我猜这不是最好的方法。 但我认为数据库只能从我的内部容器访问,因为我正在使用 docker。所以这显然是错误的。

我想了解为什么这个 docker-compose 文件给我一个不安全的 mongoDB:

version: '3.5'

networks:
  reverse-proxy:
    name: reverse-proxy
    driver: bridge

volumes:
  html:

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    networks:
      - reverse-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /opt/nginx-proxy/vhost.d:/etc/nginx/vhost.d:rw
      - /opt/nginx-proxy/htpasswd:/etc/nginx/htpasswd:ro
      - /opt/nginx/certs:/etc/nginx/certs:ro
      - html:/usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro

  mongodb:
    container_name: mongodb
    image: mongo:4.0
    networks:
      - reverse-proxy
    restart: unless-stopped
    ports:
      - "27017:27017"
    volumes:
      - /opt/mongo/data:/data/db
      - /restore:/restore 

最佳答案

就我而言,我使用 ufw 来管理我的防火墙。事实证明,docker 绕过了 ufw 的防火墙插入了一个 iptables 规则(大概是为了让事情只在开发环境中工作)。看起来 27017 端口被 ufw 保护了,但它实际上在 iptables 中是开放的。我在以下回复中提供了更多详细信息:

Easiest way to avoid the recent Mongo-db scam

受此 mongo 黑客攻击影响的 28,000 人中的许多人可能正在使用 ufw + docker,并且在他们认为 mongo 端口关闭时并没有意识到他们的 mongo 端口实际上是打开的。这同样适用于使用 ufw + docker 的任何其他东西。

关于mongodb - 为什么默认的 mongodb docker 实例不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55995389/

相关文章:

java - MongoDB java通过带有字段的函数更新文档

apache - apache https代理 "https required"背后的 key 斗篷

linux - 从docker容器内部发送文件到外部

ruby-on-rails - 尝试使用 Ruby api 创建虚拟机实例时出现错误 MsRestAzure::AzureOperationError: AuthorizationFailed

php - 无法在ubuntu上安装php7

performance - MongoDB 按 ID 慢查询

arrays - 使用插入更新 mongodb 中的数组值

node.js - 如何查询mongodb中所有没有特定id的文档?

docker - 使用 grunt-shell 调用调用 docker run 的脚本时如何解决 "the input device is not a TTY"?

java - 下载带有 HttpURLConnection 问题的 *.deb 文件