本博客地址:https://security.blog.csdn.net/article/details/130678814
一、系统账户加固
1、对账户的登录次数进行检查,连续超过3次登录失败后,对用户锁定150s
# 每个设备上都运行
sed -i~ '2iauth required pam_faillock.so deny=3 unlock_time=150 even_deny_root root_unlock_time=300' /etc/pam.d/sshd
2、配置用户密码的生命周期,限制其登录密码至少每隔一段时间就进行更新
# 每个设备上都运行
sed -i 's/^PASS_MAX_DAYS\t.*/PASS_MAX_DAYS 30/' /etc/login.defs # 密码最大修改天数30天,即30天强制修改一次
sed -i 's/^PASS_MIN_DAYS\t.*/PASS_MIN_DAYS 0/' /etc/login.defs # 密码最小修改天数0天,即随时可修改密码
sed -i 's/^PASS_MIN_LEN\t.*/PASS_MIN_LEN 8/' /etc/login.defs # 密码最小长度为8位
sed -i 's/^PASS_WARN_AGE\t.*/PASS_WARN_AGE 7/' /etc/login.defs # 密码错误警告次数为7次
3、配置用户密码的复杂程度,规定密码的长度、大小写字符数、特殊符号数目
# 每个设备上都运行
echo "minlen = 8" >> /etc/security/pwquality.conf
echo "maxrepeat = 2" >> /etc/security/pwquality.conf
echo "lcredit = 1" >> /etc/security/pwquality.conf
echo "ucredit = 1" >> /etc/security/pwquality.conf
echo "dcredit = 1" >> /etc/security/pwquality.conf
echo "ocredit = 1" >> /etc/security/pwquality.conf
4、禁止root用户远程登录(或禁止使用密码登录,强制使用证书登录)。普通用户登录系统后,通过sudo命令获得更高的执行权限
# 每个设备上都运行
sed -i~ 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
5、其他
重启SSH服务,使上面的root用户配置生效
# 每个设备上都运行
systemctl restart sshd.service
启用SELinux
# 每个设备上都运行
# 修改selinux配置文件,配置默认策略为enforcing
sed -i "s/SELINUX=disabled/SELINUX=enforcing/g" /etc/selinux/config
# 如果selinux提示disabled,则需要重启系统使其生效
二、kube-apiserver加固
kube-apiserver的加固需要通过修改kube-apiserver的配置文件来修改kube-apiserver的配置。kube-apiserver的配置文件一般在:/etc/kubernetes/manifests/kube-apiserver.yaml
在kube-apiserver.yaml配置文件中,配置disable匿名登录和kubelet使用https调用;禁用调试模式;同时为kube-apiserver配置NodeRestriction、AlwaysPullImages、PodSecurityPolicy和ServiceAccount插件;最后为kube-apiserver配置访问审计日志。
# 配置内容:
- --anonymous-auth=false
- --kubelet-https=true
- --profiling=false
- --authorization-mode=Node,RBAC
- --enable-admission-plugins=NodeRestriction,AlwaysPullImages,PodSecurityPolicy,ServiceAccount
- --audit-log-path=/var/log/kube-apiserver-audit.log
如图所示:
三、kubelet加固
kubelet的加固需要通过修改kubelet的配置文件来修改kubelet的配置。kubelet的配置存放在/etc/kubernetes/kubelet.conf
、/var/lib/kubelet/config.yaml
和/etc/sysconfig/kubelet
这三个地方。
在config.yaml文件中配置anonymous为false、配置readOnlyPort为disable。
vim /var/lib/kubelet/config.yaml
---------------------------------------------------------------
authentication:
anonymous:
enabled: false
readOnlyPort: 0
如图所示
在kubelet的EnvironmentFile中配置激活证书轮换。
vim /etc/sysconfig/kubelet
--------------------------------------------------------------------------
KUBELET_EXTRA_ARGS=--rotate-certificates
如图所示