Consultas NTP mode 6 com o comando READVAR e mode 7, com o comando MONLIST permitem que sejam consultadas variáveis internas do NTP, que retornam informações como versão do NTP, sistema operacional do servidor, peers, entre outras. Estas consultas podem ser exploradas por ataques de DDoS, onde o atacante gera uma grande quantidade de tráfego através de consultas NTP mode 6 ou mode 7 para diversos servidores com pacotes UDP mascarados, tendo como endereço IP de origem o IP do alvo do ataque.
Esta vulnerabilidade pode ser detectada através do seguinte comando (em um terminal Linux):
#ntpq -c rv IP_SERVIDOR_NTPSe a saída do comando for a saída mostrada abaixo, o servidor está vulnerável.
associd=0 status=0600 leap_none, sync_ntp, no events, unspecified, system="cisco", leap=00, stratum=2, rootdelay=1.010, rootdispersion=1883.820, peer=29206, refid=192.168.2.26, reftime=d7274bfa.27191a36 Wed, May 21 2014 12:59:54.152, poll=6, clock=d7274bfa.c07c7606 Wed, May 21 2014 12:59:54.751, phase=7.236, freq=-15.20, error=1875.03Para corrigir esta vulnerabilidade, deve-se restringir as consultas apenas à rede interna e aos clientes. Um exemplo de configuração de um servidor NTP Linux (arquivo /etc/ntp.conf) onde são aplicadas as restrições necessárias pode ser visto abaixo:
driftfile /var/lib/ntp/ntp.drift #statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable #Servidores necessarios para realizar o sincronismo server ntp.pop-sc.rnp.br iburst restrict ntp.pop-sc.rnp.br [nomodify notrap nopeer noquery] server ntp.cais.rnp.br iburst restrict ntp.cais.rnp.br [nomodify notrap nopeer noquery] server mp2.pop-sc.rnp.br iburst restrict mp2.pop-sc.rnp.br [nomodify notrap nopeer noquery] #Ignorar todos os pedidos por padrao restrict -4 default ignore restrict -6 default ignore #Servir timeStamp somente para as redes necessarias restrict 10.0.200.0 mask 255.255.255.0 kod notrap nomodify nopeer noquery restrict 200.237.192.0 mask 255.255.255.0 kod notrap nomodify nopeer noquery restrict 2801:84:a80:: mask ffff:ffff:ffff:: #Permitir monitoramento total para a interface interna restrict 127.0.0.1 restrict ::1 disable monitorPara restringir consultas NTP em equipamentos Cisco, devem ser aplicada a configuração conforme o exemplo abaixo.
Ntp access-group peer 34 ntp access-group serve 33 ntp access-group serve-only 35 ntp access-group query-only 33 ntp server IP_SERVIDOR_NTP prefer access-list 33 remark ;ACL para bloquear qualque requisicao NTP access-list 33 deny any access-list 34 remark ;Servidores NTP que podem ser sincronizados access-list 34 permit IP_SERVIDOR_NTP access-list 34 deny any access-list 35 remark ;Redes que podem sincronizar neste equipamento access-list 35 permit 200.237.192.0 0.0.0.255 ;Substituir por redes clientes e ;máscaras conforme o modelo access-list 35 deny anyNo caso das consultas mode 7 (MONLIST), atualizar a versão do NTP corrige esta vulnerabilidade, uma vez que, após a versão 4.2.7, o MONLIST é desabilitado por padrão. Caso não seja possível atualizar o NTP, adicionar a linha disable monitor ao arquivo ntp,conf, como no exemplo anterior.