KYSEC可实现关键文件的防护—拦截—留痕三层闭环:通过kysec_set -n protect -vreadonly设只读保护(root亦不可改),自动记录拦截事件至审计日志,并支持策略化例外管理与SIEM对接。

对系统关键业务文件实施审计+只读保护+防篡改追踪,不是堆砌工具,而是构建“防护—拦截—留痕”三层闭环。核心在于:让文件既不能被随意改,又能在异常操作发生时精准定位谁、何时、用什么方式动了它。
一、用文件属性实现强只读保护(防误删/防恶意覆盖)
传统 chmod 权限对 root 无效,真正兜底靠的是底层文件属性。最常用且有效的就是 +i(不可变)和 +a(仅追加):
-
+i 用于静态配置文件:如 /etc/nginx/nginx.conf、/etc/passwd、/etc/sudoers。执行
sudo chattr +i /etc/nginx/nginx.conf后,即使 root 也无法删除、重命名、修改内容或创建硬链接;解除需sudo chattr -i -
+a 用于日志类文件:如 /var/log/app-access.log。执行
sudo chattr +a /var/log/app-access.log后,仅允许echo "xxx" >> file追加,禁止覆盖(>)、截断(truncate)或编辑 - 验证是否生效:用
lsattr /path/to/file查看,带i或a标识即已启用;尝试修改会明确报错Operation not permitted
二、用 auditd 实现操作级审计追踪(谁在什么时候改了什么)
chattr 防得住动作,但不记录动作——auditd 补上这一环。它直接监听内核系统调用,绕过用户态权限判断,真实可靠:
- 监控指定目录(含子目录)的写和属性变更:
sudo auditctl -a always,exit -F arch=b64 -F dir=/opt/app/config -F perm=wa -k app_config_audit - 捕获更细粒度行为(如重命名、删除、清空):
sudo auditctl -a always,exit -F arch=b64 -S open,openat,rename,unlink,truncate -F dir=/opt/app/config -k app_config_detail - 查日志用:
ausearch -k app_config_audit -i | grep -E "(comm=|name=|syscall=)",可快速定位进程名(comm)、执行路径(exe)、目标文件(name)和操作类型(syscall=openat/write)
三、用 KYSEC 做策略化保护(区分意图,支持审计联动)
在银河麒麟等国产系统中,KYSEC 提供比 chattr 更精细的控制能力,尤其适合生产环境:
- 标记文件为只读保护:
sudo kysec_set -n protect -vreadonly /opt/app/conf/db.properties,该保护对普通用户和 root 均生效,且不依赖文件系统类型 - 自动记录每次拦截事件到系统审计日志,与 auditd 日志可交叉比对;支持按标签(-k)归集,便于对接 SIEM 系统
- 区别于 chattr:KYSEC 可设置例外策略(如仅允许某运维脚本修改),支持策略启停、批量标记、图形化管理,更适合合规场景下的策略治理
四、组合使用建议与避坑提醒
单一手段总有盲区,组合才能形成纵深:
- 基础层:对核心配置文件用
chattr +i,确保物理级不可改;对日志用chattr +a,防止历史被抹除 - 审计层:用
auditd全量捕获所有写/属性操作,保留至少 90 天原始日志,并定期导出做离线分析 - 增强层:在信创环境中,优先启用 KYSEC 替代部分 chattr 场景,获得可管可控的策略视图和审计溯源能力
- 注意:auditd 规则需写入
/etc/audit/rules.d/下持久化配置,否则重启失效;KYSEC 策略需配合kysec_ctl status定期检查运行状态

















