Absicherung von NTP

Aus EUserv Wiki

Wechseln zu: Navigation, Suche

Absicherung von NTP

Inhaltsverzeichnis

Absicherung von NTP

Allgemeines

Bei der Verwendung offener bzw. unzureichend abgesicherter NTP (Network Time Protocol) Server kann es zu deren Missbrauch kommen. Ein mögliches Angriffs-Szenario ist in diesem Fall das Fluten des Servers mit Traffic (Amplification/Reflection DDoS). Damit die Sicherheit von Servern und vServern und damit des gesamten Netzes von EUserv gewährleitset werden kann, zeigen wir Ihnen nachfolgend einige Schritte, die beim Betreiben eines NTP-Servers beachtet werden sollten.

Sicherheitsüberprüfung

Falls Sie einen offenen NTP-Server betreiben, nutzen Sie zunächst die Check-Seite des Open NTP Project. Damit überprüfen Sie, ob Ihr Server potentiell gefährdet ist:

http://openntpproject.org/

Absicherung

Client

Für die Konfiguration eines Clients, welcher lediglich Anfragen an einen NTP-Server sendet, ohne jedoch selbst Anfragen zu akzeptieren (außer von localhost), verwenden Sie die folgende Beispielkonfiguration (/etc/ntp.conf). Die IPv4/v6-Adressen bzw. Hostnamen der NTP-Server sind entsprechend anzupassen:


restrict -4 default nomodify nopeer noquery notrap
restrict -6 default nomodify nopeer noquery notrap

# NTP-Nachrichten nur von localhost zulassen

restrict 127.0.0.1
restrict ::1

# NTP-Server für den Abgleich

server 192.x.x.x
server 2001:db0a::x
server time.example.net

Anmerkung: Vertrauenswürdige NTP-Server umfassen die pool Server, welche für die nächstliegende Zeitzone(n) zur Verfügung stehen. Für Deutschland sind dies:


  • 0.de.pool.ntp.org
  • 1.de.pool.ntp.org
  • 2.de.pool.ntp.org
  • 3.de.pool.ntp.org


EUserv betreibt ebenfalls einen NTP-Server (Stratum 1). Für dessen Verwendung fügen Sie die Zeile

server ntp1.euserv.net

in Ihre /etc/ntp.conf ein.


Um den Client zusätzlich durch Zugriffe von entfernten Servern abzusichern, dienen die folgenden Regeln, welche Sie in Ihrem Paketfilter (im Beispiel iptables) hinzufügen:

-A INPUT -s 0/0 -d 0/0 -p udp --sport 123:123 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -s 0/0 -d 0/0 -p udp --dport 123:123 -m state --state NEW,ESTABLISHED -j ACCEPT

Server

Bei der Konfiguration des Servers geben Sie noch zusätzlich an, welchen Einschränkungen entfernte Server bei der Anfrage an den eigenen Server unterliegen sollen bzw. welche Netzsegmente zum Zugriff berechtigt sind:


restrict -4 default nomodify nopeer noquery notrap
restrict -6 default nomodify nopeer noquery notrap

# NTP-Nachrichten nur von localhost zulassen

restrict 127.0.0.1
restrict ::1

# NTP-Server für den Abgleich

server 192.x.x.x
server 2001:db0a::x
server time.example.net

# Beschränkungen

restrict time.example.net 255.255.255.255 nomodify notrap noquery
restrict 2001:db0a::x mask 255.255.255.255 nomodify notrap noquery
restrict 192.x.x.x mask 255.255.255.255 nomodify notrap noquery

# Festlegen der Netzsegmente, welche den Server anfragen dürfen

restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap
restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap

Authentifizierung

Eine weitere Absicherung wird durch die Nutzung von Keys erreicht. Dies ist nützlich, wenn:

  • Eine Zeitsynchronisation nur mit vertrauenswürdigen Quellen erfolgen soll
  • Ein Angreifer falsche Zeitstempel ausliefert
  • Ein Angreifer sich als ein anderer Server ausgibt


Konfiguration

Die keybasierte Authentifizierung ist sowohl server- als auch clientseitig einzurichten. Die folgenden Anweisungen sind daher für Server und Client identisch.

Kommentieren Sie zunächst folgende Zeile in /etc/ntp.conf aus, den Pfad zur Keydatei können Sie frei wählen (im Beispiel: /etc/ntp.keys):

# keys /etc/ntp.keys

Als nächstes legen Sie die entsprechende Key-Datei an (hier: /etc/ntp.keys) und tragen Ihre Schlüssel ein. Diese werden im Klartext hinterlegt, sichern Sie die Datei also mit den entsprechenden Zugriffsrechten ab:

chmod 0700 /etc/ntp.keys

Bei den Schlüsseln unterscheidet man wesentlich zwischen Typ A und Typ M. Ein A Schlüssel besteht aus 8 ASCII-Zeichen (DES-Key), ein M Schlüssel aus bis zu 31 ASCII-Zeichen (MD5-Key).

Das Format der Schlüssel in /etc/ntp.keys sieht beispielsweise folgendermaßen aus:

1   A    PasSwort
2   M    123.Test?
13  A    I_see!
398 M    NTP_Key298

In der ersten Spalte erfolgt die Angabe der Key-Nummer (1-65535), in der zweiten die Angabe des Typs und schließlich wird in der dritten Spalte das Passwort angegeben.


Client

Clientseitig legen Sie nun fest, bei welchen NTP-Servern Sie Authentifizierung nutzen möchten. Erweitern Sie in der /etc/ntp.conf Ihre server Direktiven um das Schlüsselwort key [KEYNUMMER]. In unserem Beispiel sähe dies folgendermaßen aus:

server 192.x.x.x key 1
server 2001:db0a::x key 13
server time.example.net key 398

Wollen Sie gänzlich NUR authentifizierte Verbindungen zulassen, fügen Sie folgende Zeile zusätzlich in Ihre Konfigurationsdatei ein:

enable auth


Server

Auf dem Server muss nun angegeben werden, welche Keys vertrauenswürdig sind. Dies wird mit folgender Anweisung in der /etc/ntp.conf erzielt:

trustedkeys 1 2 13 398

Entsprechend sind die Keynummern der vertrauenswürdigen Schlüssel anzugeben.