"Separate authoritative and recursive functions" is really a simplistic
approach to a complex challenge. I think a better approach is to make both the
published-authoritative function and the recursive-resolution functions robust
enough *in*and*of*themselves* so that there is no value to an attacker taking
down a single node or instance for either function. At that point, it doesn't
matter whether you mix published-authoritative with recursive, or not.
So how do you make the published-authoritative function robust? The main way is
to publish a sufficient number of NS records, and potentially some or all of
those are Anycast'ed (and/or potentially hardware-load-balanced) to even more
nodes. (Don't go overboard on your NS records, however, since this can lead to
TCP retries). Similarly, you can use Anycast and/or hardware-load-balancing to
make the recursive-resolver function robust, and doing so has the added benefit
of simplifying stub-resolver configuration throughout your enterprise. Another
thing you can do is implement "stealth slave"s for your critical zones (which,
by the way, doesn't violate the spirit of separating the functions, since the
motivation for that advice pertains to *published* authoritative service, and,
by definition, "stealth slave"s aren't published). Stealth slaves are more
resistant to DoS (since they answer from data which is local) and have no cache
to poison. There are (expensive) hardware approaches to mitigating DoS, as well.
As another poster mentioned, the physical security of your DNS instances -
whether they be authoritative or recursive or both - is important, as is the
OS-level security, controlling access, keeping up on patches, watching the
logs. All of the usual security precautions apply to DNS as apply to *any*
infrastructure subsystem.
As for Internet-facing DNS instances, even there, I think "hardware-level
separation" between published-authoritative and recursive, is a little
overblown. If you have a hardened platform, keep up on patches, have
centralized configuration control, people who know what they're doing, multiple
levels of redundancy for each function, ingress filtering, etc. then view-level
separation is sufficient.
- Kevin
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Gary Carr
Sent: Wednesday, August 05, 2015 10:19 AM
To: [email protected]
Subject: separation of authoritative and recursive functions on internal
networks
Hello,
I understand the importance of separating authoritative and recursive functions
on public facing systems. How crucial is it on internal systems?
My clients today resolve against internal servers that do recursion and also
hold authoritative secondary copies of important internal zones. I did see on
the ISC KB that this is an acceptable configuration 'having determined that the
benefit outweighs any risks associated with this policy."
The primary benefit as I understand it, is that in removing the authoritative
function from the recursive systems and isolating it on separate hardware (with
an ACL permitting only the recursive servers to use them), I decrease the
attack surface. The recursive servers are now isolated from being vulunerable
to attacks against the authoritative code base.
In my environment, the recursive function is important, but not nearly as
important as the authoritative resolution of internal namespaces.
Has this separation of function improved my security posture in that area? If
we assume the internal environment is hostile, an attacker now simply has to
launch their authoritative-busting code against the authoritative servers
rather than the recursive servers, forging the source as the recursive servers?
The end result is the same in either design - an outage for critical internal
functionality.
What are the downsides? Is it a stretch to say that this design might actually
introduce security concerns? For example, if the authoritative function is
moved, and the clients are left pointing at na now recursive-only server- that
recursive server is now theoretically vulnerable to cache poisoned records for
those critical internal namespaces, where as previously that was impossible
because it was answering them authoritatively?
Does this design potentially weaken operational stability? By breaking out the
authoritative functions on to unique hardware, we've now introduced a second
place in the service delivery chain where a failure will be catastrophic to
business function?
Overall, is breaking this function out - internally - really worth it?
Thoughts and comments appreciated
Cheers!
_______________________________________________
Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe
from this list
bind-users mailing list
[email protected]<mailto:[email protected]>
https://lists.isc.org/mailman/listinfo/bind-users
_______________________________________________
Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe
from this list
bind-users mailing list
[email protected]
https://lists.isc.org/mailman/listinfo/bind-users