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

      @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
                                  • marcellocM
                                    marcelloc
                                    last edited by

                                    @richardlindo:

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

                                    cola aqui o comando e o resultado.

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

                                    Help a community developer! ;D

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

                                      Segue.

                                      php.PNG
                                      php.PNG_thumb

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

                                        Aparentemente você não salvou o script em /root/squiguard_ldap.php

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

                                        Help a community developer! ;D

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

                                          Pensei que fosse algo do genero tbm, mas ele existe no local indicado sim.

                                          php2.PNG
                                          php2.PNG_thumb

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

                                            @richardlindo:

                                            Pensei que fosse algo do genero tbm, mas ele existe no local indicado sim.

                                            Olá, alguém tem alguma dica do que fazer ?? Obrigado.

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