CIS服务器权限基线检查需嵌入日常运维:聚焦/etc/shadow(600)、/etc/sudoers(440)、/root(700)等关键路径,用轻量脚本自动比对、彩色输出、JSON/CSV导出,修复前备份、修复后验证,并通过Git、定时任务、CI/CD和文件监控实现长效落地。

配置服务器权限基线 CIS 检查,本质是把 CIS 标准中关于文件权限、用户控制、服务配置等硬性要求,变成可执行、可验证、可追踪的自动化动作。不是装个工具跑一遍就完事,而是让基线检查真正嵌入日常运维节奏里。
聚焦 CIS 权限类核心项,不贪多
CIS 基线里真正影响权限安全的关键路径有限,优先覆盖这些才有效:
-
/etc/shadow:必须为
600(属主 root,组和其他无任何权限),CIS Level 1 明确要求;644 或更宽松即视为高危 -
/etc/sudoers 和 /etc/sudoers.d/ 下所有文件:统一设为
440(root:root,组可读、其他不可读写),任何写权限都可能被用于提权 -
/root 目录:严格限制为
700,防止非 root 用户访问敏感配置或历史记录 -
/tmp 和 /var/tmp:必须启用 sticky bit,即权限为
1777,否则普通用户可删改他人临时文件 -
/etc/ssh/sshd_config:推荐
600或644,严禁666、646等开放权限
用轻量脚本实现自动比对与输出
不需要部署重型平台,一个 Bash 脚本就能启动:
- 用
stat -c "%a %U:%G %n"获取真实八进制权限和属主属组,避免ls -l解析错位 - 预设 YAML 规则文件(如
cis-perms.yaml),定义每个路径的期望权限、属主、属组 - 终端输出带颜色:绿色表示合规,红色标出越权项,一眼识别风险点
- 加
--json输出标准结构化数据,含时间戳、当前值、期望值、是否合规字段,方便接入 SIEM 或 Grafana - 加
--csv导出表格,供审计留痕或做趋势分析
修复必须谨慎,只动白名单路径
自动修复不是“chmod -R 755”,而是有边界的可控动作:
- 仅对明确列入白名单的路径(如
/etc/shadow、/etc/sudoers)支持--fix参数 - 执行前自动备份原 ACL:
getfacl /etc/shadow > /root/acl_shadow.bak - 修复后不跳过验证——例如改完
/etc/ssh/sshd_config权限,立即执行sshd -t测试配置有效性 - 容器环境绕过宿主机 chmod,应在 Dockerfile 中用
RUN chmod 600 /etc/shadow+USER nonroot联合控制
嵌入流程才能长期生效
检查结果没人看、没后续动作,等于没做:
- 脚本本身纳入 Git 版本库,每次 CIS 基线更新(如从 Level 1 升级到 Level 2)都留 commit 记录并走评审
- 用 systemd timer 或 cron 每日凌晨运行,失败时通过企业微信或邮件告警
- 在 CI/CD 流水线中前置校验——比如 Ansible 执行前,先确认
/etc/sudoers是否仍为440,不合规则中断发布 - 搭配
inotifywait监控/etc目录,一旦检测到非 root 用户修改/etc/passwd,立即触发告警并记录上下文

















