Zeitserver (ntpd) dienen der Synchronisierung verschiedener Computersysteme mit einer zentralen Zeitquelle.
Situationsbeschreibung:
- Ein Zeitserver beantwortet Anfragen nach der aktuellen Systemzeit aus jeder Quelle per UDP und TCP über das Network Time Protocol (NTP).
Risikopotential:
- Die Tatsache, das ein Zeitserver Anfragen aus jeder Quelle beantwortet ist insofern kritisch, als dass dadurch Angriffe ermöglicht werden, wie Sie z.B. in
- beschrieben sind ("NTP amplification attacks"). Deshalb sollte man für den eigenen Server prüfen, ob eine Abfrage über das Internet überhaupt nötig ist oder ggf. auf bestimmte Adressbereiche eingeschränkt werden kann.
- Bitte beachten Sie, dass dies keine Kompromitierung durch Dritte bedeutet, sondern lediglich Antworten an fälschbare Absenderadressen ermöglicht werden. Dies entspricht technisch einem Flooding und ggf. einem DoS-Angriff.
Beispiel für die Ausnutzung der Schwachstelle:
- Eine legitime Anfrage sieht so aus, dass der Anfragende (A1) mit seiner IP-Adresse (I1) an den Server die Anfrage nach der aktuellen Systemzeit stellt und diese (natürlich auch an I1) beantwortet wird.
- Missbrauch ist in der Art möglich, dass A1 mit der gefälschten IP-Adresse I2 an den Server die Anfrage stellt und dieser somit eine Antwort an I2 sendet, der diese nicht erwartet. Somit entsteht ein Datenversand vom Server an I2, der je nach Anzahl der Anfragen eine hohe Last oder einen Denial of service (DoS) bewirken kann. Da für die Anfrage UDP verwendet wird, ist das Fälschen der Absenderadresse ohne weiteres möglich. Für den Angreifer A1 ergibt sich der Vorteil, dass die Anfrage die er senden muss im Vergleich zur Antwort des Servers relativ klein ist. Somit wirkt der NTP-Server als Verstärker für die Anfragen ("NTP amplification attack"). Ausserdem erscheint die IP des Opfers (Ihres Servers), nicht des Angreifers als Absender.
Wie kann ich prüfen, ob mein Server betroffen ist?:
- Sie können dazu eine NTP-Anfrage stellen, die der Server nicht beantworten sollte. Diesen Test müssten Sie von einem ANDEREN Rechner als dem betroffenen Server durchführen.
- Es exisitieren zwei potentielle Konfigurations-Lücken die ausgenutzt werden können, die Abfrage der clocklist sowie die Abfrage der monlist.
- Ob Ihr Server die clocklist ausliefert können Sie unter Linux mit dem Befehl
- ntpq -c clocklist xx.xx.xx.xx
- prüfen. Dabei ist xx.xx.xx.xx die IP-Adresse Ihres Servers.
- Sollten Sie eine Antwort wie folgt erhalten
- associd=0 status=0000 , no events, clk_unspec,
device="Undisciplined local clock", timecode=, poll=204735, noreply=0,
badformat=0, baddata=0, fudgetime1=0.000, stratum=13, refid=76.79.67.76,
flags=0
- associd=0 status=0000 , no events, clk_unspec,
- besteht das Problem noch!
- Folgende Meldung bedeutet das der Server keine Auskunft erteilt.
- xx.xx.xx.xx: timed out, nothing received
***Request timed out
- xx.xx.xx.xx: timed out, nothing received
- Ob Ihr Server die monlist ausliefert können Sie mit folgenden Befehl prüfen:
- ntpdc -n -c monlist xx.xx.xx.xx
- Dabei ist xx.xx.xx.xx die IP-Adresse Ihres Servers.
- Folgende Meldung bedeutet das der Server keine Auskunft erteilt.
- xx.xx.xx.xx: timed out, nothing received
***Request timed out
- xx.xx.xx.xx: timed out, nothing received
Realisierung in ntpd (Linux):
- Zunächst sollen Sie klären, ob Sie einen NTP-Server benötigen und diesen ansonsten deinstallieren. Für das Einstellen der Uhrzeit auf Ihrem Server ist es nicht erforderlich, dass ein NTP-Server läuft. Sollten Sie den Dienst benötigen, klären Sie bitte, ob dieser tatsächlich externe Anfragen beantworten muss.
- Wenn Sie den Server wirklich betreiben wollen, passen Sie bitte die Konfig an. Bei ntpd können Sie in der /etc/ntp.conf eine Direktive erstellen, die den Zugriff von externen Systemen unterbindet. Dies kann typischerweise so aussehen:
- restrict -4 default ignore kod notrap nomodify nopeer noquery
restrict -6 default ignore kod notrap nomodify nopeer noquery
- restrict -4 default ignore kod notrap nomodify nopeer noquery
- Danach müssten Sie den Dienst neu starten ("/etc/init.d/ntpd restart")
English version:
Situation:
- Due to an unsafe configuration it is possible to use network timeserver (ntp) as a tool for denial of server attacks using amplification techniques.
Detailed informations can be found here:
How to fix:
- To fix the vulnerability it is needed to reconfigure the ntp server.
For ntp the following entries have to be added to the file "/etc/ntp.conf":
- restrict -4 default ignore noserve noquery
restrict -6 default ignore noserve noquery
- restrict -4 default ignore noserve noquery
- After this changes the ntp server has to be restarted ("/etc/init.d/ntpd restart")