gpt4 book ai didi

kubernetes - 使用 iptables 阻止来自集群外部的所有 Kubernetes 节点端口通信

转载 作者:行者123 更新时间:2023-12-02 11:46:26 26 4
gpt4 key购买 nike

出于安全原因,我想阻止我所有基于 kubeadm 的现场 Kubernetes 工作节点转发 nodePort 流量。
我尝试向 worker 申请显而易见的:

iptables -I INPUT 1 -p tcp -m multiport  --dports 30000:32767 -j DROP
但它似乎不起作用。
我也在 -I FORWARD 1 上尝试过同样的事情但服务似乎仍然开放。
有什么建议么?
# iptables -L INPUT --line-numbers -n
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 127.0.0.1 0.0.0.0/0
2 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:10250 reject-with icmp-port-unreachable
3 KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes service portals */
4 KUBE-EXTERNAL-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes externally-visible service portals */
5 KUBE-FIREWALL all -- 0.0.0.0/0 0.0.0.0/0
6 WEAVE-NPC-EGRESS all -- 0.0.0.0/0 0.0.0.0/0

# iptables -L FORWARD --line-numbers -n
Chain FORWARD (policy DROP)
num target prot opt source destination
1 WEAVE-NPC-EGRESS all -- 0.0.0.0/0 0.0.0.0/0 /* NOTE: this must go before '-j KUBE-FORWARD' */
2 WEAVE-NPC all -- 0.0.0.0/0 0.0.0.0/0 /* NOTE: this must go before '-j KUBE-FORWARD' */
3 NFLOG all -- 0.0.0.0/0 0.0.0.0/0 state NEW nflog-group 86
4 DROP all -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
6 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
7 KUBE-FORWARD all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes forwarding rules */
8 KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes service portals */
9 DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0
10 DOCKER-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0
11 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
12 DOCKER all -- 0.0.0.0/0 0.0.0.0/0
13 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
14 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

最佳答案

在专用服务器上仅运行 Kubernetes 是最佳实践。运行集群使用的任何辅助应用程序或调整应用程序可能会对 Kubernetes 本身造成影响,因此不推荐/不支持。
根据您的设置,kubernetes 使用 iptables,因此您所做的任何更改都可能影响 kubernetes 并被 kubernetes 破坏。
你有几个选项来实现你所需要的,一个是有一个外部防火墙保护你的服务器,如果你不能,我建议你使用为此目的创建的工具。
我认为最好的选择是使用 Calico 作为您的 CNI,因为它具有允许您阻止特定流量的功能。请引用Apply Calico policy to Kubernetes node ports .
示例:(未测试)

  apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: deny-nodeports
spec:
applyOnForward: true
preDNAT: true
ingress:
- action: Deny
destination:
ports:
- 30000:32767
protocol: TCP
source: {}
- action: Deny
destination:
ports:
- 30000:32767
protocol: UDP
source: {}
selector: has(kubernetes-host)
order: 1100
types:
- Ingress
另一种选择是使用 Network Policies ,网络策略是 pods 组的规范。允许相互通信以及与其他网络端点通信。
最后,我推荐的最后一个选项是 Istio . Istio 无疑是最复杂的解决方案,但另一方面,它也是最强大的。

关于kubernetes - 使用 iptables 阻止来自集群外部的所有 Kubernetes 节点端口通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62923633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com