我在我的Ubuntu服务器上运行了一个Docker容器。昨天,数据库被黑客入侵,我不明白配置错误的内容。好的,我只是使用默认配置 - 我想这不是最好的方法。但是我认为DB只能从我的内部容器中访问,因为我正在使用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插入了iptables规则(大概是为了使事情在开发环境中起作用(,绕过UFW的防火墙。看起来27017港口受到UFW的保护,但实际上是在iPtables中打开的。我在以下答复中给出了更多详细信息:
避免最近的Mongo-DB骗局的最简单方法
受此Mongo Hack影响的28,000个有可能正在使用UFW Docker,并且不知道他们的Mongo港口实际上是在他们认为关闭时开放的。使用UFW Docker。