Quali sono gli svantaggi della disabilitazione del panico tinker 0 in NTP?


10

A volte abbiamo il problema che i nuovi server hanno l'ora sbagliata nel BIOS, quindi il tempo può essere disattivato di un mese.

Quando si sospende una VM in VMware e quindi la si sospende, anche il tempo sarà spento. Poiché NTP non si sincronizza dopo un offset massimo, sto prendendo in considerazione l'utilizzo del panico tinker 0 in /etc/ntp.conf.

Qual è il motivo per cui esiste un offset massimo predefinito di 1000 secondi che causa l'interruzione del tempo di sincronizzazione di NTP? Stiamo usando Puppet per configurare NTP, sto pensando di impostarlo su tinker panic 0 in ntp.conf, quindi NTP si sincronizzerà comunque. Quali sono gli svantaggi di farlo?


Risposte:


8

La causa della mancata sincronizzazione con un server il cui orario è così diverso è documentata qui :

5.1.1.4. Cosa succede se l'ora di riferimento cambia?

Idealmente, il tempo di riferimento è lo stesso ovunque nel mondo. Una volta sincronizzato, non dovrebbero esserci cambiamenti inattesi tra l'orologio del sistema operativo e l'orologio di riferimento. Pertanto, NTP non ha metodi speciali per gestire la situazione.

Invece, la reazione di ntpd dipenderà dall'offset tra l'orologio locale e il tempo di riferimento. Per un piccolo offset ntpd regola normalmente l'orologio locale; per offset piccoli e maggiori, ntpd rifiuterà il tempo di riferimento per un po '. In quest'ultimo caso l'orologio del sistema operativo continuerà con le ultime correzioni effettive mentre il nuovo tempo di riferimento viene rifiutato. Dopo un po 'di tempo, piccoli offset (significativamente meno di un secondo) saranno ruotati (regolati lentamente), mentre offset più grandi causeranno il passo dell'orologio (impostare di nuovo). Enormi offset vengono respinti e ntpd si interromperà, credendo che debba essere successo qualcosa di molto strano.

Nella mia attuale configurazione NTP, anch'essa controllata da puppet, forzo la sincronizzazione con il server, sia nel ntp.conffile, usando tinker panic, sia nelle impostazioni del demone ( /etc/sysconfig/ntpd), come descritto nella ntpd(8)manpage:

-g Normalmente, ntpd esce con un messaggio nel registro di sistema se l'offset supera la soglia di panico, che per impostazione predefinita è 1000 s. Questa opzione consente di impostare l'ora su qualsiasi valore senza restrizioni; tuttavia, questo può succedere solo una volta. Se la soglia viene superata, ntpd uscirà con un messaggio nel registro di sistema. Questa opzione può essere utilizzata con le opzioni -q e -x.

Lo faccio perché posso fidarmi del server NTP a cui mi sto connettendo.

La parte pertinente del modulo che si applica ai client è la seguente:

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

}

E i contenuti dei file di riferimento sono:

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

e:

$ 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

Qui hieramanca la parte, ma ti viene l'idea.


3

L'esempio peggiore sarebbero gli attacchi al ricevitore GPS rivolto verso la LAN, questo è stato dimostrato possibile ed è per questo che l'NTP in questi casi "lascia" piuttosto che rompere qualsiasi cosa immediatamente. Questo tipo di problema, o si prevedevano improvvisi bug del software al momento della progettazione di NTP, e possono verificarsi entrambi.

Un meccanismo di protezione dell'algoritmo è il rilevamento di ciò che chiamano falseticker , ma può rilevare solo alcuni problemi, soprattutto se un orologio a monte invia improvvisamente un tempo all'indietro.

Se si tratta solo di "orologio sbagliato all'ora di inizio":

  • puoi usare / etc / ntp / step-ticker (su RHEL *, Debian non ha mai avuto l'idea). Il file step-tickers richiede uno o più server NTP per eseguire un ntpdate prima di avviare ntpd stesso.
  • in alternativa (o in aggiunta) c'è l' opzione -g per ntpd , che consente brutti offset, ma solo quando vengono trovati all'inizio.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.