加固K8s Node节点防火墙策略的核心是“只放行必需流量、默认拒绝其余一切”,需区分Master与Worker角色开放端口:Master开放6443、2379–2380、10257、10259;Worker限制10250仅内网访问并禁用10255;Ubuntu用UFW、CentOS用firewalld设默认拒绝,禁用NodePort公网暴露,结合扫描、IaC和日志监控实现持续防护。

加固K8s Node节点的网络防火墙策略,核心是“只放行必需流量、默认拒绝其余一切”,从操作系统层筑牢第一道防线。这一步不依赖K8s组件本身,却直接影响API Server通信、kubelet管理、节点间协同等关键链路的安全基线。
明确各节点角色并差异化开放端口
控制平面节点(Master)和工作节点(Worker)暴露的服务不同,防火墙规则必须区分对待:
根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。
- 控制平面节点:仅开放6443(API Server HTTPS)、2379–2380(etcd客户端/对等通信)、10259(kube-scheduler健康检查)、10257(kube-controller-manager健康检查);禁用SSH远程登录或限制为跳板机IP段访问。
-
工作节点:重点保护10250(kubelet API),必须绑定到内网地址(如
--address=192.168.10.50),并通过防火墙限制仅允许控制平面节点IP访问;关闭10255(未认证只读端口),该端口在生产环境应彻底禁用。
使用UFW或firewalld实施默认拒绝策略
Ubuntu系统推荐UFW,CentOS/RHEL优先使用firewalld,两者均需启用并设为开机自启:
- 执行
ufw default deny incoming(UFW)或firewall-cmd --set-default-zone=drop(firewalld),确保所有入向连接默认被丢弃。 - 按需添加显式规则,例如:
ufw allow from 192.168.10.10 to any port 6443(仅允许可信API调用方);firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="10250" protocol="tcp" accept' --permanent。 - 禁止开放NodePort范围(30000–32767)给公网,如确需对外暴露服务,应通过Ingress控制器+云厂商SLB/ALB实现,而非直接放开节点端口。
同步校验与持续防护
防火墙配置不是一次性的静态操作,需配合运行时验证与定期审计:
- 部署后立即用
nmap -sT -p 1-65535 <node-ip></node-ip>扫描确认无非预期端口开放;也可用ss -tln核对监听地址是否绑定正确(如127.0.0.1或内网IP,而非0.0.0.0)。 - 将防火墙规则纳入IaC(如Ansible Playbook或Terraform模块),确保新节点加入时自动继承安全策略,避免人工遗漏。
- 结合系统日志(
journalctl -u ufw或journalctl -u firewalld)设置告警,对高频拒绝记录或规则变更行为进行监控。

















