linux-security security networking ntp chrony nts time-sync

NTP Security & NTS: Time Synchronization (Artikel 334)

Absicherung der Zeitsynchronisation unter Linux. Erfahren Sie alles über chrony, den Schutz vor NTP-Amplification-Attacks und die Verschlüsselung via Network Time Security (NTS).

# Time Security Mastery: Warum die Uhrzeit über Sicherheit entscheidet

TL;DR / Management Summary Ohne präzise Uhrzeit bricht die moderne Kryptografie zusammen. Zertifikate werden ungültig (Artikel 319), OTP-Tokens schlagen fehl (Artikel 318) und Logs lassen sich nicht mehr korrelieren. Aber das klassische NTP (Port 123 UDP) ist unsicher und kann für DDoS-Attacken missbraucht werden. Ein Senior Admin nutzt heute chrony statt dem alten ntpd und setzt auf Network Time Security (NTS), um Zeitdaten verschlüsselt und fälschungssicher zu beziehen.


# 1. Einführung & Architektur

Zeit als kritische Infrastruktur.

In Linux-Systemen haben wir zwei Uhren:

  1. Hardware-Uhr (RTC): Die Batterie-gepufferte Uhr auf dem Mainboard.
  2. System-Uhr: Die vom Kernel verwaltete Zeit (wird beim Boot von der RTC geladen).

# Die Bedrohungs-Matrix (Mermaid)

graph TD
    A[Public NTP Server] -->|UDP 123: Unencrypted| B[SLES / Arch Host]
    C[Attacker] -->|MITM / Spoof| B
    C -->|Drift Injection| B
    B --> D{Impact}
    D --> E[Broken TLS Handshakes]
    D --> F[Log Manipulation]
    D --> G[MFA Token Rejection]
    subgraph "Solution: NTS"
        H[NTS Provider: Cloudflare / PTB] -->|TLS Handshake| B
        B -->|Encrypted NTP| B
    end

# 2. Der moderne Standard: Chrony

Schneller und sicherer als ntpd.

Chrony ist für virtuelle Maschinen und instabile Verbindungen optimiert.

# Installation & Aktivierung

sudo apt install chrony # Debian/Ubuntu
sudo dnf install chrony # RHEL
sudo systemctl enable --now chronyd

# Konfiguration für NTS (Verschlüsselte Zeit)

Datei: /etc/chrony.conf

# Nutze Cloudflare mit NTS
server time.cloudflare.com iburst nts
# Nutze PTB (Physikalisch-Technische Bundesanstalt)
server ptbtime1.ptb.de iburst nts

# Verhindere, dass der Server selbst als NTP-Relay missbraucht wird
allow 127.0.0.1
# (Keine weiteren 'allow' Zeilen ohne Firewall-Schutz!)

# 3. systemd-timesyncd

Die minimalistische Alternative.

Für einfache Clients oder Container reicht oft der integrierte systemd-Dienst. Datei: /etc/systemd/timesyncd.conf

[Time]
NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org

Limitierung: timesyncd unterstützt aktuell kein NTS und ist nur ein SNTP-Client (keine präzise Drift-Korrektur).


# 4. Day-2 Operations: Status & Drift

Läuft die Uhr synchron?

# Chrony Status prüfen

# Zeige Quellen und deren Genauigkeit
chronyc sources -v

# Zeige Drift-Statistiken
chronyc tracking

Achten Sie auf “Last offset”. Ein Wert im Mikrosekunden-Bereich ist ideal.


# 5. Troubleshooting & “War Stories”

Wenn die Zeit springt.

# Story 1: “Der hängende Kerberos-Login”

Symptom: In einer AD-Domain können sich User nicht mehr einloggen. Fehlermeldung: Clock skew too great. Ursache: Die Zeit des SLES-Servers weicht um mehr als 5 Minuten von der Zeit des Domain Controllers ab. Lösung: Synchronisieren Sie den Server direkt mit dem DC: chronyc manual on && chronyc add server dc01.company.local iburst.

# Story 2: “NTP-Amplification-Angriff”

Symptom: Ein Server im RZ hat massive Outbound-Bandbreite auf Port 123 UDP und steht auf einer Blacklist. Ursache: Der Admin hat den alten ntpd installiert und die Standard-Config gelassen. Angreifer nutzen den Server als Reflektor für DDoS-Attacken. Lösung: Wechseln Sie zu Chrony (das standardmäßig keine Anfragen von außen beantwortet) oder konfigurieren Sie restrict Regeln in der ntp.conf.


# 6. Fazit & Empfehlung

  • Wahl: Nutzen Sie Chrony für alle Server.
  • Security: Aktivieren Sie NTS, um sich gegen “Man-in-the-Middle” Angriffe auf die Systemzeit zu schützen.
  • Best Practice: Nutzen Sie mindestens 4 verschiedene Zeitquellen, um Fehlmessungen einzelner Server zu erkennen.

# Anhang: Cheatsheet

Aufgabe Befehl
Status-Übersicht chronyc tracking
Quellen-Liste chronyc sources -v
Sofort-Sync chronyc -a makestep
Hardware-Uhr setzen hwclock --systohc
Zeitzone ändern timedatectl set-timezone Europe/Berlin
Zeitsynchronisation an timedatectl set-ntp true
NTS Support Check `chronyc sources
Log-Fehler suchen journalctl -u chronyd