Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Tutorial - SquidGuard + LdapGroup (permissão por grupo no ad)

    Scheduled Pinned Locked Moved Portuguese
    202 Posts 30 Posters 93.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      helberttavares
      last edited by

      Boa tarde!!
      Obrigado pelo esclarecimento Marcelloc.

      Só mais algumas perguntas…

      Provavelmente seu squid não esta autenticando os usuários.

      Nunca trabalhei com proxy não transparente o que preciso fazer para o squid autenticar os usuários? Tenho que criar os usuarios no squid?

      Já fiz todos os passos…os usuários e grupos do AD ja estão sincronizados com o squidguard, o que esta faltando para finalizar essa configuração?

      Helbert Tavares
      OTNE - Gestão em TI

      1 Reply Last reply Reply Quote 0
      • marcellocM
        marcelloc
        last edited by

        @helberttavares:

        O que preciso fazer para o squid autenticar os usuários? Tenho que criar os usuarios no squid?

        Depois de dar uma boa olhada nos tutoriais, você pode escolher qual metodo de autenticação você quer usar no squid e configura o proxy nos usuarios(via WAP, GPO ou na mão)

        @helberttavares:

        Já fiz todos os passos…os usuários e grupos do AD ja estão sincronizados com o squidguard, o que esta faltando para finalizar essa configuração?

        Falta finalizar o procedimento da pergunta acima.

        Treinamentos de Elite: http://sys-squad.com

        Help a community developer! ;D

        1 Reply Last reply Reply Quote 0
        • L
          lgcosta
          last edited by

          VEJA ATUALIZAÇÃO DESSE PATCH EM:

          http://forum.pfsense.org/index.php/topic,59242.0.html

          @Luiz:

          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

          Luiz Gustavo - Suporte pfSense no Brasil
          mundounix.com.br

          1 Reply Last reply Reply Quote 0
          • H
            helberttavares
            last edited by

            Obrigado Luiz e Marcelloc pelos esclarecimentos.

            Helbert Tavares
            OTNE - Gestão em TI

            1 Reply Last reply Reply Quote 0
            • F
              fcruzcoelho
              last edited by

              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

              1 Reply Last reply Reply Quote 0
              • marcellocM
                marcelloc
                last edited by

                @fcruzcoelho:

                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

                Treinamentos de Elite: http://sys-squad.com

                Help a community developer! ;D

                1 Reply Last reply Reply Quote 0
                • F
                  fcruzcoelho
                  last edited by

                  @ccesario:

                  @marcelloc:

                  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

                  1 Reply Last reply Reply Quote 0
                  • F
                    fcruzcoelho
                    last edited by

                    @marcelloc:

                    @fcruzcoelho:

                    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

                    @marcelloc:

                    @fcruzcoelho:

                    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

                    @ccesario:

                    @marcelloc:

                    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!

                    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

                    1 Reply Last reply Reply Quote 0
                    • marcellocM
                      marcelloc
                      last edited by

                      fcruzcoelho, até onde você conseguiu configurar?

                      Criou os grupos com o mesmo nome do grupo no ad?

                      Treinamentos de Elite: http://sys-squad.com

                      Help a community developer! ;D

                      1 Reply Last reply Reply Quote 0
                      • F
                        fcruzcoelho
                        last edited by

                        @helberttavares:

                        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?

                        @ccesario:

                        @marcelloc:

                        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

                        1 Reply Last reply Reply Quote 0
                        • marcellocM
                          marcelloc
                          last edited by

                          @fcruzcoelho:

                          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?

                          Treinamentos de Elite: http://sys-squad.com

                          Help a community developer! ;D

                          1 Reply Last reply Reply Quote 0
                          • F
                            fcruzcoelho
                            last edited by

                            @marcelloc:

                            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 Coutinho

                            Marcelo, 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…done

                            Tem algum limite no script??

                            Fico no aguardo

                            1 Reply Last reply Reply Quote 0
                            • marcellocM
                              marcelloc
                              last edited by

                              @fcruzcoelho:

                              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 40

                              O seu grupo do ad está identico ao grupo do squidguard?

                              Treinamentos de Elite: http://sys-squad.com

                              Help a community developer! ;D

                              1 Reply Last reply Reply Quote 0
                              • F
                                fcruzcoelho
                                last edited by

                                @marcelloc:

                                @fcruzcoelho:

                                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 40

                                O 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

                                1 Reply Last reply Reply Quote 0
                                • marcellocM
                                  marcelloc
                                  last edited by

                                  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.

                                  Treinamentos de Elite: http://sys-squad.com

                                  Help a community developer! ;D

                                  1 Reply Last reply Reply Quote 0
                                  • F
                                    fcruzcoelho
                                    last edited by

                                    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

                                    1 Reply Last reply Reply Quote 0
                                    • marcellocM
                                      marcelloc
                                      last edited by

                                      @fcruzcoelho:

                                      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.

                                      Treinamentos de Elite: http://sys-squad.com

                                      Help a community developer! ;D

                                      1 Reply Last reply Reply Quote 0
                                      • F
                                        fcruzcoelho
                                        last edited by

                                        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á.

                                        1 Reply Last reply Reply Quote 0
                                        • L
                                          lgcosta
                                          last edited by

                                          @fcruzcoelho:

                                          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 Gustavo - Suporte pfSense no Brasil
                                          mundounix.com.br

                                          1 Reply Last reply Reply Quote 0
                                          • F
                                            fcruzcoelho
                                            last edited by

                                            @Luiz:

                                            @fcruzcoelho:

                                            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.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.