docker - 如何防止重定向的 docker 端口向外界开放?
问题描述
我在不同的容器中有几个 Web 服务,我将每台服务器的 80 个端口重定向到主机服务器上的另一个端口。(容器 1 80 -> 8003,容器 2 80 -> 8004,容器 3 80 -> 8005)我想阻止对这些端口的访问,除了预配置的 ip 列表
我已将 iptables 规则添加到“docker-user”链中,如下所示;
-A INPUT -s 212.154.74.194/32 -p tcp -j ACCEPT //accept all from this ip
-A INPUT -s 185.22.208.0/25 -p tcp -j ACCEPT //accept all from this ip
-A INPUT -p tcp -m tcp --dport 8003 -j DROP //block anyone except allowed ips
-A INPUT -p tcp -m tcp --dport 8004 -j DROP //block anyone except allowed ips
-A INPUT -p tcp -m tcp --dport 8005 -j DROP //block anyone except allowed ips
但它不起作用。路由端口仍然可以从外部访问。我不知道我做错了什么。如何阻止对路由端口的访问?
解决方案
似乎From docker docs非常详尽地回答了您的问题:
默认情况下,允许所有外部源 IP 连接到 Docker 守护程序。要仅允许特定 IP 或网络访问容器,请在 DOCKER 过滤器链的顶部插入否定规则。例如,以下规则限制对除 192.168.1.1 之外的所有 IP 地址的外部访问:
$ iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.1 -j DROP
允许特定子网:
iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.0/24 -j DROP
奖励:您还可以将连接完全限制到 localhost:docker run -p 127.0.0.1:80:8003
应该自动限制对 localhost 的访问。
或者使用 docker compose:
webapp:
image: image_name
ports:
- "127.0.0.1:80:8003"
推荐阅读
- python-3.x - 添加数量有限的对象直到满的类
- flutter - Flutter 可拖动(可重新定位)覆盖
- r - 是什么导致“parallel::parSapply”中的“外部指针无效”错误?
- android - 为什么 xml Drawable 不能与 BitmapDrawable 一起使用?
- javascript - 根据一定的条件将列表的元素加入并分组为字符串
- bash - Snakemake 和 bash 脚本管道失败
- sharepoint - 如何使用 PnP.js 获取共享点文件自定义元数据
- asp.net - 如何在 ASP.Net Core 的 textarea 中显示纯文本而不是 HTMLText
- python - 如何复制/复制熊猫数据框行
- java - 支持范围和多值的数据结构