Se eu tivesse que adivinhar, este é provavelmente um esforço equivocado para evitar a reflexão do tráfego. Tome o seguinte exemplo:
$ORIGIN example.com.
stophittingyourself IN NS ns1.stophittingyourself
ns1.stophittingyourself IN A 127.0.0.1
Se eu enviasse uma consulta para noreally.stophittingyourself.example.com.
para um servidor DNS recursivo, ele seguiria a cadeia de referência e tentaria consultar 127.0.0.1:53. As probabilidades são altas de que existe, de fato, um ouvinte localhost e, na maioria dos casos, o resultado líquido é o servidor falando sozinho. Isso inevitavelmente resultaria em falha de armazenamento em cache ... mas sempre que você alterar noreally
para somethingelse
, essa falha deverá ser armazenada em cache separadamente por RFC.
O resultado líquido é que a referência 127.0.0.1 pode ser usada para desperdiçar recursos com mais eficiência do que apontar para um IP aleatório que não responde ou não é autoritativo. Tentar preveni-lo nessa camada é estranho , especialmente porque faz mais sentido para a vítima declarar uma lista de redes com as quais não deve se comunicar para dados autoritativos (incluindo 127.0.0.0/8), mas isso nunca impediu que um negócio fizesse coisas bobas em nome da "segurança" com aspas.
tangente semi-relacionada: se você executar um servidor DNS recursivo e nunca pensou em referências usadas para direcionar o tráfego dessa maneira, convém verificar como o seu software DNS pode ser configurado para ignorar essas referências. Embora um firewall também possa ajudar aqui, prometo que os contadores de pacotes na sua interface de loopback serão muito mais silenciosos se você lidar com o tráfego de clientes.
Exemplo baseado em BIND:
# refuse to loop back on ourself
server 203.0.113.0/24 { bogus yes; };
server 127.0.0.0/8 { bogus yes; };
server 0000::/3 { bogus yes; };
server fe80::/16 { bogus yes; };
server 169.254.0.0/16 { bogus yes; };
# refuse attempts to funnel requests into private/backbone space
server 172.18.53.1/32 { bogus no; }; # whitelisting example
server 172.18.53.2/32 { bogus no; }; # whitelisting example
server 192.168.0.0/16 { bogus yes; };
server 10.0.0.0/8 { bogus yes; };
server 172.16.0.0/12 { bogus yes; };
server 100.64.0.0/10 { bogus yes; };