我在SOF上问了同样的问题,但被告知这是更合适的地方。我的一台 Linux 机器上的系统时间有一个非常奇怪的问题,系统时间被某些东西自动更改为比我的本地时间提前 40 秒。无论我什么时候重置,它都会在几秒钟后改变,你可以从下面的输出中看到:
[root@node ~]# date; date -s "2018-01-23 14:06:40";sleep 5;date
Tue Jan 23 14:07:21 CST 2018
Tue Jan 23 14:06:40 CST 2018
Tue Jan 23 14:07:26 CST 2018
该ntpd
服务已停止,并且没有运行 cronjob 来更改系统时间。我试图添加审计规则来跟踪时间变化的事件,但没有任何记录,审计规则附加到/etc/audit/audit.rules
:
-a always,exit -F arch=b64 -S clock_adjtime -S adjtimex -S time -S timer_settime -S settimeofday -S clock_settime -k time_change
-w /etc/localtime -p rxwa -k access_localtime
-w /etc/adjtime -p rxwa -k access_adjtime
之后,我可以通过以下任service auditd restart
一方式查看时间更改日志:/var/log/audit/audit.log
ntpdate time.windows.com
[root@node ~]# ntpdate time.windows.com
23 Jan 13:08:24 ntpdate[14584]: step time server 52.178.161.41 offset -61.612892 sec
Logs of the above command:
type=SYSCALL msg=audit(1516684164.838:3093): arch=c000003e syscall=223 success=yes exit=0 a0=0 a1=0 a2=7fff507e2600 a3=0 items=0 ppid=14397 pid=14584 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=47 comm="ntpdate" exe="/usr/sbin/ntpdate" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="time_change"
type=SYSCALL msg=audit(1516684166.521:3094): arch=c000003e syscall=227 success=yes exit=0 a0=0 a1=7fff507e2110 a2=0 a3=0 items=0 ppid=14397 pid=14584 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=47 comm="ntpdate" exe="/usr/sbin/ntpdate" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="time_change"
或通过date -s <date-time>
:
[root@node ~]# date -s "2018-01-23 13:12:30"
Tue Jan 23 13:12:30 CST 2018
Logs of the above command:
type=SYSCALL msg=audit(1516684402.125:3110): arch=c000003e syscall=227 success=yes exit=0 a0=0 a1=7fff55d0ced0 a2=0 a3=112e0be826d694b3 items=0 ppid=14397 pid=14626 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=47 comm="date" exe="/bin/date" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="time_change"
但是没有任何有用的审计日志,时间很快就会再次改变。顺便说一句,这是刀片服务器上由 Hyper-V 管理的虚拟机,但在同一刀片服务器上的其他 VM 上则没有这样的问题。
操作系统环境信息:
[root@node ~]# uname -a
Linux node 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@node ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
谁能给我任何关于为什么会发生这种情况的线索?非常感谢 :-)
Hyper-V 包括一个时间同步服务,它在管理程序和虚拟机内核之间工作——不涉及用户空间进程,因此没有审计日志。
如果操作系统是您所说的非常旧的版本,则此时间同步服务可能存在一些旧错误。您可能需要让 Hyper-V 主机管理员禁用您的 VM 的时间同步。