En el dÃa de hoy he recibido varios ataques de DoS al DNS de mi trabajo, investigando un poco, encontré un documento publicado que me fue de mucha utilidad:
Desde el dÃa de ayer mucha gente ha estado reportando extrañas consultas en sus servidores DNS con un rate de 2 conexiones por segundo. Estas consultas preguntan al servidor por el dominio “.â€. Las consultas para “.†son consultas a los servidores de nombres raÃz, estas son consultas muy pequeñas pero con respuestas bastante grandes. Este ataque utiliza la técnica DNS snooping, donde se utilizan direcciones IP falsificadas para generar consultas a un servidor DNS, despues el servidor DNS (que funciona como un amplificador) devuelve las consultas a las direcciones falsificadas causando una cadena.
En los logs de su sustema pueden ver logs parecidos a este:
Jan 19 23:58:57 ns1 named[3593]: client 76.9.31.42#10070: query (cache) './NS/IN' denied Jan 19 23:58:58 ns1 named[3593]: client 69.50.142.110#60820: query (cache) './NS/IN' denied
Por ejemplo del dÃa de ayer este es el número de ataques en uno de mis servidores:
# zcat /var/log/syslog.1.gz | grep "Jan 19" | grep -c "'./NS/IN' denied" 76058
Y en lo que va del dÃa (20/01/2009 18:02):
# grep "Jan 20" syslog | grep -c "'./NS/IN' denied" 42883
Hasta ahora la mayorÃa de los ataques provienen de las direcciones IP:
76.9.31.42
76.9.16.171
69.50.142.11
69.50.142.110
66.230.160.1
66.230.128.15
Por lo que serÃa conveniente bloquear dichas direcciones en el firewall o router, asà bloqueamos el trafico antes de que llegue a nuestros servidores, y además no se llenan los logs.
Se ha publicado una herramienta en lÃnea para verificar si su servidor DNS es objetivo para este tipo de ataques, la liga es: http://isc1.sans.org/dnstest.html.
En mi caso me devolvio algo asÃ:
Si te encuentras con que no te da resultado satisfactorio, probablemente tu servidor DNS esta mal configurado.
Aquà les dejo como deberÃa de ir una configuración para bind9 que previene este tipo de ataques:
// Opciones globales options { directory "/var/cache/bind"; allow-query { 127.0.0.1; }; }; //Definición de zonas zone "tuxjm.net" { type master; file "/etc/bind/pri/db.tuxjm.net.zone"; allow-query { any; }; Fuente: tuxjm.net };
Practicamente lo que se hace se configurar en las opciones globales que solo los hosts de confianza (solo localhost) puedan utilizar este servidor como DNS cache, es decir, estamos bloqueando todas las consultas que no sean originaldas localmente, y para no bloquear consultas a nuestros dominios autoritativos o aquellos que sean de tipo master, agregaremos la sentencia allow-query {any} dentro de la definición de zona, para permitir consultas de cualquier lado para este dominio.
NOTA: Si este mismo servidor se utiliza como un dns cache para una red local, entonces es conveniente agregar la subred local a allow-query en la sección global.
Espero que este documento les sea de utilidad para verificar que su servidor DNS este seguro.
Fuente: tuxjm.net