我在远程服务器上的ubuntu 18上使用docker-compose。 如何使用iptables阻止从Internet到docker端口的访问,而仅允许从该服务器的localhost访问它?
例如,我想阻止4150端口连接互联网。试试这个:
iptables -A DOCKER-USER -p tcp --dport 4150 -j DROP
不会阻止端口-仍然可以从Internet(而不是从服务器计算机)访问该端口。
我如何阻止从Internet访问服务器上的所有端口,但只允许22,80?并保持该端口可从服务器的本地主机(例如,从服务器本身)访问?
答案 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