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

      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.