Custom DNS Filtering Plugin in BIND 9

Michael De Roover isc at nixmagic.com
Thu Mar 20 13:58:49 UTC 2025


On Wednesday, March 19, 2025 4:05:29 PM CET you wrote:
> Michael,
> 
> you can hardly create a static list from all of the domains that can
> possibly exists.
> 
> I do understand the usefulness of dynamic classification.
> 
> There’s just not a straightforward interface for it now. Somebody will have
> to invest into writing this :shrug:
> 
> Ondrej

Hi Ondrej, I commend your productivity! I saw your work in both BIND-Users and DNSOP. 
No joke, we need more people like this, especially right now. Having had a productivity 
boost on the same day, fist-bump!

To be fair though, not all domains have to be recorded into an RPZ to be useful. For me 
right now, it's only a couple of domains related to Facebook, YouTube, Windows Update, 
and Tor. Wildcards being allowed, means that this zone is only 42 lines long.

> Thinking aloud - perhaps, we can extend the plugin API (and RPZ) in a way to add the 
classification to the message processing and then the RPZ processing could read the 
classification and take an action?

> But that’s quite a huge chunk of work.

About that... I like the idea, but can you guarantee that it stays within BIND? How would 
you envision such traffic flow from threat analysis to zone inclusion? Would such additions 
to the protocol require standardization in DNSOP?

The way I envision it is as follows:

Suppose that a request is made to malicious01.nixmagic.com. Sentinel node on 
ns1.internal.nixmagic.com makes a report, and wraps it up into an intervention package. 
This is to be pushed into the RPZ zone, or whatever else is responsible for DNS rewrite 
through internal DNS - BIND here.

So that sentinel program made its call, classified it locally, and pushed new records 
accordingly. Does the DNS server and its zone file still need to know more than that? If so, 
how does that affect the protocol performed between sentinel and nameserver, as well as 
the protocol performed between nameserver and future clients? If not, could it redirect to 
different destinations based on such classification data?

My concern here is mostly with the protocol, and where these databases are held. My 
belief is that the DNS server does not need to know about the classification details of such 
a threat. That's the responsibility of the sentinel to determine, and keep records of.

That being said, I do like the idea of exploring this into further detail. As you may be able 
to tell by now, I have explored the idea of a sentinel as an SMTP edge before. Provided 
sufficient actionable rationale and/or code relevant to BIND, would ISC be willing to 
collaborate on such an ordeal?

> If this is something that is going to be open-source and the whole BIND 9 users 
community would benefit from this, I would love to hear and see more.

Out of curiosity, do you think that the code I wrote for building zone files may be useful 
here? I committed it locally as mkbind, similar in nature to keama. However, the JSON 
syntax is built only against my own infrastructure, which is not as complex as that of 
other members on this and the DNSOP list. Most importantly, it still deals with /24 only. 
Binary conversion to handle classless.. it's a roadmap item, but one I'd rather push down 
until needed. Nonetheless, it can handle zones and has several logic items for 
deduplication (e.g. A/PTR, mobility between zone suffixes, etc).

-- 
Met vriendelijke groet,
Michael De Roover

Mail: isc at nixmagic.com
Web: michael.de.roover.eu.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/bind-users/attachments/20250320/1051483a/attachment.htm>


More information about the bind-users mailing list