tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Using blocklistd, and a bind plugin, to manage allowlists?



Hello all,

At $WORK I have a collection of scripts that attempt to allow certain hosts through the firewall by name; that is, they periodically look up certain hostname(s) and use the results to populate an NPF table.  These table is used to allow local hosts to make *outbound* connections to the desired hosts; inbound connections are (generally) not allowed at all.

We've run into a problem recently where the round robin lookup for one of the hosts turns quickly enough that several subsequent DNS lookup all return different IP addresses. It may be that *every* DNS query returns a different subset of hosts, and of course I can't make that work with my current strategy.  With outbound connections, however, a connection attempt will always be preceded by a DNS lookup of the address it will then connect to, so in theory there is an opportunity to update the table on the fly.  It should be almost trivial to construct a name-based firewall for outbound connections using a plugin to named(8) that communicates with blocklistd(8), using a blocklist rule that adds the hosts to an NPF table for *allow* rather than blocking them.  It seems so trivial that someone must have done it already, but googling around didn't turn anything up.

Is there a better way to set up a name-based firewall on NetBSD?  Is there a package that I missed that already does this?  If I do it myself, the packet format that blocklistd uses is private; is it possible to expose it in a header for other applications to use?

Thanks,

Konrad Schroder
perseant%hhhh.org@localhost


Home | Main Index | Thread Index | Old Index