Tutorial - SquidGuard + LdapGroup (permissão por grupo no ad)
-
VEJA ATUALIZAÇÃO DESSE PATCH EM:
http://forum.pfsense.org/index.php/topic,59242.0.html
pegando o bonde andando…. eu fiz um script um tempo atras exatamente para suprir a necessidade de um cliente com isso, fazer acl por grupo, segue então como fiz:
Aplicar o patch no pfsense (com o pacote já instalado), com o comando abaixo:
fetch -q -o /tmp/ http://www.mundounix.com.br/~gugabsd/squidguard-ldap-search.patch && cd /usr/local/pkg && patch -p0 < /tmp/squidguard-ldap-search.patch
Execute em Diagnostics > command prompt
Vai aparecer uma opção nova na configuração do squidguard, conforme a figura abaixo:
Configure o seu Ldap DN e senha (igual ao do squid)
E crie uma acl baseada na da figura abaixo:
No exemplo acima, o grupo é o CN=ti (é tudo uma linha só, sem quebra)
Qualquer dúvida, da um grito ai.
Abraços
-
Obrigado Luiz e Marcelloc pelos esclarecimentos.
-
Pessoal, Boa tarde,
Estou implementando o squid com squidGuard onde eu trabalho, e gostaria de uma ajuda referente o squidguard com grupos do AD, vi que o pessoal conseguiu com o script postado aqui no forum, algume poderia me auxiliar como eu configuro o squidguard, para verificar os grupos com o script postato.
Obrigado
-
Pessoal, Boa tarde,
Estou implementando o squid com squidGuard onde eu trabalho, e gostaria de uma ajuda referente o squidguard com grupos do AD, vi que o pessoal conseguiu com o script postado aqui no forum, algume poderia me auxiliar como eu configuro o squidguard, para verificar os grupos com o script postato.
Obrigado
fcruzcoelho,
Bem vindo ao fórum! :)Leia este tópico para entender como aplicar as configurações. Aqui tem duas soluções, uma via script e outra via patch.
Boa leitura.
att,
Marcello Coutinho -
Você conseguiu testar?
Acho que da forma que o script ficou é até mais econômico na questão de consumo de recursos já que ele não vai no ad a cada acesso para verificar o grupo.
Olá Marcello!
Testado e aprovado.
Coloquei no cron a cada 1 minuto.
Ficou ótimo!
Obrigado pela ajuda!
ccesario, Boa noite
Poderia me ajudar, pois estou utilizando o script mas não obtive sucesso, não consigo fazer as regras baseada nos grupos do ad.
Obrigado
-
Pessoal, Boa tarde,
Estou implementando o squid com squidGuard onde eu trabalho, e gostaria de uma ajuda referente o squidguard com grupos do AD, vi que o pessoal conseguiu com o script postado aqui no forum, algume poderia me auxiliar como eu configuro o squidguard, para verificar os grupos com o script postato.
Obrigado
fcruzcoelho,
Bem vindo ao fórum! :)Leia este tópico para entender como aplicar as configurações. Aqui tem duas soluções, uma via script e outra via patch.
Boa leitura.
att,
Marcello CoutinhoPessoal, Boa tarde,
Estou implementando o squid com squidGuard onde eu trabalho, e gostaria de uma ajuda referente o squidguard com grupos do AD, vi que o pessoal conseguiu com o script postado aqui no forum, algume poderia me auxiliar como eu configuro o squidguard, para verificar os grupos com o script postato.
Obrigado
fcruzcoelho,
Bem vindo ao fórum! :)Leia este tópico para entender como aplicar as configurações. Aqui tem duas soluções, uma via script e outra via patch.
Boa leitura.
att,
Marcello CoutinhoVocê conseguiu testar?
Acho que da forma que o script ficou é até mais econômico na questão de consumo de recursos já que ele não vai no ad a cada acesso para verificar o grupo.
Olá Marcello!
Testado e aprovado.
Coloquei no cron a cada 1 minuto.
Ficou ótimo!
Obrigado pela ajuda!
Marcello, Boa Noite
eu tentei as duas formas, e não tive sucesso, via script precisa usar qual configuração no campo client source, para a pesquisa do usuario dentro do grupo??.
Obrigado
-
fcruzcoelho, até onde você conseguiu configurar?
Criou os grupos com o mesmo nome do grupo no ad?
-
Obrigado Marcelloc!
Deu certo, os usuários membros dos grupos no AD aparecem em Client source no SquidGuard mas os bloqueios/acessos não estão saindo pelas permissões dos grupos mas apenas pelo Common ACL.
O que pode ser?
Você conseguiu testar?
Acho que da forma que o script ficou é até mais econômico na questão de consumo de recursos já que ele não vai no ad a cada acesso para verificar o grupo.
Olá Marcello!
Testado e aprovado.
Coloquei no cron a cada 1 minuto.
Ficou ótimo!
Obrigado pela ajuda!
Pessoal me ajuda não conseguir sincronizar os grupos com os usuario no squidguard. estou utilizando o metodo no script oq precisa fazer a mais. fico no agurado
-
Pessoal me ajuda não conseguir sincronizar os grupos com os usuario no squidguard. estou utilizando o metodo no script oq precisa fazer a mais. fico no agurado
Qual o retorno do comando quando você roda ele na console?
-
Pessoal,
O ccesario começou a alterar um script que extrai os usuarios de um grupo específico para aplica nas acls do squidguard.
Peguei com ele hoje e consegui integrar o script no pfsense.
squidguard_ldap.php
// based on http://samjlevy.com/2011/02/using-php-and-ldap-to-list-of-members-of-an-active-directory-group/ // pfsense integration by marcelloc and ccesario # AD HOST (required) $ldap_host = "192.168.3.1"; # AD DIRECTORY DN(required) $ldap_dn = "DC=domain,DC=local"; # BIND USER(required) $user_bind = "cn=squidguard,cn=Users,DC=domain,DC=local"; # PASSWORD BIND(required) $password = "super_secret_password"; #if you need to apply any prefix or sufix to retreived user #example: prefix user with domain(required) #$user_mask="DOMAIN\USER"; $user_mask="USER"; #################### # End of user options # #################### require_once("/etc/inc/util.inc"); require_once("/etc/inc/functions.inc"); require_once("/etc/inc/pkg-utils.inc"); require_once("/etc/inc/globals.inc"); #mount filesystem writable conf_mount_rw(); function explode_dn($dn, $with_attributes=0) { $result = ldap_explode_dn($dn, $with_attributes); foreach($result as $key => $value) { $result[$key] = $value; } return $result; } function get_ldap_members($group,$user,$password) { global $ldap_host; global $ldap_dn; $LDAPFieldsToFind = array("member"); $ldap = ldap_connect($ldap_host) or die("Could not connect to LDAP"); // OPTIONS TO AD ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION,3); ldap_set_option($ldap, LDAP_OPT_REFERRALS,0); ldap_bind($ldap, $user, $password) or die("Could not bind to LDAP"); $results = ldap_search($ldap,$ldap_dn,"cn=" . $group,$LDAPFieldsToFind); $member_list = ldap_get_entries($ldap, $results); $group_member_details = array(); foreach($member_list[0] as $list) if (is_array($list)) foreach($list as $member) { $member_dn = explode_dn($member); $member_cn = str_replace("CN=","",$member_dn[0]); $member_search = ldap_search($ldap, $ldap_dn, "(CN=" . $member_cn . ")"); $member_details = ldap_get_entries($ldap, $member_search); $group_member_details[] = array($member_details[0]['samaccountname'][0]); } ldap_close($ldap); array_shift($group_member_details); return $group_member_details; } // Read Pfsense config global $config,$g; $id=0; $apply_config=0; if (is_array ($config['installedpackages']['squidguardacl']['config'])) foreach($config['installedpackages']['squidguardacl']['config'] as $group) { $members=""; echo "Group : " . $group['name']."\n"; $result = get_ldap_members($group['name'],$user_bind,$password); foreach($result as $key => $value) { if (preg_match ("/\w+/",$value[0])) $members .= "'".preg_replace("/USER/",$value[0],$user_mask)."' "; } if (!empty($members)) if($config['installedpackages']['squidguardacl']['config'][$id]['source'] != $members){ $config['installedpackages']['squidguardacl']['config'][$id]['source'] = $members; $apply_config++; } $id++; } if ($apply_config > 0){ print "user list from LDAP is different from current group, applying new configuration..."; write_config(); include("/usr/local/pkg/squidguard.inc"); squidguard_resync(); print "done\n"; } #mount filesystem read-only conf_mount_ro(); ?>
Para executar o script no squiguard:
-
Copie/crie o arquivo par ao seu pfsense
-
Edite os parametros do inicio do script
-
Altere o nome dos grupos do squidguard para o mesmo nome do grupo no ad
-
execute o script via console
O procedimento no squidguard é manual/via cron para não 'atrapalhar' o timeline de um pacote suportado pelo core team(eu acho).
Claro que para o dansguardian, o script já estará integrado na interface gráfica e com suporte a multiplos servidores LDAP. ;)
att,
Marcello CoutinhoMarcelo, Bom dia
Estou utilizando o script para importar os usuarios do meu ad para o pfsense, me deparei com um problema referente uma grande quantidade de usuario em um grupo, tenho uma grupo G_BASICO com 1800 Usuarios, quando eu rodo o script ele não importa os usuarios desse grupo e retorna o error
Warning: Invalid argument supplied for foreach() in /etc/scripts/squidguard_ldap.php on line 40
user list from LDAP is different from current group, applying new configuration…doneTem algum limite no script??
Fico no aguardo
-
-
Tem algum limite no script??
Não, pode ter no campo do squidguard.
Algumas mensagens de erro durante a varredura da arvore do ad pode justificar a mensagem
Warning: Invalid argument supplied for foreach() in /etc/scripts/squidguard_ldap.php on line 40O seu grupo do ad está identico ao grupo do squidguard?
-
Tem algum limite no script??
Não, pode ter no campo do squidguard.
Algumas mensagens de erro durante a varredura da arvore do ad pode justificar a mensagem
Warning: Invalid argument supplied for foreach() in /etc/scripts/squidguard_ldap.php on line 40O seu grupo do ad está identico ao grupo do squidguard?
Sim os grupos são identicos,
Sobre a pesquisa, em conversa com nosso analista windows ele inforamou que por padrão a pesquisa ldap é de 2000 usuarios, mas que podemos alterar essa pesquisa nos scripts, acho que no script que vc fez tem como alterar esse padrão, seria possivel??
Abs
-
Coloca no seu script esta linha:
var_dump($members);
antes da linha:
if (!empty($members))
Rode o script na console e veja se ele mostra os usuarios do grupo.
-
Marcelo,
Conseguir visualizar os usuários, estamos analisando se o problema esta no grupo ou em algum usuário desse grupo, assim que resolver posto o resultado.
Obrigado
-
Conseguir visualizar os usuários, estamos analisando se o problema esta no grupo ou em algum usuário desse grupo, assim que resolver posto o resultado.
Acentos e caracteres especiais dão problema com certeza.
ps:
Tente reduzir seus posts, fica difícil encontrar a informação que você incluiu. -
Marcelo,
Fiz um teste com 1800 usuarios em um grupo e rodei o script, o mesmo importou apenas 1500, usuários,
será que não tem algum bug no script que limita essa importação? estou debugando o maximo, pois tenho grupos,
Com 3000 usuarios não conheço nada de php, mas estou passando o feedback dos possiveis problemas encontrado.
para ajudar nas possiveis correções do mesmo.Obrigado desde já.
-
Marcelo,
Fiz um teste com 1800 usuarios em um grupo e rodei o script, o mesmo importou apenas 1500, usuários,
será que não tem algum bug no script que limita essa importação? estou debugando o maximo, pois tenho grupos,
Com 3000 usuarios não conheço nada de php, mas estou passando o feedback dos possiveis problemas encontrado.
para ajudar nas possiveis correções do mesmo.Obrigado desde já.
O patch que fiz para o squidguard que faz consulta direto no servidor ldap não serve para o teu caso ?
http://forum.pfsense.org/index.php/topic,59242.0.html
-
Marcelo,
Fiz um teste com 1800 usuarios em um grupo e rodei o script, o mesmo importou apenas 1500, usuários,
será que não tem algum bug no script que limita essa importação? estou debugando o maximo, pois tenho grupos,
Com 3000 usuarios não conheço nada de php, mas estou passando o feedback dos possiveis problemas encontrado.
para ajudar nas possiveis correções do mesmo.Obrigado desde já.
O patch que fiz para o squidguard que faz consulta direto no servidor ldap não serve para o teu caso ?
http://forum.pfsense.org/index.php/topic,59242.0.html
Luiz, Obrigado pelo retorno, então eu ate instalei o patch que vc desenvolveu, mas o mesmo não funcionou.
Os usuarios autenticão mas não entra na politica de bloqueio do squidguard por grupo utilizando o seu patch.
deixando os usuarios com navegação full, houve alguma correção? poderia me ajudar com essas configurações.Obrigado.
-
Marcelo,
Fiz um teste com 1800 usuarios em um grupo e rodei o script, o mesmo importou apenas 1500, usuários,
será que não tem algum bug no script que limita essa importação? estou debugando o maximo, pois tenho grupos,
Com 3000 usuarios não conheço nada de php, mas estou passando o feedback dos possiveis problemas encontrado.
para ajudar nas possiveis correções do mesmo.Obrigado desde já.
O patch que fiz para o squidguard que faz consulta direto no servidor ldap não serve para o teu caso ?
http://forum.pfsense.org/index.php/topic,59242.0.html
Luiz, Obrigado pelo retorno, então eu ate instalei o patch que vc desenvolveu, mas o mesmo não funcionou.
Os usuarios autenticão mas não entra na politica de bloqueio do squidguard por grupo utilizando o seu patch.
deixando os usuarios com navegação full, houve alguma correção? poderia me ajudar com essas configurações.Obrigado.
Luiz, Boa tarde
Fiz os teste om o seu patch e aparentemente esta funcionando, conseguir fazer fuincionar com a seguinte.
ldapusersearch ldap://domain.com.br:3268/DC=domain,DC=com,DC=br?sAMAccountName?sub?(&(sAMAccountName=%s)
(memberOf=CN=web_lib_dir%2cCN=Users%2cDC=domain%2cDC=com%2cDC=br))Só não funciona quando o grupo faz parte de uma OU especifica tipo (AcessoWeb) vc conseguiu fazer esse teste.
Abs
-
Boa Tarde Pessoal.
Estou tentando configurar esse script https://github.com/ccesario/public/blob/master/squiguard_ldap.php mas devo estar esquecendo de algo e preciso de uma ajuda de vocês.
Tenho 3 grupos criados no ad, e criei esses 3 grupos também no squidguard.
No cenário atual , eu já consigo usar os usuarios do AD para navegar no proxy, ele até bloqueia normalmente.
Copiei o conteudo do script e fiz ele no filer. Mas quando tento executar o script ele retorna erro: On input file specified. Estou executando alguma coisa errada?obrigado e no aguardo.