Absicherung von NTP
Aus EUserv Wiki
Languages: |
Deutsch • English |
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.