
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.