【问题标题】:how to block external access to docker container linux centos 7如何阻止对docker容器linux centos 7的外部访问
【发布时间】:2019-11-19 09:46:45
【问题描述】:

我有一个 mongodb docker 容器,我只想从我的服务器内部访问它,而不是外部。即使我用 firewall-cmd 阻止了端口 27017/tcp,但似乎 docker 仍然可供公众使用。 我正在使用 linux centos 7 和 docker-compose 用于设置 docker

【问题讨论】:

    标签: docker docker-compose centos7


    【解决方案1】:

    我解决了同样的问题,在链 DOCKER 的顶部添加了一个阻止公共接口(eth0)上的 27017 端口的 iptables 规则:

    iptables -I DOCKER 1 -i eth0 -p tcp --dport 27017 -j DROP

    docker启动后设置规则

    另外,mongod使用非默认端口,修改docker-compose.yml(记得在命令指令中添加--port=XXX)

    为了更好的安全性,我建议将您的服务器置于外部防火墙之后

    【讨论】:

      【解决方案2】:

      如果您的应用程序在一个容器中,而 MongoDb 在另一个容器中,您需要做的是使用设置为内部的网络将它们连接在一起。

      See Documentation:

      内部
      默认情况下,Docker 还连接一个桥接网络来提供 外部连接。如果要创建外部隔离 覆盖网络,您可以将此选项设置为true。

      另见this question

      这是tutorial on networking(不包括内部但便于理解)

      您还可以通过配置 Linux iptables Firewall for MongoDB 来限制 MongoDb 上的流量

      要创建专用网络,请使用以下范围内的一些 IP:
      10.0.0.0 – 10.255.255.255
      172.16.0.0 – 172.31.255.255
      192.168.0.0 - 192.168.255.255

      更多阅读Wikipedia

      您可以将一个容器连接到多个网络,因此通常一个应用程序容器连接到外部网络(外部)和内部网络。应用程序与内部网络上的数据库通信,并通过外部网络向客户端返回一些数据。数据库只连接到内部网络,所以从外部(互联网)看不到它

      【讨论】:

      • Centos7 不使用 iptables 而是使用 firewall-cmd
      • @Ehsansarshar 如果你想关注 MongoDB iptables 防火墙配置页面,你可以拥有 Centos 的 iptables。 See here
      猜你喜欢
      • 2017-04-23
      • 1970-01-01
      • 2013-01-02
      • 1970-01-01
      • 2020-06-06
      • 2018-01-26
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多