@klowet Thank you for your legwork on this so far!
We were hoping to implement one or two secondary DNS servers for multiple primary DNS servers and before implementing realized this could be a problem and so found this thread.
The security implications of doing this are pretty bad. I would think that there should be two layers of protection against this:
- The "Slave DNS Manager" shouldn't push any records to the secondary DNS servers if the primary server does not match one of the name servers set for the domain
- The secondary servers should refuse to accept records from primary servers that do not match one of the name servers set for the domain
This way if either one fails at least there's another failsafe to protect the security of the domain's DNS. But from what I can tell neither protection exists.
I'm searching through Bind configuration docs to see if there's any such thing. One would think at bare minimum (2) above should be possible, but I haven't found anything yet.
@mr-wolf describes this same thing above with:
I was curious if Bind would check if the slave server would indeed accept a zone update from an master server that's actually not authoritative.
It seems that's indeed true according to
isc.org
Oddly
Plesk seems to say here that using the Slave DNS Manager is a potential workaround to using Centralized DNS with Plesk MultiServer. But given these security implications, I can't see how that's true...
Also good to note: the
Slave DNS Manager is on GitHub, so it could be possible to implement (1) above ourselves.
I've created a feature request on uservoice for a workaround to this problem, but it hasn't been approved yet. The request is to add UI elements to explicitly enable domains to be included in the transfer to the slave. That way if any two or more Primary (Plesk) servers are configured to send conflicting records to the Secondary DNS server, it'll only be because an admin explicitly configured it to do so.