7.12 Restricting the Queries a
Name
Server Answers
7.12.1 Problem
You want to restrict the queries a name server answers.
7.12.2 Solution
Use the
allow-query
substatement to restrict the queries to which the name server responds.
allow-query
can be used as either an
options
substatement or a
zone
substatement. As an
options
substatement, it determines which addresses the name server will reply to for queries in any zone. Used as a
zone
substatement,
allow-query
controls which queriers can look up records in that zone, and
overrides
any eponymous
options
substatement.
This
allow-query
substatement allows only queriers (
resolvers
and name servers) on local networks to look up arbitrary domain
names
:
options {
directory "/var/named";
allow-query { localnets; };
};
The
localnets
ACL is predefined by BIND as all of the networks to which the host that runs the name server is directly connected.
In the same
named.conf
file, this
allow-query
substatement allows
anyone
to look up domain names in the
bar.example
zone:
zone "bar.example" {
type slave;
masters { 10.0.0.1; };
file "bak.bar.example";
allow-query { any; };
};
This particular combination of
allow-query
substatements is useful on name servers that serve some
group
of local resolvers that you can identify by IP address, but also have one or more zones delegated to them.
You can also control which addresses are allowed to send recursive queries with the
allow-recursion options
substatement, supported in BIND 8.2.1 and later. Only queriers in the specified address match list will have their queries
processed
recursively; all other queries and treated as nonrecursive. For example:
options {
directory "/var/named";
allow-recursion { localnets; };
};
7.12.3 Discussion
If you're faced with the choice of using multiple
allow-query
substatements or a single
allow-recursion
substatement to protect a name server from unauthorized queries, you should be aware of an important corner case: name servers
authoritative
for a zone that contains delegation may receive
legitimate
queries from remote name servers for data in subzones. The combination of
allow-query options
and
zone
substatements described earlier won't permit these queries, since the queries are received from
nonlocal
addresses for data outside of the name server's authoritative zones.
allow-recursion
works fine, though; you can permit recursive queries only from local networks and allow nonrecursive queries from
anywhere
.
Though you can specify TSIG keys with the
allow-query
substatement, there's usually not much point in doing so, since resolvers don't sign queries. Other name servers can, though.
7.12.4 See Also
"Restricting Queries" in Chapter 11 of
DNS and BIND
.
|