在NTP中禁用修补程序panic 0的缺点是什么?

我们有时会遇到这样的问题,即新服务器在BIOS中有错误的时间,所以有时间可以closures一个月。

当你在VMware中暂停虚拟机,然后取消暂停,时间也会消失。 由于NTP在最大偏移量之后不同步,因此我正考虑在/etc/ntp.conf中使用修补程序恐慌0。

什么原因导致NTP停止同步时间的默认最大偏移量为1000秒? 我们使用Puppet来设置NTP,我正在考虑在ntp.conf中设置tinker panic 0,所以NTP会同步。 这样做的缺点是什么?

不同步时间如此不同的服务器的原因logging在这里 :

5.1.1.4。 如果参考时间改变会发生什么?

理想情况下,世界各地的参考时间是一样的。 一旦同步,操作系统的时钟和参考时钟之间不应该有任何意外的变化。 所以NTP没有特殊的处理方法。

相反,ntpd的反应将取决于本地时钟和参考时间之间的偏移量。 对于一个微小的偏移,ntpd将像往常一样调整本地时钟; 对于较小和较大的偏移量,ntpd会暂时拒绝参考时间。 在后一种情况下,当新的参考时间被拒绝时,操作系统的时钟将继续有效的最后校正。 经过一段时间后,小偏移量(大大小于1秒)将被转换(缓慢调整),而较大的偏移量将导致时钟步进(重新设置)。 巨大的抵消被拒绝,ntpd将自行终止,相信一定会发生一些非常奇怪的事情。

在我当前的NTPconfiguration中,也是由puppet控制的,我强制与服务器进行同步,无论是在ntp.conf文件中,使用tinker panic还是在守护进程设置( /etc/sysconfig/ntpd )中,如ntpd(8) manpage:

-g通常情况下,如果偏移量超过了恐慌阈值(默认为1000秒),则ntpd会退出并向系统日志发送消息。 这个选项允许时间被设置为任何值,没有限制; 但是,这只能发生一次。 如果超过此阈值,ntpd将会退出并显示一条消息给系统日志。 该选项可以与-q和-x选项一起使用。

我这样做是因为我可以信任我要连接的NTP服务器。

适用于客户端的模块的相关部分如下:

 class ntp ( $foo $bar ... ){ $my_files = { 'ntp.conf' => { path => '/etc/ntp.conf', content => template("ntp/ntp.conf.$template.erb"), selrole => 'object_r', seltype => 'net_conf_t', require => Package['ntp'], }, 'ntp-sysconfig' => { path => '/etc/sysconfig/ntpd', source => 'puppet:///modules/ntp/ntp-sysconfig', require => Package['ntp'], }, ... } $my_files_defaults = { ensure => file, owner => 'root', group => 'root', mode => '0644', selrange => 's0', selrole => 'object_r', seltype => 'etc_t', seluser => 'system_u', } create_resources(file, $my_files, $my_files_defaults) exec { 'ntp initial clock set': command => '/usr/sbin/ntpd -g -q -u ntp:ntp', refreshonly => true, timeout => '-1', subscribe => File['/etc/ntp.conf'], } } 

而引用文件的内容是:

 $ cat devops/puppet/modules/ntp/files/ntp-sysconfig # Drop root to id 'ntp:ntp' by default. OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g -a" 

和:

 $ cat devops/puppet/modules/ntp/templates/ntp.conf.RedHat.erb # HEADER: This file was autogenerated by puppet. # HEADER: While it can still be managed manually, it # HEADER: is definitely not recommended. tinker panic 0 <% server.each do |ntpserver| -%> server <%= ntpserver %> autokey <% end -%> server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10 driftfile /var/lib/ntp/drift crypto pw hunter2 crypto randfile /dev/urandom keysdir /etc/ntp 

hiera部分在这里不见了,但你明白了。

最糟糕的例子就是对面向局域网的GPS接收器的攻击,这已经被certificate是可能的,这就是为什么在这种情况下NTP比“离开”而不是立即破坏任何东西。 在NTP的devise时间,这种问题或突发的软件错误是可以预料的,而且两者都可能发生。

algorithm中的一种保护机制是检测他们所谓的假码器 ,但是这只能检测到一些问题,大部分情况下,如果上游时钟突然发回一个落后的时间。

如果只是关于“开始时间错误的时钟”:

  • 你可以使用/ etc / ntp / step-tickers (在RHEL *上,Debian从来没有这个想法)。 step-tickers文件需要一个或多个NTP服务器在启动ntpd之前运行ntpdate。
  • 另外(或另外)有ntpd-g选项,它允许丑陋的补偿,但只有当他们在开始时被发现。