Advisory Notice for Bind Default Configuration and Reflector Attacks

Gregory Neil Shapiro gshapiro at gshapiro.net
Fri Mar 24 06:26:25 UTC 2006


> or you'll have to set up a multilevel config file as follows:
> 
> 	# global settings
> 	options {
> 		...
> 		recursion yes;
> 		allow-query { localnets; };
> 		...
> 	};
> 	
> 	# for every zone
> 	zone ... {
> 		allow-query { any; };
> 	};

Unfortunately, I tried to do this a while back and it breaks CNAME's to
external sites.  For example, on the master for example.com, I have
entries:

  example.com.		IN	A	10.214.26.16
  www.example.com.	IN	CNAME	example.com.
  whois.example.com.	IN	CNAME	whois.internic.net.

With a config:

	options
	{
		allow-query
		{
			localhost;
			localnets;
		};
		allow-recursion
		{
			localhost;
			localnets;
		};
	...
	};

	zone "example.com"
	{
		type master;
		allow-query
		{
			any;
		};
		file "master/example.com";
	};

Attempts from a non-"localnets" client to lookup www.example.com work
fine because the CNAME points to a zone that is locally served:

  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50669
  ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0

  ;; QUESTION SECTION:
  ;www.example.com.              IN      A

  ;; ANSWER SECTION:
  www.example.com.       21600   IN      CNAME   example.com.
  example.com.           21600   IN      A       10.214.26.17


However, lookups for whois.example.com fail with "REFUSED":

  ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 30393
  ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

  ;; QUESTION SECTION:
  ;whois.example.com.            IN      A


If I set the global allow-query to any (thereby allowing the world to
use my server), I get what I would hope for in the previous case:

  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38745
  ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 0

  ;; QUESTION SECTION:
  ;whois.example.com.            IN      A

  ;; ANSWER SECTION:
  whois.example.com.     21600   IN      CNAME   whois.internic.net.

I'm assuming that the client would then do it's own lookup for
whois.internic.net after getting just the CNAME returned.

Is this a bug in the allow-query checking or am I missing something in
my settings?  I am running 9.3.2 in case it matters.


More information about the bind-workers mailing list