在CentOS系统上设置Kubernetes(k8s)安全策略涉及多个方面,包括系统安全、网络策略、加密通信、访问控制等。以下是一些关键步骤和最佳实践:
/etc/passwd
文件,检测并锁定不必要的超级账户。adm
、lp
、sync
等,以减少系统被攻击的风险。/etc/login.defs
文件来强制执行这些要求。chattr
命令给 /etc/passwd
、/etc/shadow
、/etc/group
和 /etc/gshadow
文件加上不可更改属性,以防止未授权访问。/etc/profile
文件中的 TMOUT
参数,设置root账户的自动注销时限。/etc/pam.d/su
文件,限制只有特定组的用户才能使用 su
命令切换为root。/etc/security/console.apps
下的相应程序的访问控制文件,防止普通用户执行关机、重启等敏感操作。/etc/inittab
文件,禁用ctrl+alt+del组合键重启机器的命令。/etc/rc.d/init.d/
目录下所有文件的权限,只有root用户可以操作这些服务。/etc/securetty
文件,限制root用户只能在特定的tty设备上登录。/etc/exports
文件具有最严格的访问权限设置。firewalld
或 iptables
配置防火墙规则,限制对服务器的访问,只允许必要的端口对外开放。apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
# 生成SSL证书
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CNmy-ca" -days 10000 -out ca.crt
# 创建Secret
kubectl create secret generic my-secret --from-file ca.crt
# 创建Service
kubectl apply -f encrypted-service.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: my-namespace
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
# 检查更新
kubectl get nodes
kubectl get pods --all-namespaces
# 更新K8S集群
kubectl cluster-info dump
kubectl cluster-info upgrade
通过上述步骤,你可以显著提高CentOS系统上Kubernetes集群的安全性,减少受到网络攻击的风险。请注意,这些安全措施需要定期审查和更新,以应对不断变化的安全威胁。