我的服务器上有几个 docker 容器,暴露端口。现在我尝试将对端口的访问限制为能够插入规则而不允许策略的 IP 地址。我以编程方式在 dotnet 应用程序上应用 IP 表规则,该应用程序也在主机上的容器内运行,但在主机上而不是桥接网络上。因此,以下是在应用程序启动时应用的规则
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F INPUT
然后我将删除所有 DOCKER-USER 规则,但保留 RETURN 规则,并应用以下内容
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
然后我添加了所有需要的端口用于 web 接口等,并且在建立了连接的场景中,为所有这些端口制定规则(它们存储在数据库中)
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 2376 -j ACCEPT
iptables -A DOCKER-USER -p tcp -m conntrack --ctorigsrc {my_ip} -m tcp --dport 5000 -j ACCEPT
iptables -A INPUT -p tcp -s {my_ip} --dport 5000 -j ACCEPT
然后我删除 INPUT 和 FORWARD 链。到目前为止一切顺利。
现在我需要将连接限制到单个 IP,并能够动态删除和添加 IP 规则。我尝试像上面一样附加和插入 INPUT 和 DOCKER-USER 规则,但附加或插入规则都不会限制与 IP 的连接,总是有所有客户端或没有客户端能够连接到端口。
有人知道我遗漏了什么吗?