¿Cuáles son las desventajas de deshabilitar tinker panic 0 en NTP?

10

A veces tenemos el problema de que los nuevos servidores tienen un tiempo incorrecto en la BIOS, por lo que el tiempo puede estar apagado por un mes.

Cuando suspende una VM en VMware y luego la suspende, el tiempo también estará apagado. Debido a que NTP no se sincroniza después de un desplazamiento máximo, estoy considerando usar tinker panic 0 en /etc/ntp.conf.

¿Cuál es la razón por la que hay un desplazamiento máximo predeterminado de 1000 segundos que hace que NTP deje de sincronizar el tiempo? Estamos usando Puppet para configurar NTP, estoy considerando configurarlo para ajustar el pánico del tinker 0 en ntp.conf, por lo que NTP se sincronizará de todos modos. ¿Cuáles son las desventajas de hacer esto?

ujjain
fuente

Respuestas:

8

La causa de no sincronizar con un servidor cuyo tiempo es tan diferente se documenta aquí :

5.1.1.4. ¿Qué sucede si cambia el tiempo de referencia?

Idealmente, el tiempo de referencia es el mismo en todo el mundo. Una vez sincronizado, no debe haber cambios inesperados entre el reloj del sistema operativo y el reloj de referencia. Por lo tanto, NTP no tiene métodos especiales para manejar la situación.

En cambio, la reacción de ntpd dependerá del desplazamiento entre el reloj local y el tiempo de referencia. Para un pequeño desplazamiento, ntpd ajustará el reloj local como de costumbre; para compensaciones pequeñas y grandes, ntpd rechazará el tiempo de referencia por un tiempo. En este último caso, el reloj del sistema operativo continuará con las últimas correcciones efectivas mientras se rechaza el nuevo tiempo de referencia. Después de un tiempo, las pequeñas compensaciones (significativamente menos de un segundo) se desplazarán (ajustarán lentamente), mientras que las compensaciones más grandes harán que el reloj se acelere (vuelva a configurar). Se rechazan enormes compensaciones y ntpd terminará por sí mismo, creyendo que algo muy extraño debe haber sucedido.

En mi configuración actual de NTP, también controlada por puppet, fuerzo la sincronización con el servidor, tanto en el ntp.confarchivo, usando tinker paniccomo en la configuración del demonio ( /etc/sysconfig/ntpd), como se describe en la página de ntpd(8)manual:

-g Normalmente, ntpd sale con un mensaje al registro del sistema si el desplazamiento excede el umbral de pánico, que es 1000 s por defecto. Esta opción permite establecer el tiempo en cualquier valor sin restricción; Sin embargo, esto puede suceder solo una vez. Si se supera el umbral después de eso, ntpd saldrá con un mensaje al registro del sistema. Esta opción se puede usar con las opciones -q y -x.

Hago esto porque puedo confiar en el servidor NTP al que me estoy conectando.

La parte relevante del módulo que se aplica a los clientes es la siguiente:

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'],
  }

}

Y los contenidos de los archivos referenciados son:

$ 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"

y:

$ 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

La hieraparte que falta aquí, pero se entiende la idea.

Dawud
fuente
3

El peor de los casos serían los ataques a su receptor GPS con conexión LAN, esto se ha demostrado posible y es la razón por la cual NTP en esos casos "se va" en lugar de romper cualquier cosa de inmediato. Este tipo de problema, o errores de software repentinos se esperaban en el tiempo de diseño de NTP, y también pueden suceder ambos.

Un mecanismo de protección en el algoritmo es la detección de lo que llaman falseticker , pero eso solo puede detectar algunos problemas, principalmente si un reloj aguas arriba envía un tiempo hacia atrás de repente.

Si solo se trata de "reloj equivocado a la hora de inicio":

  • puede usar / etc / ntp / step-tickers (en RHEL *, Debian nunca tuvo la idea). El archivo step-tickers toma uno o más servidores NTP para ejecutar un ntpdate antes de iniciar ntpd.
  • alternativamente (o además) está la opción -g para ntpd , que permite desplazamientos feos, pero solo cuando se encuentran al inicio.
Florian Heigl
fuente