[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Openldap, kerberos backend, and SASL



On Wed, 2009-03-04 at 18:20 -0800, Howard Chu wrote:
> Da Rock wrote:
> > On Wed, 2009-03-04 at 17:27 -0800, Howard Chu wrote:
> >> You're missing the obvious fact that GSSAPI/Kerberos is not the only secure
> >> SASL mechanism available in this picture, and it is obviously not the one the
> >> KDC uses to talk to LDAP.
> 
> > I'm aware that SASL GSSAPI is not the only SASL auth on offer, but I'm
> > not sure of the latter part of your statement: do you mean that the ldap
> > used as a backend cannot use the kdc using the ldap as the backend for
> > authentication?
> 
> The slapd can use SASL/Kerberos to authenticate everyone *except* requests 
> from the KDC itself, because that would cause the chicken'n'egg loop that you 
> already alluded to. The Heimdal code always uses SASL/EXTERNAL to talk to 
> ldap, for this very reason.
> 

Thats the answer I'm looking for, then.

> > You have awoken an alternative in my mind, though. I'll just go and
> > stick my head back in my Openldap doc under SASL for a bit- I'll
> > probably come back with another stupid question shortly... :)
> >
> >>> A couple of points of interest come to mind:
> >>>
> >>> 1. Security of the ldapi socket needs to be paramount. Permission should
> >>> be as tight as can be allowed so that only access is as necessary for
> >>> use. On top of this, ACLs should only allow heimdal itself to access at
> >>> least the keys (users and passwords could be changed by other means (?)
> >>> such as secure web or script as the keys are what allows a user to do
> >>> what they want and are what could be stolen or targeted at any rate).
> 
> >> No, security of the ldapi socket is irrelevant since the identity of the
> >> client connecting to the socket is what's actually used for the LDAP server's
> >> authentication/authorization purposes.
> 
> > Surely at least some form of protection from say bruteforce or other
> > form of attack should be implemented here? Stands to reason that only
> > users or services that need something should be allowed access to it.
> > Why leave a hole in the wall when a door could be used to keep out the
> > nasties?
> 
> There is no hole in this wall. An LDAP server is designed to securely process 
> requests from multiple disparate clients. If your KDC and its host machine are 
> secure, and the ACLs in your slapd are correct, then the issue is closed. You 
> cannot bruteforce SASL/EXTERNAL over ldapi://. You can only fool it if you 
> already have superuser access on the host system, and in that case, you were 
> lost already anyway.
> 
What about pretending to be a user with access to the socket (like ldap
or the kdc users)? First rule of sysadmin: don't leave open a door that
doesn't need to be open- even an internal one. But if you're talking
about only superuser access on the socket then you're doing this
anyway... :)

> You can of course choose to dedicate one LDAP server to back your KDC, but if 
> you're going to isolate it from any other usage in this manner, then you're no 
> longer getting any special benefit from using LDAP.
> 

I'm not sure exactly what I'm doing yet, but I am researching the
possibilities. One possibility is user management, another is
replication for other kdc's, not sure about any of these yet.

Thank you all for your input and experience here- this is exactly the
info I needed to resolve the dilemma I was binding myself into... :)

Cheers