Hi Vernon,

There's a functionality [1] to do all these things (and more), you
just can't read/write complicated rules from RPC compatible format
(DNS zone files). Feel free to contribute of course.

Marek

[1]: 
http://knot-resolver.readthedocs.io/en/stable/modules.html#dns-application-firewall

On Fri, Oct 6, 2017 at 9:38 AM, Vernon Schryver <v...@rhyolite.com> wrote:
>> From: =?UTF-8?B?VmxhZGltw61yIMSMdW7DoXQ=?= <vladimir.cunat+i...@nic.cz>
>
>> The current very limited implementation of RPZ in knot-resolver [1] is
>> done via a couple dozen lines of lua code, i.e. only JIT-compiled.  The
>> approach might remain similar, perhaps a bit more modularized, but in
>> any case I expect it would be included by default, so I wouldn't fear
>> about users having to recompile.
>>
>> [1]
>> https://gitlab.labs.nic.cz/knot/knot-resolver/blob/v1.4.0/modules/policy/policy.lua#L294
>
> I wish I wouldn't offend people when I point out that a mechanism
> that uses local zone files is not a very limited response policy
> zone implementation.  Such things might be far better than real
> "rpz", but they're not "rpz".  (I can make a case for them being
> better although I don't buy it, perhaps because I'm biased.)
>
> Overwriting public DNS data triggered by qnames has always been trivial,
> but that is not "rpz."  Simply fire up a local authority server with
> your own "DNS lies" and point your resolvers to it, perhaps with custom
> "hints" files.  If you're running combined authority/resolver code
> such as BIND, simply add some local zone files.  But such ad hoc
> authority server schemes as well as the new so called "rpz" schemes
> of adding local zone files to resolvers the lack features that motiviated
> the original implementation of real RPZ including:
>
>   - distributed policy zones, including from external organizations
>       This sounds minor, but it is major.  It's related to why so few
>       organizations maintain their own anti-spam DNS blacklists.
>       You could use FTP, rsync, HTTP, etc. and a cron job, but in
>       practice you won't.  And if you did, it updates would have
>       latencies of hours or days instead of seconds with real RPZ.
>
>   - dynamically combine policy from multiple sources
>       In theory this could be done with some perl, awk, or even
>       Bourne shell code, but not in practice at scale.
>
>   - policies triggered by the contents of A and AAAA responses or by
>          the names or IP addresses of authorities
>       The bad guys can and do register new domains faster than you can
>       update your local blacklist, faster than they can hijack new IP
>       addresses for those new domains, and faster than they'd like to
>       establish new authorities serving those new domains.
>
>   - no need to restart the resolver to reload the zone
>       This not only minimizes end user disruption when the zones
>       are reloaded but allows organization-wide policy changes with
>       latencies measured in seconds.
>
> In other words, hacking local zone file qname overrides into a
> resolver is not hard (including CNAME and DNAME chains).  The horrid
> code involves triggering on A or AAAA contents and authority names
> and addresses...well there're also SOA timers, IXFR, AXFR, Notify,
> and TSIG, but that code is less horrid than voluminous.
>
> Please don't misunderstand me as saying no one else can or should
> write real RPZ code.  Many people could and I really wish they
> would.  That's why I spent a lot effort outside my comfort zone on
> the I-D.  What bugs me are implementations of so called RPZ and RRL
> that share only the acronyms with the BIND stuff.
>
>
> Vernon Schryver    v...@rhyolite.com
>
>
> _______________________________________________
> DNSOP mailing list
> DNSOP@ietf.org
> https://www.ietf.org/mailman/listinfo/dnsop
>

_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to