如何审计系统时间更改?

环境

  • Red Hat Enterprise Linux 8
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 4

问题

  • 如何审计系统时间更改?

决议

  • 确保系统时间正确至关重要。有缺陷的程序、虚拟机监控程序时间注入或不良操作可能会导致系统时间更改。

设置审计规则

auditd服务可用于记录触发系统时间更改的所有事件。

  1. 首先检查auditd服务是否正在运行

    [root@host ~]# service auditd status
    
  2. 接下来,添加一个新规则来观察系统时间变化(系统调用adjtimexclock_settimesettimeofdayclock_adjtime

    [root@host ~]# auditctl -a exit,always -F arch=b64 -S clock_settime -S adjtimex -S settimeofday -S clock_adjtime -k ADJTIME
    [root@host ~]# auditctl -a exit,always -F arch=b32 -S clock_settime -S adjtimex -S settimeofday -S clock_adjtime -k ADJTIME
    

    在此示例中,为此审计规则定义了一个名为“ADJTIME”的过滤器关键字。

  3. 要测试审计规则,请更改系统时间,然后在审计日志中搜索定义的关键字

    [root@host ~]# hwclock --hctosys
    [root@host ~]# ausearch -k ADJTIME
    

    示例输出如下:

    time->Sat Jan 19 22:37:33 2008
    type=SYSCALL msg=audit(1200753453.330:86): arch=40000003 syscall=79 success=yes exit=0 a0=bffeb53c a1=bffeb534 a2=0 a3=0 items=0 ppid=2133 pid=3177 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 comm="hwclock" exe="/ sbin/hwclock" subj=root:system_r:unconfined_t:s0-s0:c0.c1023 key="adjtime"
    

备选的 systemtap 脚本

或者,可以使用 systemtap 脚本,但在这里使用 systemtap 不太方便,因为它需要安装 debuginfo 包。

  1. 创建timechange.stp脚本

    #!/usr/bin/env stap
    # Systemtap script to watch the system time change events by monitoring
    # adjtimex, clock_settime, settimeofday, clock_adjtime systemcalls. 
    #
    # Run Instructions:
    #   # yum install systemtap
    #   # stap-prep
    #   # stap -v <thiscript.stp>
    #
    
    probe syscall.{adjtimex, clock_settime, settimeofday, clock_adjtime}.return {
      ts = task_current()
      printf ("%s syscall_name:%s proc_name:%s uid:%ld pid:%d ppid:%d parent_proc:%s kernel_function:%s process_trace:%s cmd_line_args:%s\n",
              ctime(gettimeofday_s()), name, execname(), uid(), pid(), ppid(), pexecname(), ppfunc(), pstrace(ts), cmdline_str())
    }
    
  2. 执行脚本

    # yum -y install systemtap
    # stap-prep
    # stap -v ./timechange.stp
    

    示例输出如下:

    # stap -v timechange.stp 
    [...]
    Thu Sep 16 05:11:55 2021 syscall_name:clock_settime proc_name:ntpdate uid:0 pid:22893 ppid:9195 parent_proc:bash kernel_function:SyS_clock_settime process_trace: ntpdate(22893) bash(9195) sshd(9184) sshd(1240) cmd_line_args:ntpdate -u 0.rhel.pool.ntp.org
    Thu Sep 16 06:59:35 2021 syscall_name:adjtimex proc_name:ntpd uid:38 pid:997 ppid:1 parent_proc:systemd kernel_function:SyS_adjtimex process_trace: ntpd(997) cmd_line_args:/usr/sbin/ntpd -u ntp:ntp -x
    Thu Sep 16 07:02:41 2021 syscall_name:clock_settime proc_name:date uid:0 pid:23717 ppid:9195 parent_proc:bash kernel_function:SyS_clock_settime process_trace: date(23717) bash(9195) sshd(9184) sshd(1240) cmd_line_args:date -s Thu Sep 16 10:29:16 2021
    Thu Sep 16 04:59:23 2021 syscall_name:settimeofday proc_name:systemd-timedat uid:0 pid:23734 ppid:1 parent_proc:systemd kernel_function:SyS_settimeofday process_trace: systemd-timedat(23734) cmd_line_args:/usr/lib/systemd/systemd-timedated
    Thu Sep 16 05:18:50 2021 syscall_name:settimeofday proc_name:hwclock uid:0 pid:24794 ppid:9195 parent_proc:bash kernel_function:SyS_settimeofday process_trace: hwclock(24794) bash(9195) sshd(9184) sshd(1240) cmd_line_args:hwclock --hctosys
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值