Estou configurando o SquidGuard (1.4) para validar usuários em um domínio do Active Directory e aplicar ACLs com base na associação ao grupo; este é um exemplo do meu squidGuard.conf:
src AD_Group_A {
ldapusersearch ldap://my.dc.name/dc=domain,dc=com?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=cn=Group_A%2cdc=domain%2cdc=com))
}
src AD_Group_B {
ldapusersearch ldap://my.dc.name/dc=domain,dc=com?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=cn=Group_B%2cdc=domain%2cdc=com))
}
dest dest_a {
domainlist dest_a/domains
urllist dest_b/urls
log dest_a.log
}
dest dest_b {
domainlist dest_b/domains
urllist dest_b/urls
log dest_b.log
}
acl {
AD_Group_A {
pass dest_a !dest_b all
redirect http://some.url
}
AD_Group_B {
pass !dest_a dest_b all
redirect http://some.url
}
default {
pass !dest_a !dest_b all
redirect http://some.url
}
}
Tudo funciona bem se um usuário é membro do Group_A OR Group_B. Mas, se um usuário for membro de BOTH grupos, apenas a primeira regra de origem será avaliada, aplicando-se apenas a primeira ACL.
Entendo que isso se deva ao modo como a correspondência de regras de origem funciona no SquidGuard (se uma regra for correspondida, a avaliação parar nela e, em seguida, a ACL relacionada será aplicada); então eu tentei isso também:
src AD_Group_A_B {
ldapusersearch ldap://my.dc.name/dc=domain,dc=com?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=cn=Group_A%2cdc=domain%2cdc=com))
ldapusersearch ldap://my.dc.name/dc=domain,dc=com?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=cn=Group_B%2cdc=domain%2cdc=com))
}
acl {
AD_Group_A_B {
pass dest_a dest_b all
redirect http://some.url
}
[...]
}
Mas isso também não funciona: se um usuário é membro de um desses grupos, toda a regra de origem é correspondida de qualquer maneira, então ele pode alcançar ambos os destinos (o que obviamente não é o que eu quero). / p>
A única solução que encontrei até agora é criar um grupo THIRD no AD e atribuir uma regra de origem e uma ACL a ela; mas essa configuração cresce exponencialmente com mais de dois ou três conjuntos de destino.
Existe alguma maneira de lidar melhor com isso?