• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login
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 May 21, 2013, 11:56 AM

    @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
    • M
      marcelloc
      last edited by May 21, 2013, 12:21 PM

      @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 May 21, 2013, 5:59 PM May 21, 2013, 2:10 PM

        @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
        • M
          marcelloc
          last edited by May 21, 2013, 6:02 PM

          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 May 22, 2013, 10:21 PM May 22, 2013, 1:31 PM

            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
            • M
              marcelloc
              last edited by May 22, 2013, 4:11 PM

              @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 May 22, 2013, 10:22 PM May 22, 2013, 9:43 PM

                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 May 22, 2013, 10:02 PM

                  @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 May 22, 2013, 10:14 PM

                    @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 May 23, 2013, 5:13 PM

                      @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 Jun 3, 2013, 7:56 PM

                        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
                        • M
                          marcelloc
                          last edited by Jun 3, 2013, 8:37 PM

                          @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 Jun 3, 2013, 8:59 PM

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

                            1 Reply Last reply Reply Quote 0
                            • M
                              marcelloc
                              last edited by Jun 3, 2013, 9:08 PM

                              @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 Jun 3, 2013, 9:16 PM

                                Segue.

                                php.PNG
                                php.PNG_thumb

                                1 Reply Last reply Reply Quote 0
                                • M
                                  marcelloc
                                  last edited by Jun 3, 2013, 9:20 PM

                                  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 Jun 3, 2013, 9:22 PM

                                    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 Jun 4, 2013, 9:05 PM

                                      @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
                                      • A
                                        Augusto
                                        last edited by Aug 19, 2013, 5:39 PM

                                        Boa tarde!

                                        Estou implementando a função de importação de usuário por grupos do AD e ainda não acertei!

                                        Tenho a versão nova do SquidGuard que já possui o patch.

                                        Efetuei os seguintes passos:

                                        1º em LDAP Optios
                                        -  habilitei o LDAP Filter

                                        • Em LDAP DN : cn=squid,cn=Users,dc=mydomain,dc=local
                                        • Em LDAP Version : Version3

                                        2º Em Groups ACL
                                        Criei um group com nome de Users
                                        Em Client Source passei o seguinte parametro: ldapusersearch ldap://10.10.20.11/DC=mydomain,DC=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=Users%2cDC=mydomain%2cDC=local))

                                        Para efeito de teste neguei todo acesso para esta ACL…!all

                                        Quando vou na estação e abro o navegador ele pede o usuário e senha....autentica normal mas não bloquei nada.

                                        Alguma dica de onde posso estar errando?

                                        1 Reply Last reply Reply Quote 0
                                        • L
                                          lgcosta
                                          last edited by Aug 20, 2013, 4:02 AM

                                          @edge540:

                                          Boa tarde!

                                          Estou implementando a função de importação de usuário por grupos do AD e ainda não acertei!

                                          Não entendi a questão de importação de usuários. Qual outro procedimento usou para a configuração acima ?

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

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post
                                          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.
                                            [[user:consent.lead]]
                                            [[user:consent.not_received]]