Was sind die Nachteile des Deaktivierens von Tinker Panic 0 in NTP?

10

Wir haben manchmal das Problem, dass neue Server die falsche Zeit im BIOS haben, so dass die Zeit um einen Monat verschoben werden kann.

Wenn Sie eine VM in VMware anhalten und dann die Suspendierung aufheben, ist auch die Zeit abgelaufen. Da NTP nach einem maximalen Offset nicht synchronisiert wird, erwäge ich die Verwendung von Tinker Panic 0 in der Datei /etc/ntp.conf.

Was ist der Grund dafür, dass es einen maximalen Standardversatz von 1000 Sekunden gibt, der dazu führt, dass NTP die Synchronisierungszeit stoppt? Wir verwenden Puppet, um NTP einzurichten. Ich denke darüber nach, Tinker Panic 0 in der ntp.conf zu setzen, damit NTP trotzdem synchronisiert wird. Was sind die Nachteile davon?

ujjain
quelle

Antworten:

8

Die Ursache dafür, dass keine Synchronisierung mit einem Server durchgeführt wird, dessen Zeit so unterschiedlich ist, wird hier dokumentiert :

5.1.1.4. Was passiert, wenn sich die Referenzzeit ändert?

Im Idealfall ist die Referenzzeit überall auf der Welt gleich. Nach der Synchronisierung sollten keine unerwarteten Änderungen zwischen der Uhr des Betriebssystems und der Referenzuhr auftreten. Daher verfügt NTP über keine speziellen Methoden, um mit der Situation umzugehen.

Stattdessen hängt die Reaktion von ntpd vom Versatz zwischen der lokalen Uhr und der Referenzzeit ab. Für einen winzigen Versatz stellt ntpd die lokale Uhr wie gewohnt ein; Bei kleinen und größeren Offsets lehnt ntpd die Referenzzeit für eine Weile ab. Im letzteren Fall wird die Uhr des Betriebssystems mit den letzten wirksamen Korrekturen fortgesetzt, während die neue Referenzzeit abgelehnt wird. Nach einiger Zeit werden kleine Offsets (deutlich weniger als eine Sekunde) gedreht (langsam eingestellt), während größere Offsets dazu führen, dass die Uhr gestuft wird (neu eingestellt). Riesige Offsets werden abgelehnt, und ntpd wird sich selbst beenden, da er glaubt, dass etwas sehr Seltsames passiert sein muss.

In meiner aktuellen NTP-Konfiguration, die ebenfalls von gesteuert wird puppet, erzwinge ich die Synchronisierung mit dem Server sowohl in der ntp.confDatei tinker panicals auch in den Daemon-Einstellungen ( /etc/sysconfig/ntpd), wie in der ntpd(8)Manpage beschrieben:

-g Normalerweise wird ntpd mit einer Meldung an das Systemprotokoll beendet, wenn der Offset den Panikschwellenwert überschreitet, der standardmäßig 1000 s beträgt. Mit dieser Option kann die Zeit ohne Einschränkung auf einen beliebigen Wert eingestellt werden. Dies kann jedoch nur einmal vorkommen. Wenn der Schwellenwert danach überschritten wird, wird ntpd mit einer Nachricht an das Systemprotokoll beendet. Diese Option kann mit den Optionen -q und -x verwendet werden.

Ich mache das, weil ich dem NTP-Server vertrauen kann, zu dem ich eine Verbindung herstelle.

Der relevante Teil des Moduls, der für die Clients gilt, lautet wie folgt:

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

}

Und der Inhalt der Dateien, auf die verwiesen wird, ist:

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

und:

$ 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

Das hieraTeil fehlt hier, aber Sie bekommen die Idee.

dawud
quelle
3

Das schlimmste Beispiel wären Angriffe auf Ihren GPS-Empfänger mit LAN-Ausrichtung. Dies hat sich als möglich erwiesen. Deshalb "verlässt" NTP in diesen Fällen eher, als dass es sofort kaputt geht. Diese Art von Problem oder plötzliche Softwarefehler wurden zur Entwurfszeit von NTP erwartet, und auch beide können auftreten.

Ein Schutzmechanismus im Algorithmus ist die Erkennung eines sogenannten Falsetickers. Dies kann jedoch nur einige Probleme erkennen, vor allem, wenn eine vorgelagerte Uhr plötzlich eine Rückwärtszeit sendet.

Wenn es nur um "falsche Uhr zur Startzeit" geht:

  • Sie können / etc / ntp / step-tickers verwenden (auf RHEL * kam Debian nie auf die Idee). Die Step-Ticker-Datei benötigt einen oder mehrere NTP-Server, um ein ntpdate auszuführen, bevor ntpd selbst gestartet wird.
  • Alternativ (oder zusätzlich) gibt es die Option -g für ntpd , die hässliche Offsets zulässt, jedoch nur, wenn sie beim Start gefunden werden.
Florian Heigl
quelle