NTP - Die nächste Sau im Amplification Dorf

NTP ist nach DNS das aktuelle DDoS Werkzeug. Die Verstärkung ist phänomenal, es gibt keine Authenisierung, ist in der Default-Konfiguration praktisch aller Unix-System aktiviert, frei zugänglich und als UDP Protokoll trivial spoofbar. Was will man eigentlich mehr?

Schauen wir mal im Detail, was da eigentlich abläuft. Das Kommando ntpdc -n -c monlist <SERVER> führt die Aktion aus. Zuerst einmal gegen einen ungeschützten Server:

22:18:20 client.33055 > server.123:  [len=192]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=440]
22:18:20 server.123 > client.33055:  [len=368]

Mächtig gewaltig. Auf ein UDP-Paket von 192 Byte kommen 53 UDP-Pakete mit einer Gesamtgröße von 23kByte zurück. Die Verstärkung beträgt also das 120-fache.

Natürlich reagieren nicht alle Systeme so heftig. Und manche auch mit anderen Protokollversionen.

22:35:18 client.56934 > server.123: [len=48]
22:35:18 server.123 > client.56934: [len=488]
22:35:18 server.123 > client.56934: [len=136]

Die Verstärkung beträgt das 13-fache bei einem Einsatz halb so großer Angriffspakete.

Aufgrund der weiten Verbreitung von NTP-Servern in dieser gefährlichen Fehlkonfiguration ist es einem Angreifer ein leichtes, eine durchschnittliche Verstärkung von 100 sicherzustellen und so mit einem einzelnen angemieteten Root-Server eine Angriffsbandbreite von 100 Gbps zu generieren.

Das Problem besteht darin, daß ältere Versionen der Software ntpd die Berechtigung für das Kommando monlist gar nicht geprüft hat und so auch konfigurationsmäßig nicht blocken konnte. Sobald also ein UDP Paket vom Daemon verarbeitet wurde, trat der Effekt ein.

Was man tun kann und muß ist die Fehlkonfiguration zu beseitigen. Das ist leicht getan: Man muß die Verarbeitung des Requests komplett verhindern. Meist reicht es aus in der /etc/ntp.conf diese Zeilen hinzuzufügen:

restrict -4 default ignore
restrict -6 default ignore
restrict localhost
restrict <isp-zeitserver-ip>

Damit wird jedes Paket, was von einer unbekannten Quelle kommt, komplett ignoriert. Der unberechtigte Anfrager läuft also in einen Timeout.

Und nun stellt sich die Frage, wie man überhaupt herausbekommt, welche Systeme angreifbar sind. Sind sie vielleicht schon geschützt? Hat meine gerade vorgenommen Umkonfiguration das Verhalten verändert?

Um diese Fragen zu beantworten braucht man einen Livetest, keine Statistiken der letzten Woche. Und diesen Livetest gibt es jetzt hier.

Viel Erfolg beim Patchen!

Post a comment

Verwandter Inhalt