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.8k 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.
    • 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
                                          • F
                                            fcruzcoelho
                                            last edited by

                                            @fcruzcoelho:

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

                                            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

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