IPTables-只允许特定IP地址的Docker端口转发

gfd

我正在Ubuntu 16.04上托管Web应用程序。该应用程序的所有组件都在Docker容器内,其中大多数只需要彼此之间进行通信,而无需与外界通信(例如PostgreSQL或ElasticSearch)。例如,ElasticSearch默认情况下在端口9200上公开它的插件接口。

作为管理员,我需要访问这些界面,但我想将其限制为仅在我的工作计算机上使用。

我尝试按照以下说明将端口仅允许使用特定IP,但是Docker似乎覆盖了我的规则:

## ALLOW specific ports only on ONE IP address:
# ElasticSearch
iptables -I INPUT -p tcp -s MyWorkIP --dport 9200 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 9200 -j DROP
iptables -I INPUT -p tcp -s MyWorkIP --dport 9300 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 9300 -j DROP
iptables -I INPUT -p tcp -s MyWorkIP --dport 5601 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 5601 -j DROP
# PostgreSQL
iptables -I INPUT -p tcp -s MyWorkIP --dport 5432 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 5432 -j DROP

我正在通过尝试page:port从工作计算机(MyWorkIP在脚本中)和电话(动态IP)中访问特定内容来测试所有内容,但是任何尝试均会授予我从这两个设备进行访问的权限。我需要的是除MyWorkIP拒绝外的任何其他IP 因此我的手机无法访问。

我不太擅长IPtables配置,所以我不确定从哪里开始调查...(我没有在此服务器上安装X:我会在一段时间内完成所有操作)

有什么想法/想法吗?

米凯尔

我设法使其与此:

删除除ipyouwanttoallow之外的所有连接(入站和出站)
    iptables -I DOCKER ! -s ipyouwanttoallow -j DROP
接受从您的容器本地IP到世界的所有连接
    iptables -I DOCKER -s localipofyourcontainer -d 0.0.0.0/0 -j ACCEPT
允许外部服务器回答您的容器请求所必需的
    iptables -I DOCKER  -m state --state ESTABLISHED,RELATED -j ACCEPT

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章