OpenNTPD einrichten

Um die Systemzeit auf Computersystemen aktuell zu halten wird auf das Network Time Protocol (NTP) gesetzt. Bei vielen Betriebssystemen wird dafür die NTP-Referenz-Implementation (ntpd) verwendet, die jedoch wiederholt Sicherheitslücken aufwies. Es sollte daher in betracht gezogen werden ntpd, wenn möglich, durch OpenNTPD zu ersetzen.

OpenNTPD gehört zum OpenBSD-Projekt und soll folgende Ziele erfüllen:

  • Sicherheit
  • Einfachheit in der Bedienung
  • Performance

Quelle: OpenNTPD - Design Goals

Die OpenNTPD erfragte Zeit kann um 50-200ms abweichen, dieses reicht jedoch für die meisten Anwendungen (z.B. Web-/Mailserver) volkommen aus. Außerdem ignoriert OpenNTPD Schaltsekungen und sollte daher nur zum Empfang von Uhrzeit, und nicht als Zeitserver für andere Computer, verwendet werden. Wenn höhere Präzision erforderlich ist, kann Chrony eingesetzt werden.

Installation

Debian / Ubuntu:

apt install openntpd

FreeBSD:

pkg install openntpd

oder

cd /usr/ports/net/openntpd
make
make install

Konfiguration von OpenNTPD

OpenNTPD ist bereits grundsätzlich eingerichtet und kann zur Zeitsynchronisation verwendet werden. Standardmäßig (FreeBSD) sollte der Serverpool pool.ntp.org eingestellt sein.

Die Konfigurationsdatei ist unter FreeBSD /usr/local/etc/ntpd.conf und /etc/openntpd/ntpd.conf unter Debian.

Minimalkonfiguration:

servers pool.ntp.org
constraint from "https://freebsd.org"

Beispielkonfiguration:

# Als Server 
#listen on 127.0.0.1
#listen on 81.35.21.0

# Als Server auf allen Interfaces
#listen on *

# ggf. nähere Server auswählen (http://www.pool.ntp.org/zone/@)
servers de.pool.ntp.org

# Alternative:
#server 0.de.pool.ntp.org
#server 1.de.pool.ntp.org
#server 2.de.pool.ntp.org
#server 3.de.pool.ntp.org   

# Zeit auch von HTTPS-Servern abrufen (Kontrolle)
constraints from "https://google.com"
constraint from "https://freebsd.org"

Siehe auch: Offizielle OpenNTPD Dokumentation

Einzelne Konfigurationsdirektiven

listen on 81.35.21.0

listen on Adresse: Stellt einen NTP-Server auf der IP-Adresse Adresse bereit. OpenNTPD öffnet standardmäßig keine Ports. * ist ein Platzhalter für alle Interfaces. Alternativ können dafür auch 0.0.0.0 für IPv4 und :: für IPv6 verwendet werden.

servers de.pool.ntp.org

server 0.de.pool.ntp.org
server 1.de.pool.ntp.org

server(s) Adresse: Legt einen einzelnen Server oder einen Serverpool als Zeitquelle fest.

constraints from "https://google.com"
constraint from "https://freebsd.org"

constraint(s) from URL: Überprüft die von NTP-Servern empfangene Daten durch den "Date"-Header von einem HTTPS-Server(-pool). Darduch kann eine Manipulation der (meist) nicht abgesicherten NTP-Daten verhindert werden. Der Plural bedeutet auch hier wieder einen Pool an Servern.

Aktivierung und Starten von OpenNTPD

Unter Debian/Ubuntu sollte OpenNTPD automatisch aktiviert und gestartet werden werden.

Unter FreeBSD muss noch die /etc/rc.conf geändert werden und anschließend OpenNTPD gestartet werden:

sysrc ntpd_enable="NO"
ntpd_enable: YES -> NO
sysrc openntpd_enable="YES"
openntpd_enable: NO -> YES
sysrc openntpd_flags="-s"
openntpd_flags: -> -s
service openntpd start
Performing sanity check on openntpd configuration:
configuration OK
Starting openntpd.