1

I'm designing DNS service for a network and had a few architecture questions. The O'Reilly/ Cricket Liu DNS book and the NIST DNS security guide don't address these questions except in a very general way.

Here is the proposed network, which has internal (RFC 1918 space) and DMZ segments (with multiple servers, not just DNS servers) as well as mail and www servers at an outside colo. The DNS servers are the blue boxes:

Candidate DNS network

Here are the requirements:

  • DNSSEC support
  • On the internal networks, delegation to internal zones in RFC 1918 space
  • Separate authoritative and recursive servers
  • Hidden master (aka hidden primary) allows zone transfers to slaves but resolves no requests
  • All nameservers run chrooted (the default with Bind on FreeBSD)

Here are my questions:

  1. Is there anything obviously broken about this design?

  2. Are there any missing or extraneous elements here?

  3. OK to run the hidden master on the same subnet as the internal slave servers?

  4. Given relatively light DNS traffic (< 1 Mbps) on the internal and DMZ networks, are there security issues to running the caching-only servers in jails (BSD-speak for VMs) on the authoritative servers? Or should they be on dedicated machines?

Thanks in advance!

2
  • I assume the internal clients point at the caching internal dns server? The internal caching server relies on the slaves for recursive lookup? what does the caching only server between the firewall and router do? (does it do it's own recursive lookups?) -- Similarly: the remote web and email servers point to the caching dns server which relies on the external slave for recursion? Sep 26, 2013 at 5:35
  • All authoritative servers would respond to queries about their zones only, and would not do recursion for other zones; hence separate authoritative and recursive servers. Internal clients would use the internal and DMZ caching servers, and these in turn would use forwarders at the upstream ISPs. The caching server at the colo would also use upstream forwarders (not the authoritative server) for recursion. Make sense?
    – user8162
    Sep 26, 2013 at 6:07

1 Answer 1

1

Here are my questions:

1) Is there anything obviously broken about this design?

Nothing is Obviously wrong. .. At least that I can see.

2) Are there any missing or extraneous elements here?

Missing: Are you comfortable not having a hot stand by for your hidden master? The system seems quite engineered (I don't want to call it over engineered without seeing your use case) to rely on a single primary host. It's outside the scope of your diagram, but do your have a contingency plan for when [not if] the primary master blows up?

Extraneous: Keep in mind that every dns server that you add to the mix is another server that must be managed. Given your usage, is it critical to have this many DNS servers?

3) OK to run the hidden master on the same subnet as the internal slave servers?

I would expect the hidden master, and authoritative dns slaves to be in the dmz. Lock down the master appropriately. The internal slaves are answering authoritative look ups for your zone from the internet correct? If the internal slaves only answer queries for your zone from internal hosts, you either need a HUGE zone, a silly number of internal lookups to your internal zone (consider caching DNS servers at the host/workstation level), or you have given too much horse power to internal DNS. If they are answering queries from the internet, I would expect them to be in the DMZ. You are free to label them how you want.

As far as the master being on the same subnet as the slaves - Lock it down. Should not be an issue (and will save you some routing overhead come zone xfer time).

4) Given relatively light DNS traffic (< 1 Mbps) on the internal and DMZ networks, are there security issues to running the caching-only servers in jails (BSD-speak for VMs) on the authoritative servers? Or should they be on dedicated machines?

Yes. There are always security issues. If the internal caching only servers are locked down to accept only traffic from internal sources, they are placed in jails, on a presumably BSD environment, and updated and monitored regularly... A hacker has a lot of work to do to exploit the environment.

Your biggest risk (See: not a professional risk analyst) is likely the chance of a hacker, by a stroke of shear miracle, is the possibility of having one of your authoritative DNS slaves get hijacked. Likely to result in partial defacement, or if the attacker is truly brilliant, some 'poisoning' and information theft (See: SSL/TLS to put a halter on that).

Next biggest (See: not a professional risk analyst) is the corruption of the slave OS requiring re-install/restore.

Ultimately:

It's a fairly solid design, and without a view into the network (which you'll not be expected to provide us), it is quite hard to find shortcomings / faults with the design. The only thing that clearly stands out is that: there are a lot of pieces, a complex setup, and a lot of engineering here... Make sure that there is a business for it.

Ex: You could run Bind9 as an Authoritative Slave, that does recursive/forwarding lookups, and caching all in one daemon. (and saves multihoming / port forwarding / other networking magic to get two DNS daemons answering on the same box).

9
  • 2a. Good idea about a hot standby for the hidden master. I haven't done this before; is it really as simple as keeping the zone, key and config files updated with rsync or whatever, and keeping the host OS updated?
    – user8162
    Sep 26, 2013 at 17:14
  • 1
    I wouldn't be as bold to say "as simple as" but once setup properly the DNS servers should be stable and keep themselves in sync. If you want to have rotating keys, rysnc might be a good option (You should rotate the keys if you get compromised) but it may not be a necessity depending on your security domain. Sep 26, 2013 at 17:24
  • 2b."is it critical to have this many DNS servers?" I could eliminate a lot of servers by (a) not running a hidden master and (b) configuring authoritative servers to handle recursion from internal and DMZ clients. However, neither is a security best practice. See section 3.2.2 of the NIST DNS security guide and pages 28 and 94 of the Michael W. Lucas guide to DNSSEC. This is why I spec'd separate authoritative and recursive servers as a requirement.
    – user8162
    Sep 26, 2013 at 17:25
  • 1
    The question you'll have to answer is: Do you have a business need for the complexity? Just blindly following a "Best Practice" can lead to over engineering. In a small shop <50 employees... Building a PCI Compliant solution is often much more expensive than just outsourcing purchasing to a vendor. Sep 26, 2013 at 17:27
  • Yes, we need to run DNNSEC. As described in the Lucas book and elsewhere, an authoritative server never returns authenticated data. Thus, internal clients doing DNSSEC validation would need to query a recursive server.
    – user8162
    Sep 26, 2013 at 17:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.