bind: ¿agujero negro para consultas recursivas no válidas?

bind: ¿agujero negro para consultas recursivas no válidas?

Tengo un servidor de nombres al que se puede acceder públicamente ya quees el servidor de nombres autorizado para un par de dominios.

Actualmente el servidor está inundado de ANYsolicitudes de tipos falsos para isc.org, rip.net y similares (esa es unaconocido ataque DoS distribuido).

El servidor ejecuta BIND y se ha allow-recursionconfigurado en mi LAN para que estas solicitudes sean rechazadas. En tales casos, el servidor responde solo con authoritysecciones additionalque hacen referencia a los servidores raíz.

¿Puedo configurar BIND para que ignore por completo estas solicitudes, sin enviar ninguna respuesta?

Respuesta1

Ante el mismo problema, elegí ignorar todas las solicitudes recursivas. Todos los solucionadores envían una consulta no recursiva cuando quieren utilizar mi servidor como servidor autorizado. En mi caso, sólo los clientes y atacantes mal configurados utilizan consultas recursivas.

Desafortunadamente no he encontrado una manera de permitir que BIND haga eso, pero en caso de que iptables sea lo suficientemente bueno para ti, usé

iptables -t raw -I PREROUTING -i eth0 -p udp --destination-port 53 \
    -m string --algo kmp --from 30 \
    --hex-string "|01000001000000000000|" -j DROP

Respuesta2

Lo intentaré:

zone "." {
  type redirect;
  allow-query "none";
}

Las respuestas que remiten a los clientes a los servidores raíz están controladas por la zona de "redireccionamiento". Esto debería indicarle que no responda a esos.

Eso se insinúa en los documentos de Bind9:http://ftp.isc.org/isc/bind9/cur/9.9/doc/arm/Bv9ARM.ch06.html#id2592674

Es posible que deba reemplazarlo "none"con su subred local.

Si ya tiene una zone "."declaración, simplemente agréguela allow-query "none";.

Respuesta3

¿Has intentado bloquear la cadena isc.org o bloquear la cadena hexadecimal?

Esto funcionó para mí:

iptables -A ENTRADA -p udp -m cadena --hex-string "|03697363036f726700|" --algo bm -j DROP

Respuesta4

La idea básica es permitir que Bind clasifique la respuesta DNS como Rechazada y luego usar iptables para convertir Rechazada en ignorada silenciosamente.

Rechazado es la parte fácil en la sección de opciones de name.conf:

allow-recursion { none;};

O, por supuesto, sus ACL favoritas para excepciones locales...

Siguiente magia loca de iptables, ajuste o elimine "-o eth0" según sea necesario. Este comando asume un encabezado de capa IPv4 estándar de 20 bytes anterior a UDP.

iptables -A OUTPUT -o eth0 -p udp --sport 53 -m string --from 30 --to 32 --hex-string "|8105|" --algo bm -j DROP

Esta clave en el campo de banderas de la respuesta DNS con los siguientes bits configurados

  • Respuesta DNS
  • consulta recursiva
  • Código de respuesta rechazado

Se notó un mensaje de registro que ejecuta enlace en depuración "error al enviar respuesta: host inalcanzable" cuando la regla coincide para tener algunos comentarios para las pruebas.

Debo admitir que todo esto es un ejercicio un tanto inútil. Si no hay amplificación, un atacante podría reflejar TCP SYN con la misma facilidad. En última instancia, el DNS no funciona, simplemente no hay otra solución viable que el uso de TCP o la implementación de las cookies DNS de Eastlake.

información relacionada