我正在一个项目中,我们正在尝试将旧产品(部署为独立VM)过渡到kubernetes基础设施。
我正在使用KUBEROUTER作为CNI提供程序。
为了防止VM遭受DoS(并记录尝试),我们在iptables过滤器表中添加了不同的链。 (这些规则包括用于ping Flood,Syn Flood的规则-我认为网络策略/入口控制器可以管理Syn Flood,但不确定如何处理icmp Flood。)
当我在VM上部署kubernetes时,我发现kubernetes会更新iptables并创建它自己的链。 (主要是k8s更新NAT规则,但过滤器表中也添加了链)
我的问题是:
是否可以在运行kubernetes的VM上自定义iptables?
如果我将自己的链(确保已安装k8s链)添加到iptables配置中,它们会被k8s覆盖吗?
我可以使用普通的旧iptables命令添加链,还是需要通过kubectl来添加链? (从k8s文档中,我得到的印象是我们只能使用kubectl更新NAT表中的规则)
请让我知道,如果有人对此有所了解,谢谢!
〜Prasanna
答案 0 :(得分:0)
- 是否可以在运行kubernetes的VM上自定义iptables?
是的,您可以正常管理VM的iptables,但是有关Kubernetes内部应用程序的规则应从Kubernetes内部进行管理。
- 如果我将自己的链(确保已安装k8s链)添加到iptables配置中,它们会被k8s覆盖吗?
Kubernetes不应覆盖链,因为Kubernetes会创建自己的链并对其进行管理。
- 我可以使用普通的旧iptables命令添加链,还是需要通过kubectl来添加链? (从k8s文档中,我得到的印象是我们只能使用kubectl更新NAT表中的规则)
您可以将iptables用于与VirtualMachine相关的规则。要管理防火墙规则,您应该使用iptables,因为kubectl无法管理防火墙。对于Kubernetes集群中的入站和出站规则,请使用Kubernetes工具(在其中指定网络策略的.yaml文件)。请注意,不要创建可能与iptables规则冲突的services。
如果您打算使用
NodePort
或LoadBalancing
服务类型在外部公开应用程序服务,则必须在 iptables 规则集中启用流量转发。如果您发现无法从运行应用程序的pod所使用的网络外部访问服务,请检查您的 iptables 规则集是否不包含类似于以下内容的规则:>
:FORWARD DROP [0:0]
与标准基础架构/以网络为中心的标准防火墙相比,Kubernetes网络策略以应用程序为中心。
这意味着我们实际上并没有真正使用基于CIDR或IP的网络策略,在Kubernetes中,它们是基于labels and selectors.
构建的关于DDoS保护和ICMP泛洪攻击的详细信息:事实是,缓解的“经典”方法-限制ICMP响应/过滤技术将对合法流量产生影响。在具有巨大流量的DDoS攻击的“新时代”中,基于防火墙的解决方案还远远不够,因为流量通常能够阻止它们。您可以考虑一些特定于供应商的解决方案,或者如果您有这种可能性,请准备基础结构以承受大量流量或实施诸如ping大小和频率限制之类的解决方案。而且,整体的DDoS保护包括许多级别和解决方案。有诸如黑洞路由,速率限制,任播网络扩散,uRPF,ACL之类的解决方案,它们也可以帮助应对应用程序级DDoS攻击。我可以建议更多有趣的做法,但我认为,重要的是要有剧本和事件响应计划,以防发生这些攻击。