Alan DeKok wrote:
David Mitchell wrote:
We've run into a potential problem with our FreeRadius setup. We currently use per-client keys for security. We have begun testing dynamic DNS updates and have run into the problem of having the radius server fail to start because an entry in clients.conf refers to a DNS entry which doesn't exist. We could use only IP addresses in clients.conf, but that means we can't have dynamic addresses for clients. We could also use per-subnet keys but we really want to keep the increase in security afforded by having unique keys for each host.
Is it difficult to configure the clients with static IP's? If so, why?
We do manage the clients now with static IP addresses, but using dynamic addresses gives us additional flexibility with respect to managing our address space. It's not a mandatory requirement for us, but I've been asked to look into it since I'm the most familiar with the code.
My question is two-fold. One, does anybody know of a workaround with the current code base I haven't thought of? Two, what sorts of requirements should I include if I code up patch to add this feature? Certainly I would guess that there would have to be a way to keep the current functionality where responding to authentication requests would not require any DNS requests. But in our dynamic DNS case, I would like the server to look up the reverse DNS entry of the source IP address on an incoming request and use that result to determine which clients.conf entry to use.
This would mean that an attacker can send you packets where the source IP has no DNS entry. The RADIUS server would then try to resolve DNS, and fail, potentially causing a DoS attack.
That's a good point. Perhaps it would be possible to handle the DNS request in a non-blocking manner? It would make the implementation trickier but should prevent any bogus requests from blocking legitimate ones.
Remember, it has to do the right thing both for the cases you want it to work, AND for the cases where you don't want it to die.
This would mean caching the FQDN names from the clients.conf file somewhere and then searching that list with the results of the DNS query. Or alternatively doing something more sophisticated such as determining the key to use based on attributes in the request itself. Any feedback on the direction I should take before I start trying to code something up would be appreciated. Thanks in advance,
I would suggest having a two-level client definition. One, define a network/mask for such dynamic clients. Two, define a mapping of secrets, based on the attributes in the packet.
That should be fairly straightforward, possibly at the expense of making the client.conf syntax more complex. As long as the clients can all be configured to get something unique yet consistent into the attribute list of request packets, it would probably be a pretty flexible tool. Thanks for the feedback, that helps give me some guidance on what direction to start out in as I look into how to implement this. -David Mitchell
Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
-- ----------------------------------------------------------------- | David Mitchell (mitchell@ucar.edu) Network Engineer IV | | Tel: (303) 497-1845 National Center for | | FAX: (303) 497-1818 Atmospheric Research | -----------------------------------------------------------------