Prevence zneužití NTP k NTP amplification útokům

10. dubna 2015

NTP (Network Time Protocol) je protokol pocházející z rodiny protokolů TCP/IP, který slouží k synchronizaci času na počítačích a dalších zařízeních v síti. NTP využívá UDP protokol a proto se může podobně jako DNS stát vektorem úspěšného DDoS útoku. NTP amplification pracuje na podobném principu jako DNS amplification útok. Útočník zašle NTP serveru požadavek s podvrženou zdrojovou IP adresou, která je zároveň adresou zamýšlené oběti. Server však nedokáže posoudit, zda dotaz přišel od legitimního uživatele a proto na něj odpoví. V odpovědi se pak projeví i „amplification“, tedy zesílení, či zvětšení, protože odpověď, kterou server zašle je násobně větší, než přijatý dotaz. Podobně jako v případě DNS amplification, také v tomto případě vznikla iniciativa Open NTP Project, která se problematikou tohoto útoku zaobírá.

NTP obsahuje příkaz, který se nazývá monlist a který v tomto případě tvoří podstatu útoku. Tento příkaz slouží k monitorování provozu na serveru. Pokud je server zranitelný, pak pomocí příkazu monlist můžeme získat seznam posledních šesti set IP adres, které se k němu připojily. Skutečnost, že odpověď je mnohonásobně větší než samotný dotaz je pro potřeby amplification útoku ideální. Zda je NTP server zranitelný zjistíte pomocí příkazu ntpdc -n -c monlist IP, kde IP znamená IP adresu serveru, na který se dotazujete. Pokud od serveru obdržíte odpověď, pak to znamená, že tento server může být zneužit k amplification útoku.

Obrana
Pokud provozujete NTP server, je nejjednodušším způsobem ochrany před zneužitím provedení upgrade na verzi 4.2.7p26, případně vyšší nebo provedení změny konfigurace. Od verze 4.2.7p26 je totiž příkaz monlist zcela odstraněn. Jedná se však o vývojové verze, proto se zatím doporučuje spíše druhá možnost, tedy změna konfigurace spočívající v nastavení hodnoty monlist na disabled. Toto je možné provést v souboru /etc/ntp.conf, přidáním direktivy „noquery“ do řádků „restrict default“. Konkrétně se jedná o tyto dva řádky:

restrict default kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery

Některé operační systémy mají naštěstí tuto konfiguraci nastavenu ve výchozím stavu. Toto nastavení samozřejmě platí i pro veřejné NTP servery. Je také potřeba pamatovat na to, že se tento problém netýká pouze Linuxových/Unixových systémů, ale také dalších zařízení, jako jsou Cisco či Juniper routery. Celá zranitelnost byla popsána v CVE-2013-5211.