SquidGuard e Active Directory: como lidar com vários grupos?

2

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?

    
por Massimo 19.05.2010 / 15:15

1 resposta

2

Resolvido ... parcialmente. Eu desconsiderei totalmente o fato de que você pode adicionar outra condição à consulta LDAP ... por isso é muito fácil verificar a associação de mais de um grupo.

Algumas ressalvas:

  • Ainda é necessário definir uma ACL do SquidGuard para todas as combinações possíveis de grupos
  • Você precisa adicionar pelo menos duas outras diretivas à configuração do SquidGuard: ldapbinddn (que define o nome de usuário a ser usado para se conectar ao AD e você precisa usar o DN do objeto de usuário aqui, não o nome de usuário simples! ) e ldapbindpass , que define a senha do usuário.
  • O SquidGuard precisa ser compilado com o suporte LDAP, que não é compilado por padrão.

... mas pelo menos os grupos reais da AD podem ser reduzidos ao mínimo.

    
por 24.05.2010 / 10:33