应锁定/etc/passwd、/etc/shadow、/etc/group、/etc/sudoers、/etc/fstab、/etc/crypttab、/boot/grub2/grub.cfg及自定义只读服务配置,避开/resolv.conf等动态文件,按备份→验证→锁定三步执行,并配套kysec、审计监控与受控变更流程。

锁定系统关键配置文件,核心是分层设防:用 chattr +i 拦住误操作和普通恶意程序,靠 安全框架(如KYSEC) 封堵提权后的非内核级篡改,再配合 执行控制与监控 形成闭环。它不能100%防 root,但能大幅提高攻击成本、阻断绝大多数自动化篡改行为。
哪些文件该锁?只锁真正静态的关键项
加 +i 不是越多越好,锁错反而导致服务异常。优先锁定以下极少变动、系统强依赖的配置:
-
/etc/passwd、/etc/shadow、/etc/group—— 用户身份基础,但需确认 PAM 和用户管理流程已适配 -
/etc/sudoers—— 必须用visudo编辑并先通过visudo -c验证语法,否则加锁后无法更新 -
/etc/fstab、/etc/crypttab—— 挂载失败将直接导致系统无法启动 -
/boot/grub2/grub.cfg—— 防止引导配置被覆盖,但内核升级时需临时解锁并重生成 - 自定义只读服务配置,如
/etc/nginx/nginx.conf(确认不启用热重载)
明确避开这些动态文件:/etc/resolv.conf(NetworkManager 会写)、/etc/hostname(云平台自动更新)、/var/log/*(日志轮转必写)。
正确加锁三步法:备份→验证→锁定
顺序不可颠倒,跳过任一环节都可能引发故障:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 先备份原文件:例如
cp /etc/sudoers /etc/sudoers.bak - 用合规方式编辑并测试:运行
visudo -c确保语法无误;或对/etc/fstab执行mount -a测试挂载逻辑 - 执行锁定:
chattr +i /etc/sudoers;再用lsattr /etc/sudoers确认输出含i标志(如----i---------e---)
随后做一次破坏性验证:尝试 echo test >> /etc/sudoers,应返回 Operation not permitted。
生产环境必须配套的防护动作
加锁只是起点,日常运维必须建立受控流程:
- 所有变更走“临时解锁→编辑→立即重锁”闭环,建议封装为脚本,例如:
#!/bin/bash<br>chattr -i /etc/sudoers<br>visudo<br>chattr +i /etc/sudoers<br>logger "sudoers updated by $(whoami)"
- 在麒麟等信创系统中,叠加 KYSEC 内核级保护:
kysecctl --set config-immutable=on,再systemctl restart kysec持久生效 - 启用审计监控:
auditctl -w /etc/sudoers -p wa -k sudoers_protect,配合ausearch -k sudoers_protect追踪异常访问 - 若使用 FileBrowser 等 Web 文件管理工具,额外添加路径拒绝规则:
filebrowser rules add /etc/,防止界面端绕过
常见误区与风险提示
几个高频踩坑点务必注意:
- 不要盲目递归锁定整个
/etc目录 ——chattr -R +i /etc会卡死 systemd-tmpfiles、logrotate 等后台任务 - 锁定前未检查 SELinux 上下文可能导致服务启动失败,可用
ls -Z /etc/sudoers对比策略要求 - 把
chattr二进制文件移走(如挪到/tmp)看似隐蔽,实则易被检测且违反最小权限原则,不推荐 - Web 服务器场景下,网站根目录应交由专用防篡改模块(如云锁“文件防篡改”)保护,而非依赖 chattr —— 因其工作在内核驱动层,可拦截 Webshell 写入










