Haga que BIND9 elimine consultas no autorizadas

Haga que BIND9 elimine consultas no autorizadas

Mi ISP me permite ejecutar un servidor DNS, siempre y cuando no responda a consultas no autorizadas. Esto significa que no hay respuesta alguna. Lo tenía configurado para rechazar no autorativo, como este;

> tweakers.net
Server:     my.server.net
Address:    my.ip#53

** server can't find tweakers.net: REFUSED

Pero aparentemente eso ya no es suficiente. Simplemente no debe enviar ninguna respuesta. ¿Es eso siquiera posible?

Este es mi archivo de opciones actual;

options {
    directory "/var/cache/bind";

    recursion yes;

    allow-recursion { internal; };

    allow-transfer { *secondary dns ip*; };

    dnssec-enable yes;
    dnssec-validation yes;

    auth-nxdomain no;    # conform to RFC1035

    filter-aaaa-on-v4 yes;

};

Mi ACL interna

acl internal {
    192.168.40.0/24;
    127.0.0.1;
    10.0.3.1/24;
    };

Quizás no estoy buscando en Google las cosas correctas, pero no encuentro esa opción.

Respuesta1

Necesitas desactivar la recursividad.

Esto evitará que responda a consultas sobre zonas no autorizadas.

Pero seguirá respondiendo con un SERVFAIL.

Respuesta2

Encontré una solución de iptables aquí. Pregunta similar publicada en Serverfault. https://serverfault.com/questions/438515/bind-blackhole-for-invalid-recursive-queries

No hay forma de hacer esto con Bind. Sin embargo, puede utilizar las reglas de firewall de iptables para bloquear las respuestas a todas las consultas recursivas.

Respuesta3

Al igual que usted, no me gusta que mi servidor esté involucrado en DDOS, incluso responde con pequeños paquetes de 30 bytes. Además, por alguna razón no puedo usar iptables para bloquear solicitudes falsificadas. La vulnerabilidad del servidor se solucionó hace 3 meses, pero la botnet aún envía solicitudes falsificadas al servidor.

Entonces, como resultado, puede usar este parche simple para no enviar una respuesta RECHAZADA (las solicitudes se descartarán):

--- bind9-9.9.5.dfsg/bin/named/query.c.orig        Thu Aug  6 21:56:57 2020
+++ bind9-9.9.5.dfsg/bin/named/query.c     Thu Aug  6 22:08:15 2020
@@ -1038,7 +1038,7 @@
                                         sizeof(msg));
                        ns_client_log(client, DNS_LOGCATEGORY_SECURITY,
                                      NS_LOGMODULE_QUERY, ISC_LOG_INFO,
-                                     "%s denied", msg);
+                                     "%s dropped", msg);
                }
                /*
                 * We've now evaluated the view's query ACL, and
@@ -5809,8 +5809,9 @@
                        } else
                                inc_stats(client, dns_nsstatscounter_authrej);
                        if (!PARTIALANSWER(client))
-                               QUERY_ERROR(DNS_R_REFUSED);
-               } else
+               //              QUERY_ERROR(DNS_R_REFUSED);
+                               QUERY_ERROR(DNS_R_DROP);
+               } else
                        QUERY_ERROR(DNS_R_SERVFAIL);
                goto cleanup;
        }
# diff -u query.c.orig query.c

... como resultado, obtienes buenos registros como este:

Aug  6 21:39:29 topor named[2652]: client 78.180.51.241#43072 (.): query (cache) './ANY/IN' dropped
Aug  6 21:40:00 topor last message repeated 485 times

Y no habrá respuesta "RECHAZADA" si la consulta proviene de una red no autorizada o de un dominio no compatible.

información relacionada