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

    Registrar os acessos negados do squidguard no log do squid/sarg

    Scheduled Pinned Locked Moved Portuguese
    24 Posts 13 Posters 12.6k 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.
    • marcellocM Offline
      marcelloc
      last edited by

      Pessoal, recebi uma demanda recente para unificar os logs do squidguard e squid e para nossa alegria :) recebi autorização para publicar a alteração.

      Um pouco sobre o problema:
      A forma de integração do squid com o squidguard é via redirect o que, até onde consegui pesquisar, só retorna status em branco quando a página não precisa de alteraçoes ou reescrita ou com uma nova url. Mensagem de erro continuam registradas com TCP_MISS no log porque o squid passa a url com sucesso para o squidguard.

      Depois de várias tentativas, consegui encontrar uma solução simples, prática e funcional para o problema com apenas dois passos:

      • incluir uma acl no squid que bloqueia urls com parametro sgrd=ACCESSDENIED

      • Incluir no sgerror.php um iframe invisível que força o cliente enviar uma segunda requisição da página com o parametro de bloqueio adicionado

      Como aplicar a configuração:

      No campo custom options do squid, inclua a seguinte configuração:
      squid2

      acl sglog url_regex -i .*sgrd=ACCESSDENIED;http_access deny sglog;
      

      squid3

      acl sglog url_regex -i .*sgrd=ACCESSDENIED
      http_access deny sglog
      

      Edite o arquivo sgerror.php que fica em /usr/local/www incluia apos a linha 232 este código entre o $str[] = ""; e $str[] = "";

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

      Benefícios com esta configuração:

      Com isso, o relatório do sarg passa a mostrar o que o squidguard bloqueou, mostrando imediatamente após uma tentativa de acesso um log de erro da página.
      No relatório do squid você vê que bloqueou e no relatorio do squidguard você vê o motivo do bloqueio.

      Para ambientes com autenticação:
      A regra de denied precisa ser incluida após a declaração da acl de autenticação

      acl sglog url_regex -i .*sgrd=ACCESSDENIED
      http_access deny password sglog
      

      Vou incluir este procedimento na proxima atualização da gui do squid3, só não sei ainda quando.

      att,
      Marcello Coutinho

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

      Help a community developer! ;D

      1 Reply Last reply Reply Quote 0
      • Y Offline
        yakko
        last edited by

        Valeu marcelo, parabens!!!!

        1 Reply Last reply Reply Quote 0
        • M Offline
          mantunespb
          last edited by

          parabens marcelo..

          1 Reply Last reply Reply Quote 0
          • D Offline
            diegogyn
            last edited by

            Muito bom excelente atualização marcelo!

            1 Reply Last reply Reply Quote 0
            • G Offline
              gilmarcabral
              last edited by

              Parabéns marcello.
              Galera fiz está modificação porem o sarg continua não apresentando a mensagem de DANIED no relatório do squid.
              Tentei utilizando o squidguard.
              Com a alteração do marcello o log access.log aparece o log de DANIED do squidguard no squid mas o sard não ta conseguindo mostrar isso.
              Mas se eu colocar o endereço da url bloqueada no navegador e na frente passar .*sgrd=ACCESSDANIED ai o sarg consegue gerar i relatório com a a url negada.

              1 Reply Last reply Reply Quote 0
              • D Offline
                didonsom
                last edited by

                Olá Marcelloc

                Muito Bom!!! parabéns!!! valeu!!!!!!

                fiz a implementação aqui.. e fiquei com 2 duvidas:

                1º duvida…

                no item:

                Para ambientes com autenticação:
                A regra de denied precisa ser incluída após a declaração da acl de autenticação

                
                acl sglog url_regex -i .*sgrd=ACCESSDENIED
                http_access deny password sglog
                
                

                onde coloco esse código? no próprio custom options? substituo o 1º código que vc informou ou coloco na blacklist do squid3?

                aqui está funcionando perfeitamente, exibe uma tela de denied access ( no local onde mostra o redirector) e criou uma nova aba com o ip da maquina ( aonde fica o usuário bloqueado) só q não está resolvendo o usuário q bloqueou.. provavelmente pq coloquei esse código ai em cima no local errados.. rs

                2º duvida,

                os sites com https, não exibem a tela de bloqueio( sgerror.php) e consequentemente não retornam os bloqueios no denied…
                como resolvo isso? vi no  fórum um post sobre vhosts, mas não consegui implementar.. tem alguma dica?

                abraços

                diego

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

                  @didonsom:

                  onde coloco esse código? no próprio custom options? substituo o 1º código que vc informou ou coloco na blacklist do squid3?

                  Não, esta alteração precisa ser feita no squid.inc. Mas só recomento para quem conhece php.

                  @didonsom:

                  os sites com https, não exibem a tela de bloqueio( sgerror.php) e consequentemente não retornam os bloqueios no denied…
                  como resolvo isso? vi no  fórum um post sobre vhosts, mas não consegui implementar.. tem alguma dica?

                  Provavelmente só com interceptação de ssl que vai sair na próxima release do pacote.

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

                  Help a community developer! ;D

                  1 Reply Last reply Reply Quote 0
                  • G Offline
                    gilmarcabral
                    last edited by

                    Galera o meu aqui finalmente funcionou.
                    Para funcionar só precisei fazer a modificação no arquivo.
                    /usr/local/www/sgerror.php incluindo a linha abaixo apos a linha 232 este código entre o $str[] = ""; e $str[] = "";
                    $sge_prefix=(preg_match("/?/",$cl['u'])?"&":"?");
                    $str[] = '<iframe src="'.$cl['u'].$sge_prefix.'sgrd=ACCESSDENIED" width="1" height="1"></iframe>';

                    Funcionou perfeitamente.
                    Estava tentando adicionar ACL e tambem configurando o squid.inc mas se eu fizer isso simplesmente o log não fica como danied do squid.
                    Se configurar tanto o sgerror.php como o squid.inc o log fica do squid fica como danied porem o sarg não gera com o danied na frente.
                    Então deixei apenas o sgerrro.php conforme o Marcello informou e funfou de boa.
                    Marcello novamente muito obrigado pela solução apresentada para o SARG apresentar o acesso negado pois isso facilita muito para os gestores da empresa analisar o acesso ao conteúdo.

                    Bom não funcionou assim perfeitamente.
                    Funcionou mas o SARG simplesmente parou de mostrar o DANIED gerado pelo squidguard.
                    Interessante que o log ta certinho

                    1 Reply Last reply Reply Quote 0
                    • D Offline
                      didonsom
                      last edited by

                      Olá Pessoal,

                      Funcionou perfeitamente aqui está gerando o relatório de Denied conforme o esperado! Por usuário.

                      Para ajudar quem estiver com dificuldade, abaixo o procedimento que realizei.

                      Utilizo o Squid 3 com autenticação Ldap.

                      estou disponibilizando 2 arquivos.

                      1 - Sgerror.php

                      o meu sgerror.php é personalizado ( personalizei com um post do próprio fórum, méritos para o autor do modelo).
                      fica na pasta /usr/local/www/

                      como ele é personalizado a inclusão do código na sgerror.php, ficou depois da linha 248 que é o local onde está os campos

                      
                      $str[] = "";
                      $str[] = ""; 
                      
                      

                      2 - arquivo Squid.inc com a alteração depois da linha 1371, essa alteração é para quem tem autenticação.
                      o arquivo fica em /usr/local/pkg/

                      inclusão das linhas

                      
                      acl sglog url_regex -i .*sgrd=ACCESSDENIED
                      http_access deny password sglog
                      
                      

                      Abraços

                      Diego

                      squid.txt
                      sgerror.txt

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

                        @didonsom:

                        código squid.inc

                        Anexa o arquivo com extensão .txt, seu post não ficou completo.

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

                        Help a community developer! ;D

                        1 Reply Last reply Reply Quote 0
                        • D Offline
                          didonsom
                          last edited by

                          Opa Marcello,

                          Nem tinha percebido que o post não estava completo.. valeu pela dica..

                          Post corrigido..

                          Abraços,

                          Diego

                          1 Reply Last reply Reply Quote 0
                          • P Offline
                            ploquets
                            last edited by

                            Obrigadão Marcelo, por sua dica!!

                            Eu não entendo muito de HTML/PHP e por isso, quando eu vi seu post, sai fazendo tudo que dizia até que notei que não funcinou…
                            Ai fui colocar a cabeça pra pensar pra ver qual era a lógica do negócio até meio que entender o que eu teria que fazer e entender o motivo de não estar funcionando.

                            Foi então que eu percebi que o meu problema é que eu não uso um "int error page" e sim um "ext url error page" redirecionando para um arquivo .html

                            No caso, eu assumo que eu deveria colocar o

                            <iframe src="'.$cl['u'].$sge_prefix.'sgrd=ACCESSDENIED" width="1" height="1"></iframe>
                            

                            dentro dessa minha pagina externa…

                            mas eu não sei como fazer referente a linha

                            $sge_prefix=(preg_match("/\?/",$cl['u'])?"&":"?")
                            

                            Acredito que só funcione com PHP por ser uma variável… não sei.
                            Pergunto isso porque tenho várias páginas de erro em HTML dependendo do conteúdo.... e por isso, se eu fizer via sgerror.php, ele só vai funcionar com ela e as minhas outras páginas de erro passariam a ser todas a mesma que fica dentro do sgerror.php

                            Tem como me dá uma mão?
                            Obrigado!

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

                              @ploquets:

                              Acredito que só funcione com PHP por ser uma variável… não sei.

                              Sim. este trecho do código verifica se a url tem ou não parâmetros.

                              Se tiver o php instalado no servidor, acredito que um resolva a questão.

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

                              Help a community developer! ;D

                              1 Reply Last reply Reply Quote 0
                              • P Offline
                                plague70
                                last edited by

                                muito bom apliquei aqui nos meus servidores esta funcionando tudo.

                                1 Reply Last reply Reply Quote 0
                                • M Offline
                                  Michels
                                  last edited by

                                  Olá Marcello,

                                  Já existe alguma solução definitiva para essa situação (algum release que tenha isso corrigido) ?

                                  Obrigado!

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

                                    Já está no squid3-dev desde a primeira versão…

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

                                    Help a community developer! ;D

                                    1 Reply Last reply Reply Quote 0
                                    • M Offline
                                      marcosasjr
                                      last edited by

                                      Bom dia pessoal,

                                      Gostaria se possivel de uma ajuda, instalei o PFsense 2.2 com squid 2.7(autenticado) e squidguard e ambos estão funcionando 100%, mas me deparei na mesma necessidade do Marcelo, segui as dicas mas não obtive sucesso, seguindo a dica para o squid 2.7(autenticado) no log access.log do squid não aparece DENIED, apenas MISS, entao fui testar a dica para squid2.7 sem ser autenticado e nesse passou a aparecer o bloqueio realizado pelo squidguard, porem não informa o usuario logado, apenas o IP.

                                      no teste com a dica do squid 2.7 sem autenticação apenas coloquei no custom:acl sglog url_regex -i .*sgrd=ACCESSDENIED;http_access deny sglog; funcionou mas não parace o usuario bloqueado, apenas IP.

                                      no teste com a dica do squid2.7 com autenticação coloquei no custom:"acl sglog url_regex -i .sgrd=ACCESSDENIED" e no squid.inc adicionei na linha 1104:
                                              $conf .= "# Default block all to be sure\n";
                                      **    $conf .= "http_access deny password sglog\n";
                                      *
                                              $conf .= "http_access deny all\n";
                                      Assim como mencionado no post, o deny ficou apos a ACL de autenticação no squid.conf, mas não aparece o bloqueio do squidguard no access.log do squid.

                                      Fiz algo errado?

                                      Abraço

                                      1 Reply Last reply Reply Quote 0
                                      • T Offline
                                        tomaswaldow
                                        last edited by

                                        Já que está na 2.2 melhor ir para o Squid3 que já tem isso integrado e também porque a versão 2 do Squid não é mais suportada pelo FreeBSD 10, então em algum momento ela não vai mais estar disponível para o pfSense 2.2.

                                        Tomas @ 2W Consultoria

                                        1 Reply Last reply Reply Quote 0
                                        • M Offline
                                          marcosasjr
                                          last edited by

                                          Bom dia Tomas, instalei o 2.7 pois vi que era o stable nos pacotes, mas pesquisando aqui vi tb q o squid3 usa a ultima versao stable, apenas a interface é beta.

                                          Irei realizar teste com o squid3.

                                          Abraço

                                          1 Reply Last reply Reply Quote 0
                                          • T Offline
                                            tomaswaldow
                                            last edited by

                                            @marcosasjr:

                                            Bom dia Tomas, instalei o 2.7 pois vi que era o stable nos pacotes, mas pesquisando aqui vi tb q o squid3 usa a ultima versao stable, apenas a interface é beta.

                                            Irei realizar teste com o squid3.

                                            Abraço

                                            Certo, mas a interface não é beta, já funciona a muito tempo. Na versão 2.1.5 era chamado de Squid3-dev;

                                            Teste e poste o resultado.

                                            Tomas @ 2W Consultoria

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