Linux Systemzeit Synchronisation mit Network Time Protocol (NTP)
Network Time Protocol – NTP Synchronisation der Systemzeit mit der Atomzeit der NTP-Server. Dieser Beitrag zeigt die NTP-Service Bereitstellung und Konfiguration in der Linux Befehlszeile. Eine korrekte Systemzeit ist für Computersysteme essentiell und schafft überhaupt die Voraussetzung für ein reibungslosen Beitrieb der interagierenden Dienste. Zur Überprüfung und ändern der Systemzeit dienen folgende Befehlszeilentools.
Zur Abfrage der aktuellen Systemzeit mit date
und timedatectl
:
1 2 3 4 5 6 7 8 9 10 11 |
$ date Fr 19. Feb 10:15:46 CET 2021 $ timedatectl Local time: Fr 2021-02-19 10:15:46 CET Universal time: Fr 2021-02-19 09:15:46 UTC RTC time: Fr 2021-02-19 09:15:44 Time zone: Europe/Zurich (CET, +0100) System clock synchronized: yes NTP service: active RTC in local TZ: no |
Der Zeitabgleich auf einem Server wird von einem NTP-Daemon ausgeführt, mit Synchronisation der Systemzeit für eine ordnungsgemässe Funktion der Systeme. Die Atomzeit kann von NTP-Server im Internet synchronisiert werden, wie zum Beispiel Google Public Network Time Protocol (NTP) time.google.com
Die NTP-Daemon Bereitstellung
Der NTP-Daemon auf Debian Linux basiertem System Installieren:
1 2 |
$ sudo apt install ntp ntpdate -y |
Der NTP-Daemon auf RHEL/CentOS/Fedora System Installieren:
1 2 |
$ sudo dnf install ntp ntpdate -y |
NTP Pool Server pool.ntp.org
versucht den nächstgelegenen verfügbaren Server zu finden. Das Projekt NTP-Pool ist ein dynamischer Pool von Zeitservern. Die NTP Pool Server kann man in /etc/ntp.conf
editieren.
1 2 3 |
pool time.google.com pool europe.pool.ntp.org |
Bevor der ntpd-Dienst gestartet werden kann, muss die Systemzeit grob (im Bereich weniger Minuten) eingestellt werden. Das kann manuell mit date
oder hier mit timedatectl set-time
oder über den NTP Pool mit ntpdate pool.ntp.org
gemacht werden.
1 2 3 4 |
$ sudo ntpdate pool.ntp.org $ sudo ntpq -pn $ sudo ntpq -c rv |
Nach einigen Minuten kann der Status des Dienstes abgerufen werden. Die Ausgabe des Kommandos ntpq -p
sollte in etwa wie folgt aussehen.
Der bereitgestellte NTP-Daemon nun ausführen und in systemd für den automatischen start verlinken:
1 2 3 |
$ sudo systemctl start ntp.service $ sudo systemctl enable ntp.service |
Die systemd-timesyncd Konfiguration
Der Service systemd-timesyncd
ist bei vielen Distributionen bereits installliert. Die Konfigurationsdateien steuern die Zeitsynchronisation des NTP-Netzwerks.
Die Network Time Synchronization für den Service systemd-timesyncd
beinhaltet die Datei /etc/systemd/timesyncd.conf
Die Konfigurationsdatei timesyncd.conf
kann wie folgt sein.
1 2 3 4 5 6 7 8 9 |
# See timesyncd.conf(5) for details. [Time] NTP=ch.pool.ntp.org FallbackNTP=0.ch.pool.ntp.org 1.ch.pool.ntp.org 2.ch.pool.ntp.org 3.ch.pool.ntp.org 4.ch.pool.ntp.org RootDistanceMaxSec=5 PollIntervalMinSec=32 PollIntervalMaxSec=2048 |
Damit systemd-timesyncd
automatisch gestartet wird, aktiviert der Befehl enable
den Service entsprechend:
1 2 3 |
$ sudo systemctl enable systemd-timesyncd $ sudo systemctl start systemd-timesyncd |
Bei einem systemd-basierten System führt man folgenden Befehl aus, um den Servicestatus zu überprüfen:
1 2 3 4 5 6 7 8 9 |
$ timedatectl status Local time: Fr 2021-02-19 10:15:46 CET Universal time: Fr 2021-02-19 09:15:46 UTC RTC time: Fr 2021-02-19 09:15:44 Time zone: Europe/Zurich (CET, +0100) System clock synchronized: no NTP service: n/a RTC in local TZ: no |
Die Ausgabe auf Zeile 7 und 8 bedeutet, dass der Zeitabgleich nicht ausgeführt wird. Mit folgendem Befehl wird die Synchronisation aktiviert:
1 2 |
$ sudo timedatectl set-ntp true |
Der NTP Servicestatus erneut abfragen, nach einigen Sekunden zeigt die Ausgabe System clock synchronized: yes
und NTP service: active
:
1 2 3 4 5 6 7 8 9 |
$ timedatectl status Local time: Fr 2021-02-19 10:15:46 CET Universal time: Fr 2021-02-19 09:15:46 UTC RTC time: Fr 2021-02-19 09:15:44 Time zone: Europe/Zurich (CET, +0100) System clock synchronized: yes NTP service: active RTC in local TZ: no |
Die Kerberos-Authentifizierung
Die Kerberos-Authentifizierung ist gegenwärtig die Standard-Authentifizierungstechnologie unter Windows, auch Apple macOS, FreeBSD und Linux Systeme nutzen Kerberos-Implementierungen. Bei der Authentifizierung in einer Umgebung mit Kerberos, kommt eine synchrone Systemzeit für interagierende System eine fundamentale Bedeutung zu.
Da Kerberos drei Entitäten für die Authentifizierung verlangt, die Ticket-Autorisierung durch eine dritte Partei, darf die Systemzeit eine bestimmte Drift Limite nicht überschreiten, ein Ticket das durch Kerberos erstellt wird, ist nach einer gewissen Zeit abgelaufen, das Ticket wird ungültig.
Kerberos ist auch für Websites und SSO-Implementierungen plattformübergreifend zum Standard geworden. In Active Directory Domain Services (AD DS), ist bei der Integration von NAS und anderen Geräte, für den Zugriff auf Netzwerkressourcen für eine übereinstimmende Systemzeit zu sorgen. Für die Protokollierung wie Syslog ist die präzise Zeit, der Timestamp für die Auswertung der Ereignisse, und bei der Fehler Analyse bedeutend.