我在我的 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/