auditd能直接捕获系统时间修改行为,因其监控settimeofday、clock_settime、adjtimex及stime等内核系统调用,需在b64/b32双架构下配置规则并持久化,结合auid、uid、exe等字段实现精准溯源与风险识别。

auditd 能直接捕获系统时间修改行为,因为所有时间变更操作(如 date、clock_settime、adjtimex 等)都需调用内核系统调用,auditd 正是基于此机制实现精准审计。
监控时间变更相关系统调用
时间篡改主要触发以下系统调用,需在 auditd 规则中显式跟踪:
- settimeofday:传统时间设置接口(32位兼容)
- clock_settime:POSIX 标准接口,用于设置 CLOCK_REALTIME 等时钟
- adjtimex:调整系统时钟频率和偏移(常被用于隐蔽微调)
- stime:已废弃但部分旧工具仍可能调用,建议一并覆盖
添加规则示例(x86_64 架构):
sudo auditctl -a always,exit -F arch=b64 -S settimeofday,clock_settime,adjtimex -k time_change sudo auditctl -a always,exit -F arch=b32 -S settimeofday,clock_settime,adjtimex,stime -k time_change
确保规则持久化并生效
临时规则重启后失效,必须写入配置文件:
- 新建规则文件:
sudo tee /etc/audit/rules.d/15-time-change.rules <<EOF<br>-a always,exit -F arch=b64 -S settimeofday,clock_settime,adjtimex -k time_change<br>-a always,exit -F arch=b32 -S settimeofday,clock_settime,adjtimex,stime -k time_change<br>EOF
- 重载全部规则:
sudo augenrules --load - 验证是否加载:
sudo auditctl -l | grep time_change
验证与日志分析方法
触发一次时间修改(如 sudo date -s "2026-09-25 02:10:00"),然后立即检索审计记录:
- 查最近的 time_change 事件:
sudo ausearch -k time_change -ts recent | aureport -f -i - 查看完整上下文(含用户、命令行、进程树):
sudo ausearch -k time_change -i --start recent - 关键字段关注:
auid(原始登录用户)、uid(执行者)、exe(执行路径)、comm(命令名)、res=success或res=failed
配合其他防护手段提升实效性
单靠审计不能阻止篡改,需结合权限控制与服务加固:
- 禁用非必要用户的
date命令执行权:移除其所在组对/bin/date的执行权限,或用chmod 750 /bin/date并仅保留 root 和特定管理组 - 若使用 chrony,确认
rtcsync已启用且makestep配置合理,避免人为干预成为常态 - 检查是否存在未授权的定时任务或 systemd timer 修改时间(如
grep -r "date\|timedatectl" /etc/cron* /var/spool/cron/)


















