Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Cotas por usuário/tempo no SquidGuard

    Scheduled Pinned Locked Moved Portuguese
    25 Posts 3 Posters 4.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.
    • ?
      A Former User
      last edited by

      essa configuração que fiz funciona deixando o site liberado até que a quota bloqueie.
      não consegui fazer o contrário, bloquear o site e liberar durante o tempo de quota.
      gostaria de fazer essa segunda opção funcionar, pois garantiria que ninguém acessaria o site a não ser que fosse configurado cota pra ele. no entanto, do jeito que está (primeira opção) todo mundo acessa os sites a não ser tenha cota configurada pra o usuário e expirada!
      se alguém puder ajudar nisso agradeço muito!

      uma outra opção que acho legal seria bloquear uma categoria do squid por exemplo. se alguém puder dar uma dica de como fazer isso….

      1 Reply Last reply Reply Quote 0
      • ?
        A Former User
        last edited by

        então pessoal, quero pedir que me ajudem nisso.

        o time_quota funciona legal, entretanto ele diverge das regras do squidguard.
        por exemplo: quero que alguns usuário tenham cota para usar o facebook… então, no squidguardo o facebook está liberado mas a quota bloqueia o facebook assim que for excedido o tempo limite daqueles usuários. o problema disso é que os usuários que eu não especificar no time_quota ficarão com acesso irrestrito ao facebook!
        quero poder bloquear o facebook no squidguard e liberar o acesso enquanto houver tempo de quota. assim somente usarão o facebook os usuário especificados na quota e somente durante o tempo da quota!!!

        alguma idéia de como fazer o squidguard respeitar o time_quota ?

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

          Use como base o tutorial para unificar o log do squidguard no squid.

          assim você consegue chegar no seu objetivo com poucas alterações.

          Não esquece de compartilhar o resultado.  :)

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

          Help a community developer! ;D

          1 Reply Last reply Reply Quote 0
          • ?
            A Former User
            last edited by

            @marcelloc:

            Use como base o tutorial para unificar o log do squidguard no squid.

            assim você consegue chegar no seu objetivo com poucas alterações.

            Não esquece de compartilhar o resultado.  :)

            marcelloc, você deve estar falando do código a ser adicionado no arquivo sgerror.php certo?

            
            $sge_prefix=(preg_match("/\?/",$cl['u'])?"&":"?");
            $str[] = '< iframe > src="'.$cl['u'].$sge_prefix.'sgr=ACCESSDENIED" width="1" height="1" > < /iframe >';
            
            

            entretanto eu estou usando uma página de erro personalizada:

            
            $ip = addslashes($_GET[ip]);
            $uid = addslashes($_GET[uid]);
            $group = addslashes($_GET[group]);
            $target = addslashes($_GET[target]);
            $url = addslashes($_GET[url]);
            ?>
            
            <title>Acesso Negado!</title>
            
            ![](./ntu_logo.gif)
            
            # Acesso Negado!
            
            * * *
            
            IP: " . $ip . "
            ";} ?>
            Nome: " . $uid . "
            ";} ?>
            Grupo: " . $group . "
            ";} ?>
            Regra: ".  $target . "
            ";} ?>
            URL: " . $url;} ?>
            
            * * *
            
            Seu acesso foi bloqueado por uma regra do proxy!
            Entre em contato com o [administrador da rede](mailto:xxxxxx) caso precise de mais informações!
            
            #### Isso é um erro? Limpe o cache do navegador!!!!
            
            eu continuo colocando o código no sgerror.php ou na minha página? 
            obs.:essa página que eu fiz está sendo usada no squidguard (redirect mode:ext url found; redirect info:http://192.168.0.50/ntu.php?ip=%a&uid=%i&group=%s&target=%t&url=%u)[/url]
            
            1 Reply Last reply Reply Quote 0
            • marcellocM
              marcelloc
              last edited by

              A idéia da alteração é fazer o squidguard incluir uma informação na url de tal forma que o squid seja capaz de identificar o "retorno". Neste caso usamos o sgr=ACCESSDENIED para acionar uma acl de bloqueio do squid.

              Altere o código que o squidguard adiciona e faça a sua acl de tempo interpretar isso.

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

              Help a community developer! ;D

              1 Reply Last reply Reply Quote 0
              • ?
                A Former User
                last edited by

                notei o seguinte:
                minha regra atual é:

                
                http_reply_access deny time_quota_blk_dom !time_quota
                
                

                desse jeito funciona normal. bloqueia os domínios quando a cota acaba.

                então tentei bloqueei o facebook no squidguard e mudei a regra para:

                
                http_access allow time_quota_blk_dom time_quota
                
                

                então fui olhar no debug do time quota e notei que ele não mais identificou as requisições. fica somente aguardando e nada!

                mesmo que eu deixe o facebook bloqueado no squidguard, usando a primeira regra o time_quota funciona normal!
                alguma ideia da causa desse comportamento?

                @marcelloc:

                A idéia da alteração é fazer o squidguard incluir uma informação na url de tal forma que o squid seja capaz de identificar o "retorno". Neste caso usamos o sgr=ACCESSDENIED para acionar uma acl de bloqueio do squid.

                Altere o código que o squidguard adiciona e faça a sua acl de tempo interpretar isso.

                certo. já que eu tenho uma url externa para a página de erro e passo os parâmetros pelo GET (url), então não seria mais fácil eu simplesmente adicionar o sgr=ACCESSDENIED nos parâmetros passados? tipo redirect info:http://192.168.0.50/ntu.php?ip=%a&uid=%i&group=%s&target=%t&url=%u&sgr=ACCESSDENIED

                como uso o squid3-dev eu só marquei a opção Log denied pages by squidguard

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

                  @UnDr3aD:

                  então não seria mais fácil eu simplesmente adicionar o sgr=ACCESSDENIED nos parâmetros passados? tipo redirect info:http://192.168.0.50/ntu.php?ip=%a&uid=%i&group=%s&target=%t&url=%u&sgr=ACCESSDENIED

                  É exatamente isso que estou dizendo. coloque informações no squidguard(via redirect ou sgerror) para conseguir acertar uma acl no squid.

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

                  Help a community developer! ;D

                  1 Reply Last reply Reply Quote 0
                  • ?
                    A Former User
                    last edited by

                    fiz o que você falou marcelloc. ele até que funciona, mas nem sempre!
                    pequei aquele codigo php e modifiquei pra colocar na minha pagina personalizada… a mesma coisa! funciona, mas nem sempre! não sei porque!

                    mas marcelloc, isso realmente vai ter efeito sobre o time_quota e squidguard?
                    porque pela que tenho observado, acho que o problema é que o squidguard e o time_quota não tem nenhum tipo de "integração".
                    se eu bloqueio pelo squidguard, mesmo assim o time_quota conta a requisição. e independente da cota existente o squidguard sempre bloqueia!!!!
                    já tentei mudar a posição das declarações no arquivo de configuração (.inc) mas mesmo assim o squidguard continua bloqueando, mesmo que o time_quota esteja liberando.

                    e também tem a observação que fiz anteriormente:
                    @UnDr3aD:

                    notei o seguinte:
                    minha regra atual é:

                    
                    http_reply_access deny time_quota_blk_dom !time_quota
                    
                    

                    desse jeito funciona normal. bloqueia os domínios quando a cota acaba.

                    então tentei bloqueei o facebook no squidguard e mudei a regra para:

                    
                    http_access allow time_quota_blk_dom time_quota
                    
                    

                    então fui olhar no debug do time quota e notei que ele não mais identificou as requisições. fica somente aguardando e nada!

                    mesmo que eu deixe o facebook bloqueado no squidguard, usando a primeira regra o time_quota funciona normal!
                    alguma ideia da causa desse comportamento?

                    não estou vendo nenhuma luz no fim do túnel!  :(

                    1 Reply Last reply Reply Quote 0
                    • ?
                      A Former User
                      last edited by

                      pois bem, sem sucesso até então pra fazer time quota funcionar conjuntamente com o squidguard, "resolvi" meu problema apenas fazendo uma acl liberando os usuários e domínios que estarão na cota. assim o usuário vai ficar com acesso livre ao site até que o time_quota bloqueie.  ;)

                      1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User
                        last edited by

                        Depois de um bom tempo usando o time_quota sem problemas tive um ligeiro contratempo: a atualização do pacote squid3-dev.
                        Ao atualizar o squid notei que o squid não subia o serviço. Fui iniciar ele via linha de comando e foi apresentado o seguinte erro:

                        
                        [2.1-RELEASE][root@megazord.ntu0]/root(2): squid start
                        2014/01/15 13:34:48| Can't use proxy auth because no authentication schemes are fully configured.
                        FATAL: ERROR: Invalid ACL: acl time_quota external time_quota
                        
                        Squid Cache (Version 3.3.10): Terminated abnormally.
                        CPU Usage: 0.037 seconds = 0.037 user + 0.000 sys
                        Maximum Resident Size: 40448 KB
                        Page faults with physical i/o: 0
                        
                        

                        Deu pra perceber logo que estava havendo algum problema com a acl do time_quota! Logo fui verificar se com a atualização algum caminho para o time_quota havia sido mudado ou se foi retirado do pacote, no entanto estava tudo ok.
                        Fui então ver o arquivo de configuração do squid e notei que a configuração que eu havia feito estava alterada. Na atualização do pacote o arquivo de configuração volta para o padrão (as configurações ficam, mas a posição em que elas estavam voltaram para o padrão).
                        Logo tive que fazer novamente a alteração do arquivo squid.inc e mover a declaração do custom options para exatamente antes da declaração Default block all to be sure, ficando assim:

                        
                        			// Allow the other ACLs as long as they authenticate
                        			foreach ($password as $acl)
                        				$conf .= "http_access allow password $acl\n";
                        			}
                        	}
                        
                        	// Custom User Options
                        	$conf .= "# Custom options\n".sq_text_area_decode($settingsconfig['custom_options_squid3'])."\n\n";
                        
                        	$conf .= "# Default block all to be sure\n";
                        	$conf .= "http_access deny allsrc\n";
                        
                        	return $conf;
                        }
                        
                        

                        Essa configuração eu já tinha feito antes e postado aqui, mas com a atualização do pacote ela se fez necessária novamente
                        @UnDr3aD:

                        a primeira coisa que tive que fazer foi mudar a posição do custom options no squid.inc. Isso porque uso o custom option para configurar o time_quota e ele precisa ficar depois das declarações de autenticação do proxy. No local padrão onde o custom options fica, o time_quota sempre dará erro.
                        coloquei o custom options depois das declarações de configuração para autenticação externa e antes da declaração de bloqueio de tudo. veja o trecho:

                        
                        // Onto the ACLs
                        		$password = array('localnet', 'allowed_subnets');
                        		$passwordless = array('unrestricted_hosts');
                        		if ($settings['unrestricted_auth'] == 'on') {
                        			// Even the unrestricted hosts should authenticate
                        			$password = array_merge($password, $passwordless);
                        			$passwordless = array();
                        		}
                        		$passwordless[] = 'noauth';
                        		$password = array_filter($password, 'squid_is_valid_acl');
                        		$passwordless = array_filter($passwordless, 'squid_is_valid_acl');
                        
                        		// Allow the ACLs that don't need to authenticate
                        		foreach ($passwordless as $acl)
                        			$conf .= "http_access allow $acl\n";
                        
                        		if ($auth_method != 'cp'){
                        			// Include squidguard denied acl log in squid
                        			if ($settingsconfig['log_sqd'])
                        				$conf .="http_access deny password sglog\n";
                        			
                        			// Allow the other ACLs as long as they authenticate
                        			foreach ($password as $acl)
                        				$conf .= "http_access allow password $acl\n";
                        			}
                        	        }
                        
                                // Custom User Options 
                        	$conf .= "\n# Custom options\n".sq_text_area_decode($settingsconfig['custom_options_squid3'])."\n\n";
                        
                        	$conf .= "# Default block all to be sure\n";
                        	$conf .= "http_access deny allsrc\n";
                        
                        

                        O custom option deve estar imediatamente antes do http_access deny allsrc

                        após o procedimento acima a configuração do time_quota pode ser feita pelo campo custom options do squid que vai funfar ok!

                        Mesmo depois de fazer essa alteração o squid não estava querendo subir. Tive que limpar o campo custom options na interface (recortei tudo que tinha lá e colei em um bloco de notas) e salvar a configuração para ele subir. Depois dele funcionando e verificado que as configurações estavam nos lugares corretos eu voltei as configurações existentes no custom options.

                        Está funcionando ok.
                        Pois é, essa foi mais uma experiência que tive com o time_quota. Espero que ajude a comunidade.

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