GNU/Linux >> LINUX-Kenntnisse >  >> Linux

NTP-Server und Best Practices

NTP steht für „Network Time Protocol“. Es ist ein Protokoll, das von mit dem Internet verbundenen Geräten verwendet wird, um die Zeit ihrer Systeme mit einer Zeitreferenz zu synchronisieren. Es gibt verschiedene wichtige Punkte, warum es wichtig ist, die genaue Zeit beizubehalten, und die Arbeitsprinzipien von NTP sind elementar, aber erstaunlich.

Wir haben kürzlich einen Artikel über die Einrichtung des NTP-Servers und -Clients auf Ubuntu-basierten Distributionen veröffentlicht. Dies erfordert eine detaillierte Beschreibung, wie genau NTP funktioniert und warum es wichtig ist.

Was ist die Anforderung an die genaue Zeit?

Lassen Sie uns zuerst sehen, warum überhaupt eine so tiefgreifende Infrastruktur entwickelt wurde, damit unsere Maschinen die genaue Zeit verwenden konnten.

Drift tritt auf

Wann immer Sie ein Computersystem verwenden, ist es eine gut beobachtete Tatsache, dass die Hardware-Uhr mit der Zeit nachläuft. Dieser Effekt kann sich teilweise sogar zu einer hohen Ungenauigkeit summieren. Dies ist offensichtlich kein erwünschter Effekt, daher ist es ratsam, die Zeitsynchronisation zu verwenden.

Protokollverwaltung

Wenn es ein Netzwerk mit mehreren Geräten gibt und ein Problem auftritt, betrifft das mehrere Systeme im Netzwerk. Der beste Weg, um das Problem zu verfolgen und herauszufinden, was passiert ist, besteht darin, die Systemprotokolle zu überprüfen (mehr über das Überprüfen von Protokolldateien hier). Wenn eines dieser Systeme einige Sekunden hinterherhinkt, scheint es vor dem anderen System betroffen zu sein, das tatsächlich zuerst betroffen war. Dies macht es schwierig, Fehler zu beheben und im Allgemeinen mehrere Systeme in einem Netzwerk zu verwalten. Dies war nur ein Beispiel, aber es gibt noch viele weitere und ernsthafte Möglichkeiten.

Transaktionen

Über das Internet werden verschiedene Arten von Transaktionen durchgeführt. Wenn Ihre Systemuhr der tatsächlichen Zeit vorausgeht, kann es manchmal vorkommen, dass in den Systemprotokollen der Zahlung angezeigt wird, dass die Zahlung eingegangen ist, bevor Sie den Betrag tatsächlich bezahlt haben. Dadurch wird die Zahlung als nicht Ihre gewertet und es entstehen weitere Probleme.

Oder in einem ähnlichen Fall kann es aufgrund von Zeitungenauigkeiten oft vorkommen, dass Ihr Empfänger eine Antwort auf Ihre E-Mail sendet, bevor Sie die E-Mail überhaupt gesendet haben. Wie Sie sich vorstellen können, kann die Zeitgenauigkeit über zwei verschiedene Systeme im Internet die Wurzel mehrerer potenziell schädlicher Folgen sein.

Befehlsausführung

In einem Netzwerk werden oft Skripte geschrieben, um Aufgaben auszuführen, die über mehrere Systeme orchestriert werden. Wenn ein solches Skript Zeitparameter hat, kann es durcheinander kommen, wenn ein System eine ungenaue Zeit hat. Einige Befehle werden ausgeführt, bevor dies erforderlich ist, oder nachdem der gesamte Prozess sabotiert wurde. Das ist natürlich nicht gut.

Auch hier würde Ihr GPS nicht richtig funktionieren, wenn die Zeit zwischen Ihrem System und dem GPS-Satelliten nicht richtig synchronisiert ist.

Wie funktioniert es?

Daher haben wir mehrere Gründe gesehen, warum die Aufrechterhaltung einer genauen Zeit über ein Netzwerk sehr wichtig ist, um Szenarien und unser tägliches Leben zu integrieren. Zum Glück für uns ist dies nicht sehr schwer zu erreichen. Mit NTP können wir dies ermöglichen. Aber wie macht NTP das möglich? Mal sehen.

Zeitquellen

Die ultimativen Zeitquellen müssen natürlich äußerst präzise sein. Diese Zeitquellen gehören derzeit zu den besten, die wissenschaftlich möglich sind, allen voran Atomuhren , die 9192631770 Strahlungszyklen verwenden, die dem Übergang zwischen zwei Energieniveaus des Cäsium-133-Atoms im Grundzustand als eine Sekunde entsprechen. Abgesehen davon kann den Empfängern für Zeitsignale, die von einigen nationalen Standardagenturen ausgestrahlt werden, die genaue Zeit anvertraut werden.

Diese Zeitquellen sollen im Stratum 0 liegen Stufe. Das Stratum-Konzept funktioniert wie beschrieben:

Schichtkonzept

Stratum bedeutet wörtlich „eine aus einer Reihe von Schichten, Ebenen oder Abstufungen in einem geordneten System“, und so wird es auch im Zusammenhang mit NTP verwendet. Das Stratum 0-Niveau ist die genaueste mögliche Zeit. Wenn ein Server die Zeit mit einer Stratum-0-Zeitquelle synchronisiert, handelt es sich um eine Stratum-1-Zeitquelle. Und wenn er Zeit für einen anderen Server bereitstellt, ist dieser Server eine Stratum-2-Zeitquelle. Während die Layer weiter ansteigen, steigt normalerweise auch die dem Server zugewiesene Stratum-Nummer weiter an. Je niedriger also die einem Server zugewiesene Stratum-Nummer, desto genauer wäre die Zeit.

Die Stratum-Ebenen werden bis Stratum 16 betrachtet, danach ist der Zeitunterschied zu groß. In vielen Szenarien wird nur empfohlen, Server bis zu Stratum 4 zu verwenden.

Stratum 1-Server

Ein Stratum-0-Level-Server darf nicht von normalen Benutzern wie uns verwendet werden. Atomuhren und Zeitquellen der nationalen Behörden werden direkt von der Regierung verwaltet.

Weiter oben in der Zeile ist ein Stratum 1-Server ein Server, der direkt mit einer Hardwareuhr verbunden ist, die sich auf den Stratum 0-Ebenen befindet. Dies ist der bestmögliche Zeitquellenserver, da das Stratum 0 eigentlich kein Server, sondern eine Uhr ist. Der Server, mit dem tatsächlich eine Verbindung hergestellt werden kann, ist der Stratum 1-Server, der die Zeit direkt von der Hardware-Uhr erhält.

Ein Stratum 1 Server muss präzise und gepflegt sein. Es sollte auch hochverfügbar sein, da andere Systeme möglicherweise auf seinen Zeitdienst angewiesen sind.

Zeitsynchronisierungsprozess

Um das NTP auf Ihrem System einzurichten, müssen Sie zunächst die Server auswählen, mit denen Sie die Zeit synchronisieren möchten. Dazu können Sie den Server auswählen, den Sie verwenden möchten, und die Einstellungen Ihrer Systemsoftware konfigurieren.

Wie die Zeit synchronisiert wird

Der Synchronisierungsprozess beginnt damit, dass das System und der NTP-Server für längere Zeit mehrere Datenpakete austauschen. Was tatsächlich passiert, ist, dass die Zeit berechnet wird, die das Paket benötigt, um einen Roundtrip zum NTP-Server und zurück zu absolvieren. In diesen Datenpaketen wird vom NTP-Server die Zeit mitgesendet und die errechnete Fahrzeit entsprechend abgezogen. Zum Beispiel:

Das System hat die Zeit 17:00:05, wenn es das Paket sendet. Das System erhält nun um 17:00:11 die Antwort vom NTP-Server. Der NTP-Server hat die Zeitinformation gesendet, dass es gerade 17:05:23 ist. Aber wenn Sie sich die Reisezeit des Pakets ansehen, die 6 Sekunden beträgt, bedeutet dies, dass es 3 Sekunden dauerte, um zum Server zu gelangen, und 3 weitere, um zurückzukommen. Dies bedeutet, dass die Zeit vor 17:05:23 3 Sekunden war, nicht im Moment. Die Uhrzeit wird also entsprechend auf 17:05:26 angepasst.

(Ich habe die Skala natürlich sehr stark vergrößert, aber das dient nur der Erklärung. Diese Unterschiede sind in Wirklichkeit Millisekunden, aber die Logik ist die gleiche).

Dieser gesamte Paketaustauschprozess dauert etwa 5 Minuten, um die korrekte Zeit sicherzustellen und sicherzustellen, dass der Offset behoben wurde. Offensichtlich ist die Zeit umso genauer, je kürzer, konsistenter und symmetrischer der Paketaustausch ist. Das NTP-Protokoll verwendet für diesen Prozess UDP- und IP-Pakete aufgrund ihrer Geschwindigkeit und Zuverlässigkeit. Der verwendete Port ist 123. Es wird gesagt, dass die Zeitgenauigkeit typischerweise zwischen 5-100 ms liegt.

Wenn der Zeitunterschied zwischen dem NTP-Server und dem System klein genug ist, wird es ihn schnell ändern. Wenn der Zeitunterschied groß ist, wird die Zeit ständig mit kleinen Unterschieden geändert, bis sie korrigiert wird.

Best Practices

Mehrere Server haben

Dies ist die am meisten empfohlene Praxis:mehrere redundante NTP-Server zu haben, wenn der eine Fehlfunktionen verwendet oder aus irgendeinem Grund ungenau wird. Es entsteht kein großer Verlust, wenn das Netzwerk sofort mit einem anderen NTP-Server verbunden werden kann. Darüber hinaus ist es noch besser, wenn Sie Skripte einrichten können, die das Netzwerk automatisch aktivieren und mit einem der redundanten Server verbinden können, wenn bestimmte offensichtliche Hinweise gegeben werden (z. B. keine Pakete vom NTP-Server empfangen usw.).

Berücksichtigen Sie das Netzwerk-Layout

Das Netzwerk sollte so strukturiert sein, dass die Systeme, die eine genauere Zeit benötigen, physisch näher und direkt mit dem NTP-Server verbunden sind. Wenn Subnetzwerke vorhanden sind, sollten sie für Aufgaben verwendet werden, die relativ keine genaue Zeit erfordern.

Sichere NTP-Kommunikation

Da NTP auf UDP basiert, ist es ein Protokoll, das sich auf ziemlich viel konzentriert, sodass es je nach System potenzielle Schwachstellen geben kann. Es ist immer eine gute Idee, die NTP-Verbindung mit Authentifizierung zu sichern.

Zugriff einschränken

Der Schutz des Netzwerks vor externen Angreifern ist natürlich wichtig, aber auch das Verhindern von Missbrauch. Indem Sie den Zugriff auf die NTP-Server auf die absolute Mindestanzahl von Personen beschränken, können Sie sicherstellen, dass so wenig menschliche Fehler wie möglich auftreten, und darüber hinaus können Sie sicher sein, dass sie nicht von jemandem bearbeitet werden, der dies nicht getan hat das technische Verständnis, das Netzwerk tatsächlich zu handhaben.

Vermeiden Sie Zeitschleifen

Abgesehen von Sci-Fi-Perspektiven sollten Sie immer darauf achten, Zeitschleifen in der Netzwerkstruktur zu vermeiden. Angenommen, A fungiert als Server für B und B für C. Wenn nun C erneut als Server für A zugewiesen wird, können die Dinge unordentlich werden. Natürlich würde das niemand tun, der bei klarem Verstand ist, aber manchmal kann es versehentlich passieren, daher ist es eine gute Idee, das NTP-Netzwerk-Layout von Zeit zu Zeit zu überprüfen.

Schlussfolgerung

NTP ist ein ausgezeichnetes und effizientes Protokoll, um sicherzustellen, dass Ihr System immer die richtige Zeit hat. In einem großen Netzwerk oder einer Büroumgebung kann es etwas schwierig werden, aber ein wenig Vorsicht und gute Layouts können viel bewirken. Wir hoffen, dass Sie diesen Artikel hilfreich fanden.


Linux
  1. Best Practices für die OpenSSH-Sicherheit

  2. So stellen Sie die Zeitzone ein und synchronisieren die Serverzeit mit NTP in Linux

  3. Wie installiere und konfiguriere ich NTP für die Zeitsynchronisierung in CentOS?

  4. 8 Best Practices mit sudo unter Linux – Do’s and Dont’s von sudo

  5. Best Practices für die Sicherheit von Linux-Servern

Linux-Server-Härtung – Best Practices

Beste Linux-Server-Distribution:Top 10 im Vergleich und unsere Empfehlung

Ubuntu Server Setup – Best Practices für die Sicherheit

So richten Sie die Zeitsynchronisierung mit NTP unter Ubuntu 18.04 ein

Verwenden Sie NTP, um die Zeit zu synchronisieren

Die 20 besten Mailserver-Software und -Lösungen für Linux