必须加不可变锁的核心配置文件包括/etc/passwd、/etc/shadow、/etc/group、/etc/sudoers、/etc/fstab、/etc/crypttab和/boot/grub2/grub.cfg,锁定前须严格遵循备份→验证→锁定三步法,并配套审计闭环、kysec加固及auditd监控。

直接锁定关键配置文件并同步记录每一次变更,是防篡改最务实的组合动作。核心不是追求绝对不可改,而是让修改可追溯、需授权、留证据。
哪些配置文件必须加不可变锁
只锁真正静态、系统强依赖、极少更新的核心项,锁错会导致服务启动失败或功能异常:
- /etc/passwd、/etc/shadow、/etc/group:用户身份基石,但需确认PAM流程和用户管理工具(如useradd)已适配锁定状态
-
/etc/sudoers:必须用
visudo -c验证语法后再加锁,否则一次错误将导致sudo失效 - /etc/fstab、/etc/crypttab:挂载逻辑出错会直接卡在开机阶段
-
/boot/grub2/grub.cfg:防止引导被恶意覆盖;注意内核升级后需临时解锁+
grub2-mkconfig重生成 -
自定义只读服务主配置:如
/etc/nginx/nginx.conf,前提是不启用热重载(reload)机制
明确避开动态文件:/etc/resolv.conf(NetworkManager写)、/etc/hostname(云平台自动更新)、/var/log/*(日志轮转必写)——这些加+i会立即引发故障。
三步安全加锁法:备份→验证→锁定
顺序不能颠倒,跳过任一环节都可能造成生产中断:
- 先备份原文件:
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 chattr -i /etc/sudoers visudo chattr +i /etc/sudoers logger "sudoers updated by $(whoami) at $(date)"
- 在麒麟等信创系统中叠加KYSEC内核级防护:
kysecctl --set config-immutable=on,再systemctl restart kysec - 启用auditd实时监控:
auditctl -w /etc/sudoers -p wa -k sudoers_protect,后续用ausearch -k sudoers_protect查谁、何时、以何种方式访问过 - 审计日志必须外发至独立syslog服务器,并开启TLS加密,避免本地被清除
配套监控与告警不能少
静态锁定无法覆盖所有场景,必须靠运行时监控兜底:
- 部署AIDE定期扫描关键配置哈希与属性,比对基线差异
- 对
/etc/sudoers类高危文件的修改,设置分级响应:检测到变更立即阻断SSH登录、邮件+短信通知管理员 - 所有审计日志条目需含:操作者、时间戳、源IP、原始值、新值、调用命令(如
visudo)、签名哈希 - 日志存储建议使用WORM(一次写入多次读取)模式的对象存储或专用审计数据库,从存储层杜绝覆盖可能











