有没有办法在 kubernetes master/worker 节点上的 filter table 中自定义 iptables 规则?

Is there a way to customize iptables rules in filter table on kubernetes master/worker node?

我正在从事一个项目,我们试图将遗留产品(作为独立 VM 部署)过渡到 kubernetes 基础架构。

我正在使用 KUBEROUTER 作为 CNI 提供程序。

为了保护 VM 免受 DoS(并记录尝试),我们在 iptables 过滤器 table 中添加了不同的链。 (这些包括 ping flood、syn flood 的规则 - 我认为网络 policies/ingress 控制器可以管理 syn flood,但不确定如何处理 icmp flood。)

当我在我的虚拟机上部署 kubernetes 时,我发现 kubernetes 会更新 iptables 并创建它自己的链。 (主要是 k8s 更新 NAT 规则,但链也添加到过滤器 table)

我的问题是:

  1. 是否可以在 kubernetes 运行 的虚拟机上自定义 iptables?

  2. 如果我将自己的链(确保 k8s 链就位)添加到 iptables 配置,它们会被 k8s 覆盖吗?

  3. 我可以使用普通的旧 iptables 命令添加链,还是需要通过 kubectl 来添加链? (从 k8s 文档中,我得到的印象是我们只能使用 kubectl 更新 NAT table 中的规则)

请让我知道,如果有人对此有更多了解,谢谢!

~普拉桑纳

  1. Is it possible to customize iptables on VM where kubernetes is running?

是的,您可以正常管理您的虚拟机的 iptables,但是有关 Kubernetes 内部应用程序的规则应该从 Kubernetes 内部管理。

  1. If I add my own chains (making sure that k8s chains are in place) to iptables configuration, would they be overwritten by k8s?

链不应被 Kubernetes 覆盖,因为 Kubernetes 创建自己的链并对其进行管理。

  1. Can I add chains using plain old iptables commands or need to do so via kubectl? (From k8s documentation, I got an impression that we can only update rules in NAT table using kubectl)

您可以使用 iptables 来获取与 VirtualMachine 相关的规则。要管理防火墙规则,您应该使用 iptables,因为 kubectl 无法管理防火墙。对于 Kubernetes 集群中的入站和出站规则,请使用 Kubernetes 工具(您在其中指定网络策略的 .yaml 文件)。注意不要创建可能与 iptables 规则冲突的 services

If you intend to expose application services externally, by either using the NodePort or LoadBalancing service types, traffic forwarding must be enabled in your iptables ruleset. If you find that you are unable to access a service from outside of the network used by the pod where your application is running, check that your iptables ruleset does not contain a rule similar to the following:

:FORWARD DROP [0:0]

与标准 infrastructure/network-centric 标准防火墙相比,Kubernetes 网络策略以应用程序为中心。

这意味着我们并没有真正使用基于 CIDR 或 IP 的网络策略,在 Kubernetes 中它们是建立在 labels and selectors.

之上的

关于 DDoS 保护和 ICMP 洪水攻击的细节:事实是 "classic" 缓解方法 - 限制 ICMP responses/filtering 技术将对合法流量产生影响。在"new era"大流量的DDoS攻击中,基于防火墙的解决方案是不够的,因为流量通常是可以承受的。您可以考虑一些特定于供应商的解决方案,或者如果您有这种可能性 - 准备您的基础架构以承受大量流量或实施诸如 ping 大小和频率限制之类的解决方案。此外,整体 DDoS 保护由多个级别和解决方案组成。有黑洞路由、速率限制、任播网络扩散、uRPF、ACL 等解决方案,它们也可以帮助应对应用程序级 DDoS 攻击。我可以推荐更多有趣的做法,但在我看来,在发生这些攻击时制定行动手册和事件响应计划很重要。