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.
    • 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
                                      • R
                                        richardlindo
                                        last edited by

                                        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.

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

                                          @richardlindo:

                                          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?

                                          Executou por onde? na console/ssh?

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

                                          Help a community developer! ;D

                                          1 Reply Last reply Reply Quote 0
                                          • R
                                            richardlindo
                                            last edited by

                                            Opa, "tentei" executar no ssh. Não sei se estou tentando executar de forma erronea.

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