> On 6 Oct 2022, at 03:40, Amos Jeffries <squ...@treenet.co.nz> wrote:
>
> On 6/10/22 02:29, Djerk Geurts wrote:
>> Hi,
>> I’ve got DLAP auth working against FreeIPA, but now I’m trying to get LDAP
>> group all controls working. Initially I used the local unix group filter,
>> which works great as the machine running Squid is able to query group
>> membership through pam. But then I found that nested group membership didn’t
>> work. So now I’m trying to query group membership via LDAP and failing
>> miserably.
>> My config:
>> auth_param basic program /usr/lib/squid/basic_ldap_auth -v 3 -b
>> "cn=users,cn=accounts,dc=DOMAIN,dc=COM" -D
>> "uid=squid-ldap,cn=sysaccounts,cn=etc,dc=DOMAIN,dc=COM" -W
>> "/etc/squid/squid-ldap.cred" -u uid -H LDAPS://ipa.domain.com:636
>> <ldaps://ipa.domain.com:636>
>> […]
>
> To clarify, does the above description mean login with this helper works fine?
Yes, normal logins work fine if I don’t use the group filtering in http_access
> > -b "cn=groups,cn=accounts,dc=DOMAIN,dc=COM" \
> > -f "(&(cn=%g)(member=uid=%u))" \
> > ...
>
> You can add '-d' (lower case) to get a debug trace in cache.log about what is
> happening inside the helper.
Thank you, I’d seen the flag just not where the logs would end up and of course
checked all but cache.log…
> You can use that to confirm the user/group details are arriving properly and
> the filter string is correct before it goes sent to LDAP.
>
> Also, see whether LDAP is having connectivity issues, or search issues, or
> something else is going on.
>
> FWIW, the above reads to me like you are looking up the existence of the
> group rather than the existence of a specific user within a group. My LDAP
> knowledge is weak, so I may be wrong about that.
Yeah, I’ve been wondering this too and my LDAP knowledge is quite poor. And it
turns out that you're absolutely right.
>
>> This ldap search works fine:
>> user@ipa:~$ ldapsearch -x -D 'cn=Directory Manager' -W -b
>> "cn=groups,cn=accounts,dc=DOMAIN,dc=COM" '(&(cn=proxy)(member=uid=user,*))'
>
> I notice that there is an extra ',*' after the username in this filter string
> which is missing on the helper one.
The ldapsearch works fine with and without it. The ,* is meant to match the
rest of the DN but I think isn’t needed. I could be very wrong though. In hind
sight, comparing the search results I now see that my first query returns a
list of group members, but the correct query returns all user details if the
user is a member of the given group.
>
>> So how am I meant to set the filter of ext_ldap_group_acl?
>
> FYI, what the Squid helpers do is replace the %g and %u values and pass the
> resulting string as the 'filter' to LDAP.
>
> Meaning that the filter used by Squid should be the same as the ldapsearch
> filter would be if you were searching for username "%u" in group "%g".
Thank you! This plus a little more Googling has yielded the following search
string and ldap_group config which works (even for nested groups):
## IPA groups via LDAP
external_acl_type ldap_group %LOGIN /usr/lib/squid/ext_ldap_group_acl -d \
-b "cn=users,cn=accounts,dc=DOMAIN,dc=COM" \
-D "uid=squid-ldap,cn=sysaccounts,cn=etc,dc=DOMAIN,dc=COM" \
-W "/etc/squid/squid-ldap.cred" \
-f
"(&(objectclass=person)(uid=%u)(memberOf=cn=%g,cn=groups,cn=accounts,dc=DOMAIN,dc=COM))"
\
-H LDAPS://ipa.domain.com:636
I also found that the credentials file I’m using had the wrong permissions. It
hadn’t shown up earlier as anonymous bind was enabled previously. Interesting
that logging when using `-d` on the auth plugins only gets put into cache.log
and not the Journal.
--
Thank you,
Djerk
_______________________________________________
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users