我问了同样的问题特种部队但要知道这是更合适的地方。我的一台 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 管理的虚拟机,但同一刀片服务器上的其他虚拟机不存在此问题。
操作系统环境信息:
[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)
谁能给我任何关于为什么会发生这种情况的线索?多谢 :-)
答案1
Hyper-V 包括在虚拟机管理程序和 VM 内核之间工作的时间同步服务 - 不涉及用户空间进程,因此没有审核日志。
如果操作系统如您所说是一个非常旧的版本,那么这次同步服务可能会有一些旧的错误。您可能需要要求 Hyper-V 主机管理员禁用 VM 的时间同步。