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.
    • H
      helberttavares
      last edited by

      Marcelloc, para o meu cenario teria que ser os passos indicados no link abaixo?

      http://forum.pfsense.org/index.php/topic,47532.msg249812.html#msg249812

      No meu cenario tenho que usar proxy transparente…

      Helbert Tavares
      OTNE - Gestão em TI

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

        @helberttavares:

        Marcelloc, para o meu cenario teria que ser os passos indicados no link abaixo?

        http://forum.pfsense.org/index.php/topic,47532.msg249812.html#msg249812

        No meu cenario tenho que usar proxy transparente…

        A configuração deste tópico exige a configuração do proxy, via WAP ou direto no browser.
        O que fica transparente é a autenticação, que não aparece tela de usuário e login.

        att,
        Marcello Coutinho

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

        Help a community developer! ;D

        1 Reply Last reply Reply Quote 0
        • 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
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.