如何限制从Internet访问远程Linux服务器上的容器端口?

时间:2018-10-15 08:25:50

标签: security docker iptables ubuntu-18.04

我在远程服务器上的ubuntu 18上使用docker-compose。 如何使用iptables阻止从Internet到docker端口的访问,而仅允许从该服务器的localhost访问它?

例如,我想阻止4150端口连接互联网。试试这个: iptables -A DOCKER-USER -p tcp --dport 4150 -j DROP不会阻止端口-仍然可以从Internet(而不是从服务器计算机)访问该端口。

我如何阻止从Internet访问服务器上的所有端口,但只允许22,80?并保持该端口可从服务器的本地主机(例如,从服务器本身)访问?

1 个答案:

答案 0 :(得分:0)

不是您要找的基于IPTables的解决方案,而是一个更简单的解决方案是仅发布到特定接口,而不是所有接口。而当该接口是回送接口时,例如127.0.0.1,您只能在本地访问端口。为此,请将接口添加到发布规范的开头:

docker run -p 127.0.0.1:4150:4150 ...

或撰写文件中的类似语法:

...
  ports:
  - 127.0.0.1:4150:4150
...

关于您尝试使用的命令为何不起作用的原因,我相信您需要包含-m tcp才能匹配tcp端口号:

iptables -A DOCKER-USER -p tcp -m tcp --dport 4150 -j DROP
相关问题