Quels sont les inconvénients de désactiver la panique Tinker 0 dans NTP?

10

Nous avons parfois le problème que les nouveaux serveurs ont le mauvais moment dans le BIOS, donc il peut y avoir du temps d'un mois.

Lorsque vous suspendez une machine virtuelle dans VMware, puis la suspendez, l'heure est également désactivée. Parce que NTP ne se synchronise pas après un décalage maximum, j'envisage d'utiliser la panique 0 de bricolage dans /etc/ntp.conf.

Quelle est la raison pour laquelle il existe un décalage maximal par défaut de 1000 secondes qui provoque l'arrêt de la synchronisation par NTP? Nous utilisons Puppet pour configurer NTP, j'envisage de lui faire régler la panique 0 de bricolage dans le ntp.conf, donc NTP se synchronisera quand même. Quels sont les inconvénients de faire cela?

ujjain
la source

Réponses:

8

La cause de la non-synchronisation avec un serveur dont l'heure est si différente est documentée ici :

5.1.1.4. Que se passe-t-il si l'heure de référence change?

Idéalement, l'heure de référence est la même partout dans le monde. Une fois synchronisé, il ne devrait y avoir aucun changement inattendu entre l'horloge du système d'exploitation et l'horloge de référence. Par conséquent, NTP n'a pas de méthodes spéciales pour gérer la situation.

Au lieu de cela, la réaction de ntpd dépendra du décalage entre l'horloge locale et l'heure de référence. Pour un petit décalage, ntpd ajustera l'horloge locale comme d'habitude; pour les décalages petits et plus grands, ntpd rejettera le temps de référence pendant un certain temps. Dans ce dernier cas, l'horloge du système d'exploitation continuera avec les dernières corrections effectives pendant le rejet de la nouvelle heure de référence. Après un certain temps, de petits décalages (nettement moins d'une seconde) seront orientés (ajustés lentement), tandis que des décalages plus importants entraîneront un décalage de l'horloge (réglé à nouveau). Les compensations énormes sont rejetées et ntpd se terminera lui-même, croyant que quelque chose de très étrange doit s'être produit.

Dans ma configuration NTP actuelle, également contrôlée par puppet, je force la synchronisation avec le serveur, à la fois dans le ntp.conffichier, en utilisant tinker panicet dans les paramètres du démon ( /etc/sysconfig/ntpd), comme décrit dans la ntpd(8)page de manuel:

-g Normalement, ntpd se termine avec un message dans le journal système si le décalage dépasse le seuil de panique, qui est de 1000 s par défaut. Cette option permet de régler l'heure sur n'importe quelle valeur sans restriction; cependant, cela ne peut se produire qu'une seule fois. Si le seuil est dépassé après cela, ntpd se fermera avec un message dans le journal système. Cette option peut être utilisée avec les options -q et -x.

Je le fais parce que je peux faire confiance au serveur NTP auquel je me connecte.

La partie pertinente du module qui s'applique aux clients est la suivante:

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

}

Et le contenu des fichiers référencés est:

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

et:

$ 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 hierapartie manque ici, mais vous avez l'idée.

dawud
la source
3

Le pire exemple serait des attaques sur votre récepteur GPS orienté LAN, cela a été prouvé possible et c'est pourquoi NTP dans ces cas "quitte" plutôt que de casser quoi que ce soit immédiatement. Ce type de problème, ou des bogues logiciels soudains étaient attendus au moment de la conception de NTP, et les deux peuvent également se produire.

Un mécanisme de protection dans l'algorithme est la détection de ce qu'ils appellent un faux autocollant , mais cela ne peut détecter que certains problèmes, surtout si une horloge en amont envoie un temps en arrière tout d'un coup.

S'il s'agit uniquement d'une "mauvaise horloge à l'heure de démarrage":

  • vous pouvez utiliser / etc / ntp / step-tickers (sur RHEL *, Debian n'a jamais eu l'idée). Le fichier step-tickers prend un ou plusieurs serveurs NTP pour exécuter un ntpdate avant de démarrer ntpd lui-même.
  • alternativement (ou en plus) il y a l' option -g pour ntpd , qui permet des décalages moches, mais seulement quand ils sont trouvés au démarrage.
Florian Heigl
la source