麒麟os必须启用auditd服务并配置内核audit=1参数,再添加目录监控与系统文件规则,最后持久化规则并验证日志生成,否则文件操作无审计记录。

麒麟OS需开启内核级文件变动实时审计,才能捕获目录增删改、权限变更等操作并写入不可篡改日志,否则所有文件行为均无记录可查。
启用auditd服务并验证运行状态
auditd是麒麟OS底层审计能力的唯一入口,未启动则后续所有规则无效。
执行sudo systemctl status auditd,若返回inactive (dead)或failed,说明服务未运行。
运行sudo systemctl enable --now auditd启动服务并设为开机自启。
再次执行sudo systemctl status auditd,确认输出中同时出现active (running)和Loaded: enabled——【二者缺一不可,仅active不等于可用】。
配置内核启动参数启用审计功能
部分麒麟V10 SP2及更早版本默认禁用内核审计模块,必须手动开启,否则auditd无法捕获系统调用。
第一步:检查当前内核参数是否已启用审计:sudo cat /proc/cmdline | grep audit=1,无输出即表示未启用。
第二步:编辑GRUB配置:sudo nano /etc/default/grub,找到GRUB_CMDLINE_LINUX行,在引号内末尾添加 audit=1(注意前面留一个空格)。
第三步:生成新GRUB配置:sudo grub2-mkconfig -o /boot/grub2/grub.cfg。
第四步:重启系统:sudo reboot,重启后再次执行cat /proc/cmdline | grep audit=1确认生效。
添加文件变动监控规则
方法一:监控指定目录下的全部文件变动(推荐用于业务目录)
执行以下命令监控/home/kylin/project目录:sudo auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -S rmdir -S rename -S renameat -S chmod -S chown -S setxattr -F dir=/home/kylin/project -k project_changes。
该命令覆盖删除、重命名、权限修改、属主变更、扩展属性设置等8类核心操作,避免使用-p wa导致日志爆炸——【-p选项会记录每次写入,而真实审计只需捕获结构变更动作】。
方法二:全局监控关键系统配置文件(防绕过审计)
运行sudo auditctl -w /etc/passwd -p wa -k etc_passwd_mod和sudo auditctl -w /etc/shadow -p wa -k etc_shadow_mod。
这两条规则必须存在,否则攻击者可通过修改用户数据库绕过所有审计。
持久化审计规则防止重启失效
auditctl临时添加的规则在auditd重启或系统重启后丢失,必须写入配置文件。
将项目目录监控规则追加到/etc/audit/rules.d/project.rules:echo "-a always,exit -F arch=b64 -S unlink,unlinkat,rmdir,rename,renameat,chmod,chown,setxattr -F dir=/home/kylin/project -F key=project_changes" | sudo tee -a /etc/audit/rules.d/project.rules。
将系统文件监控规则写入/etc/audit/rules.d/system.rules:echo "-w /etc/passwd -p wa -k etc_passwd_mod" | sudo tee -a /etc/audit/rules.d/system.rules && echo "-w /etc/shadow -p wa -k etc_shadow_mod" | sudo tee -a /etc/audit/rules.d/system.rules。
重新加载全部规则:sudo augenrules --load。
验证规则已加载:sudo auditctl -l | grep project_changes,有输出即表示成功。
验证审计记录是否实时生成
在被监控目录下执行测试操作:touch /home/kylin/project/testfile && rm /home/kylin/project/testfile。
立即执行sudo ausearch -k project_changes -m SYSCALL -ts recent,应看到包含syscall=263(unlinkat)和success=yes的两条记录。
若无输出,检查sudo systemctl status auditd是否仍为running,且sudo auditctl -s | grep "enabled"返回enabled 1。
执行sudo tail -n 5 /var/log/audit/audit.log,确认最新日志时间戳与测试操作时间接近。











