如何限制 Docker 容器仅访问主机上的特定端口并允许 SSH 流量

问题描述 投票:0回答:1

我有一个 Docker 容器需要访问主机上的某些端口,但我只想限制对这些端口的访问。这是我用来运行容器的命令:

docker run -it --network test -p 2020:22 --name my-container 229da73a2adb

为了限制对主机端口之一的访问,比如 3030,我使用以下 iptables 规则:

iptables -A INPUT -i br-68c6feca2ecb -p tcp --dport 3030 -j ACCEPT

iptables -A INPUT -p tcp --dport 3030 -j DROP

此外,我想防止容器和主机之间交换任何其他流量。我通过以下规则实现这一点:

iptables -A INPUT -i br-68c6feca2ecb -j DROP

但是,我还想让容器接受来自外部网络的 SSH 流量,但不允许任何其他流量从容器发送到互联网。有没有办法做到这一点?

如何将网络流量限制在所需的端口?

我不能使用 --internal 标志,因为我仍然需要发布端口。

linux docker security iptables
1个回答
0
投票

我找到了答案。使用以下命令关闭所有容器的流量,只为它们播放 ssh:

iptables -A DOCKER-USER -p tcp --dport ssh -j ACCEPT

iptables -A DOCKER-USER -p tcp --sport ssh -j ACCEPT

iptables -A DOCKER-USER -d 192.168.0.0/16 -j DROP

© www.soinside.com 2019 - 2024. All rights reserved.