【发布时间】:2018-11-30 16:24:37
【问题描述】:
我有一台服务器,并且正在运行一些 docker 容器。这些容器有几个未打开的端口。我添加了 INPUT 规则,只允许从 1 个 ip 访问这些端口,之后我有一个 DROP 规则。
这应该会阻止除我的家庭 IP 之外的所有对端口的访问。现在事实证明,docker 只允许一切,并且 docker 能够以某种方式覆盖输入规则,因为输入规则不起作用。
我认为这与 FORWARDING 规则有关,如下所示:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhereACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
我已经刷新了所有规则,然后我从 docker 收到了非常奇怪的错误,例如:
driver failed programming external connectivity on endpoint gogs (b62814647bf440e923c009da0ca76185fac2f89a9534eb11792dbcb07ef3ffbf): (iptables failed: iptables --wait -t filter -A DOCKER ! -i br-5dd41982af68 -o br-5dd41982af68 -p tcp -d 172.18.0.6 --dport 3000 -j ACCEPT: iptables: No chain/target/match by that name.
如何确保输入规则覆盖所有内容,以便 INPUT 链上的端口过滤阻止除我之外的其他所有人访问?
【问题讨论】: