有没有一种方法可以在kubernetes主节点/工作节点上的过滤器表中自定义iptables规则?

时间:2018-07-25 03:54:33

标签: kubernetes iptables

我正在一个项目中,我们正在尝试将旧产品(部署为独立VM)过渡到kubernetes基础设施。

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

为了防止VM遭受DoS(并记录尝试),我们在iptables过滤器表中添加了不同的链。 (这些规则包括用于ping Flood,Syn Flood的规则-我认为网络策略/入口控制器可以管理Syn Flood,但不确定如何处理icmp Flood。)

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

我的问题是:

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

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

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

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

〜Prasanna

1 个答案:

答案 0 :(得分:0)

  
      
  1. 是否可以在运行kubernetes的VM上自定义iptables?
  2.   

是的,您可以正常管理VM的iptables,但是有关Kubernetes内部应用程序的规则应从Kubernetes内部进行管理。

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

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

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

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

  

如果您打算使用NodePortLoadBalancing服务类型在外部公开应用程序服务,则必须在 iptables 规则集中启用流量转发。如果您发现无法从运行应用程序的pod所使用的网络外部访问服务,请检查您的 iptables 规则集是否不包含类似于以下内容的规则:

:FORWARD DROP [0:0]

与标准基础架构/以网络为中心的标准防火墙相比,Kubernetes网络策略以应用程序为中心。

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

构建的

关于DDoS保护和ICMP泛洪攻击的详细信息:事实是,缓解的“经典”方法-限制ICMP响应/过滤技术将对合法流量产生影响。在具有巨大流量的DDoS攻击的“新时代”中,基于防火墙的解决方案还远远不够,因为流量通常能够阻止它们。您可以考虑一些特定于供应商的解决方案,或者如果您有这种可能性,请准备基础结构以承受大量流量或实施诸如ping大小和频率限制之类的解决方案。而且,整体的DDoS保护包括许多级别和解决方案。有诸如黑洞路由,速率限制,任播网络扩散,uRPF,ACL之类的解决方案,它们也可以帮助应对应用程序级DDoS攻击。我可以建议更多有趣的做法,但我认为,重要的是要有剧本和事件响应计划,以防发生这些攻击。