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

    [GUIA] Proxy HTTP/HTTPS + SquidGuard + sgerror.php + WPAD via DHCP e DNS 100%

    Scheduled Pinned Locked Moved Portuguese
    182 Posts 40 Posters 55.9k 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.
    • B
      brunok
      last edited by

      Esse é pra você que tentou tutorias de diversos locais e sempre parava pela metade, devido a erros ou falta de informações.

      Fiz um ambiente 100% funcional e venho compartilhar com vocês.

      Cenário:

      pfSense  2.3 +
      package Squid
      package SquidGuard
      LAN  192.168.1.1/24
      pfsense.localdomain

      ***** Validado nas versões: 2.3.X  ***

      *** Validado nas versões 2.4.X em 27/10/2017 ***

      *** Não testei em versões anteriores  *****

      Utilizo (e recomendo) a webGUI em HTTPS, por questões de segurança.  Porém, haviam problemas com sgerror.php do squidguard quando utilizado desta maneira (mas vamos contorná-los!). Neste guia, estou utilizando HTTPS - porta 9443.

      Preparando o ambiente

      System > General Setup

      Escolha os servidores DNS de sua preferência, no meu caso, utilizei 8.8.8.8 e 8.8.4.4.
      Desmarcar o “Disable DNS Forwarder”, pois vamos utilizar este serviço para fornecer o WPAD via DNS, atingindo qualquer navegador.

      System > Advanced > Admin Access

      Habilite o acesso  SSH

      System > Cert. Manager

      Adicione um novo CA para utilização no Man-In-The-Middle do Squid posteriormente

      Descriptive Name: Escolha um nome para sua CA. Este nome será visível para os clientes.
      Method:  Selecione “Create an internal Certificate Authority” no menu dropdown.
      Key length: É recomendado 2048 para máxima compatibilidade
      Digest Algorithm – use SHA256 ou superior.
      LifeTime – Configure para 3650 dias (10 anos).
      Distinguished Name – Preencha todos os campos como Country, State, etc.

      Salve

      Services > DNS Resolver

      Por padrão, o PF habilita este serviço. Desative, pois vamos configurar através do DNS Forwarder

      Services > DNS Forwarder

      Habilite o DNS forwarder
      Marque    DNS Query Forwarding    -  Query DNS servers sequentially
      Interfaces – LAN
      Marque  Strict binding

      Em custom options, adicione as seguintes instruções:

      dhcp-option=252,http://192.168.1.1/proxy.pac
      dhcp-option=252,http://192.168.1.1/wpad.dat
      dhcp-option=252,http://192.168.1.1/wpad.da
      

      Vamos adicionar um host em “Host Overrides”

      Add
      Host = wpad
      Domain = localdomain (altere para o domínio que você tenha configurado)
      IP Address = 192.168.1.1

      Salve as configurações feitas.

      Services > DHCP Server

      DNS Server 1 =  192.168.1.1  (A resolução de nomes será controlada pelo próprio  pfSense)

      Additional BOOTP/DHCP Options – Adicione 3 entradas  252

      252  -  text  -  http://192.168.1.1/wpad.dat
      252  -  text  -  http://192.168.1.1/wpad.da
      252  -  text  -  http://192.168.1.1/proxy.pac

      Vamos preparar o NGINX para subir uma 2º instância, para servir o WPAD e o sgerror.php na porta 80.


      Anteriormente, eram realizados diversos comandos no SHELL para este propósito, mas foram substituídos por este pacote (WPAD - não oficial), criado pelo Marcelloc, que será instalado no passo a seguir.


      Mãos a obra!

      Entrar pelo Putty no PFSense e com usuário root, na tela de opções escolher a opção 8.

      Habilitar o repositório não oficial (DE ACORDO COM SUA VERSÂO):

      2.3.X 32 bits

      fetch -q -o /usr/local/etc/pkg/repos/Unofficial.conf https://raw.githubusercontent.com/marcelloc/Unofficial-pfSense-packages/master/Unofficial.conf
      

      2.3.X 64 bits

      fetch -q -o /usr/local/etc/pkg/repos/Unofficial.conf https://raw.githubusercontent.com/marcelloc/Unofficial-pfSense-packages/master/Unofficiali386.conf
      

      2.4.X 64 bits

      fetch -q -o /usr/local/etc/pkg/repos/Unofficial.conf https://raw.githubusercontent.com/marcelloc/Unofficial-pfSense-packages/master/Unofficial.24.conf
      
      

      Fazer update dos repositórios:

      pkg update -f
      

      Agora irá aparecer o pacote WPAD para download no Gerenciador de Pacotes. Faça a instalação.

      Este pacote cria a 2ª instância do NGINX, os arquivos WPAD e os diretórios respectivos.

      Na webGUI, acesse o menu SERVICES > WPAD  |  Adicione a interface (geralmente LAN) e salve.

      Feito isto, acesse em um navegador que esteja na rede LAN para confirmar o funcionamento:

      http://192.168.1.1/wpad.dat
      http://192.168.1.1/wpad.da
      http://192.168.1.1/proxy.pac

      Vai baixar os arquivos, ou apresentar o conteúdo na própria página web (dependendo o navegador e as configurações).

      Se você chegou até aqui, com tudo funcionando, significa que o ambiente está preparado para receber as configurações do squid e squidguard!

      Services > Squid Proxy Server

      Lembrando que deve-se configurar o Local Cache para poder ativar as configurações do squid.

      Habilite o squid
      Marque a opção  - Resolve DNS IPv4 First
      Transparent HTTP Proxy– Deixe DESMARCADO
      HTTPS/SSL Interception – Deixe MARCADO
      Porta 3128 (sim, a mesma porta!)
      CA – selecione o certificado criado lá no início
      SSL Certificate Deamon Children – 25
      Remote Cert Checks  - Selecione este:    Accept remote server certificate with erros
      Certificate Adapt – Selecione estes 2:  Set “Not After”  |  Set “Not Before”

      E agora o segredo:

      Em Show Advanced Options, na caixa Integrations, coloque isto:

      ssl_bump none all

      Salve as configurações.

      Services > SquidGuard Proxy Filter

      Habilite o serviço
      Marque as 3 opções de LOG
      Habilite a blacklist e coloque o link da mais conhecida:  http://www.shallalist.de/Downloads/shallalist.tar.gz
      Salve

      Va na guia Target Categories
      Adicione uma nova
      Nome – BRADESCO
      Regular Expression – bradesco
      Marque o log da ACL

      Salvar

      Porque Bradesco? O site do bradesco fica dando refresh sozinho, alternando entre bradesco.com.br e banco.bradesco.
      Com isso resolve o problema, já que somos obrigado a criar uma Target Categorie pro SG ficar 100%, matamos 2 coelhos numa cajadada só!

      Blacklist

      Faça o download da shallalist e aguarde o processo finalizar.

      Common ACL

      Clique no botão + ao lado de TargetRules List e deixe a categoria BRADESCO como ALLOW
      Defina as outras categorias de acordo com sua necessidade
      Redirect mode – ext url err page(enter URL)
      Redirect info -  http://192.168.1.1/sgerror.php?url=302%20&a=%a&n=%n&i=%i&s=%s&t=%t&u=%u
      Marque o log e salve

      DICA: Para aparecer a categoria corretamente na página de bloqueio, você deve deixar explícito a ação DENY nas ACLs. Se deixar o "traço" para pegar a política padrão, a categoria não será exibida!

      Volte para General Settings e de um APPLY

      Finalizado o tão sonhado proxy ativo de forma “transparente”.

      DICA: Faça bloqueio das portas 80 e 443 na saída da LAN, para forçar que a navegação saia somente pelo proxy!

      Note que não será necessário instalar o certificado nas estações;

      Não será necessário cadastrar o proxy no navegador (Deixar opção detectar automaticamente marcada);

      Funciona para qualquer browser, Chrome, IE, Firefox, Opera, etc…

      **Obs1: Caso não tenha funcionado, observe todos os passos atentamente

      Obs2: Os tratamentos para liberação e bloqueio de conteúdo serão feitos todos no squidGuard

      Obs3: Não funciona para dispositivos mobiles (Android / iOS / WindowsPhone), a não ser que você configure manualmente nos aparelhos,
      o que torna inviável. Neste caso, a solução seria isolar a rede wifi com VLAN/Captive Portal**

      Chegamos ao fim!

      1 Reply Last reply Reply Quote 0
      • danilosv.03D
        danilosv.03
        last edited by

        Teoricamente isso ta muito bonito, contrapartida ta meio complexo (eu entendi perfeitamente o passo a passo) minha dúvida é na questão da configuração a certeza mesmo se irá funfar. Confesso que tenho até medo de fazer tudo isso via putty e na hora da pau e ter que levantar tudo de novo na empresa.


        :)
        |E-mail: danilosv.03@gmail.com
        |Skype: danilosv.03


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

          Ora, pra isso que existe a etapa de homologação!

          Tomas @ 2W Consultoria

          1 Reply Last reply Reply Quote 0
          • B
            brunok
            last edited by

            @danilosv.03:

            Teoricamente isso ta muito bonito, contrapartida ta meio complexo (eu entendi perfeitamente o passo a passo) minha dúvida é na questão da configuração a certeza mesmo se irá funfar. Confesso que tenho até medo de fazer tudo isso via putty e na hora da pau e ter que levantar tudo de novo na empresa.

            Como o Tomas falou, nada como um ambiente de testes para validar.

            Eu estava com um ambiente de testes para este caso e quando vi o processo funcional, restaurei o PF para configurações de fábrica e segui minhas anotações.

            Funcionou 100%

            1 Reply Last reply Reply Quote 0
            • danilosv.03D
              danilosv.03
              last edited by

              Vou fazer no ambiente de teste.


              :)
              |E-mail: danilosv.03@gmail.com
              |Skype: danilosv.03


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

                Parabéns em compartilhar..

                1 Reply Last reply Reply Quote 0
                • D
                  Douglas Araujo
                  last edited by

                  Boa noite..

                  Muito legal bem detalhado ..

                  porem existem algumas duvidas até pq ja utilizei por muito tempo wpad
                  quais foram os problemas encontrados no decorrer..

                  1 parou de funcionar no firefox devido a alguma atualização.

                  quando eu consegui faze funciona no firefox dava erro no internet….

                  o seu funciona no firefox e no internet explorer e chrome (apesar no chrome ser espelho do internet)

                  2 . Infelismente Macs e Celulares como android IOS tinha que fazer algumas configurações mais avançadas para que funcionasse...

                  Mais estou meio correria pretendo testa suas configs..
                  Fico no aguardo do seu retorno.

                  Network Administrator Linux and Windows

                  1 Reply Last reply Reply Quote 0
                  • danilosv.03D
                    danilosv.03
                    last edited by

                    Eu me confundi um pouco nessa parte:

                    Entre no diretório /usr/local/www/nginx-dist

                    Após eu adicionar cada comando pelo o putty como faço pra sai dele?


                    :)
                    |E-mail: danilosv.03@gmail.com
                    |Skype: danilosv.03


                    1 Reply Last reply Reply Quote 0
                    • B
                      brunok
                      last edited by

                      @Douglas:

                      Boa noite..

                      Muito legal bem detalhado ..

                      porem existem algumas duvidas até pq ja utilizei por muito tempo wpad
                      quais foram os problemas encontrados no decorrer..

                      1 parou de funcionar no firefox devido a alguma atualização.

                      quando eu consegui faze funciona no firefox dava erro no internet….

                      o seu funciona no firefox e no internet explorer e chrome (apesar no chrome ser espelho do internet)

                      2 . Infelismente Macs e Celulares como android IOS tinha que fazer algumas configurações mais avançadas para que funcionasse...

                      Mais estou meio correria pretendo testa suas configs..
                      Fico no aguardo do seu retorno.

                      Alguns navegadores tentam capturar proxy.pac e outros wpad.dat. Por isso, criamos links do proxy.pac para não ocorrer nenhum problema.

                      Realmente para aparelhos mobile, os navegadores vem configurados sem a instrução de buscar por wpad/proxy.pac.

                      Somente configurando manualmente, ou criando uma VLAN só para celulares com captive portal. Ou ainda, uma segunda instância do squid em modo transparente.

                      1 Reply Last reply Reply Quote 0
                      • B
                        brunok
                        last edited by

                        @danilosv.03:

                        Eu me confundi um pouco nessa parte:

                        Entre no diretório /usr/local/www/nginx-dist

                        Após eu adicionar cada comando pelo o putty como faço pra sai dele?

                        Pelo shell, acessar o diretório

                        cd /usr…...

                        Ajustei no guia, para facilitar.

                        Para sair do shell, pode dar exit e depois fechar a tela do putty.

                        1 Reply Last reply Reply Quote 0
                        • B
                          brunok
                          last edited by

                          Este ambiente já está rodando em dois escritórios e está funcionando perfeitamente.

                          Ainda não encontrei nenhum problema, com esta configuração.  8) :) :)

                          1 Reply Last reply Reply Quote 0
                          • C
                            cairo
                            last edited by

                            Bom dia amigo,
                            Primeiramente parabéns e obrigado por compartilhar o conhecimento!

                            Estava seguindo suas instruções, porém na parte onde configura-se o DNS Resolver enfrento um erro:

                            The following input errors were detected:

                            The generated config file cannot be parsed by unbound. Please correct the following errors:
                                /var/unbound/test/unbound.conf:89: error: unknown keyword 'dhcp-option=252,http'
                                /var/unbound/test/unbound.conf:89: error: stray ':'
                                /var/unbound/test/unbound.conf:89: error: unknown keyword '//192.168.1.1/proxy.pac'
                                /var/unbound/test/unbound.conf:90: error: unknown keyword 'dhcp-option=252,http'
                                /var/unbound/test/unbound.conf:90: error: stray ':'
                                /var/unbound/test/unbound.conf:90: error: unknown keyword '//192.168.1.1/wpad.dat'
                                /var/unbound/test/unbound.conf:91: error: unknown keyword 'dhcp-option=252,http'
                                /var/unbound/test/unbound.conf:91: error: stray ':'
                                /var/unbound/test/unbound.conf:91: error: unknown keyword '//192.168.1.1/wpad.da'
                                read /var/unbound/test/unbound.conf failed: 9 errors in configuration file

                            Quando retiro as instruções do Custom Options o erro não ocorre.
                            dhcp-option=252,http://192.168.1.1/proxy.pac
                            dhcp-option=252,http://192.168.1.1/wpad.dat
                            dhcp-option=252,http://192.168.1.1/wpad.da

                            Sabe em que posso ter errado?
                            Desde já obrigado!!

                            1 Reply Last reply Reply Quote 0
                            • B
                              brunok
                              last edited by

                              @cairo:

                              Bom dia amigo,
                              Primeiramente parabéns e obrigado por compartilhar o conhecimento!

                              Estava seguindo suas instruções, porém na parte onde configura-se o DNS Resolver enfrento um erro:

                              The following input errors were detected:

                              The generated config file cannot be parsed by unbound. Please correct the following errors:
                                  /var/unbound/test/unbound.conf:89: error: unknown keyword 'dhcp-option=252,http'
                                  /var/unbound/test/unbound.conf:89: error: stray ':'
                                  /var/unbound/test/unbound.conf:89: error: unknown keyword '//192.168.1.1/proxy.pac'
                                  /var/unbound/test/unbound.conf:90: error: unknown keyword 'dhcp-option=252,http'
                                  /var/unbound/test/unbound.conf:90: error: stray ':'
                                  /var/unbound/test/unbound.conf:90: error: unknown keyword '//192.168.1.1/wpad.dat'
                                  /var/unbound/test/unbound.conf:91: error: unknown keyword 'dhcp-option=252,http'
                                  /var/unbound/test/unbound.conf:91: error: stray ':'
                                  /var/unbound/test/unbound.conf:91: error: unknown keyword '//192.168.1.1/wpad.da'
                                  read /var/unbound/test/unbound.conf failed: 9 errors in configuration file

                              Quando retiro as instruções do Custom Options o erro não ocorre.
                              dhcp-option=252,http://192.168.1.1/proxy.pac
                              dhcp-option=252,http://192.168.1.1/wpad.dat
                              dhcp-option=252,http://192.168.1.1/wpad.da

                              Sabe em que posso ter errado?
                              Desde já obrigado!!

                              Sim, a configuração é feita no DNS Forwarder e você tentou fazer no DNS Resolver.

                              Desative o Resolver e deixe apenas o Forwarder habilitado.

                              1 Reply Last reply Reply Quote 0
                              • B
                                brunok
                                last edited by

                                Estou usando este cenário em 6 locais e está rodando 100%!  8) :D

                                1 Reply Last reply Reply Quote 0
                                • M
                                  McLaw
                                  last edited by

                                  @brunok:

                                  Estou usando este cenário em 6 locais e está rodando 100%!  8) :D

                                  Bruno bom dia  8) essas configuração server para usor de proxu transparente?

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

                                    Bruno bom dia  8) essas configuração server para usor de proxu transparente?

                                    É justamente para não usar é proxy transparente.. que neste caso é uma boa prática.

                                    1 Reply Last reply Reply Quote 0
                                    • C
                                      ccbsumare
                                      last edited by

                                      No meu caso o Pfsense esta integrado no AD do Windows server 2012  e o DHCP server é do próprio Windows,  também uso GPO de Proxy.

                                      Pretendo continuar com o DHCP  a GPO do Windows  tem algum problema?
                                      Verifiquei  que vc disse alguma coisa de sgerror.php  e justamente  estou com um problema quando o Squidguard esta Habilitado aparece este URL nos Browser quando  tento acessa qualquer pagina.

                                      https://192.168.0.1/sgerror.php?url=403%20&a=192.168.0.33&n=192.168.0.33&i=teste4&s=default&t=none&u=http://www.globo.com/

                                      Saberi dizer o que significa?

                                      abraço

                                      1 Reply Last reply Reply Quote 0
                                      • B
                                        brunok
                                        last edited by

                                        A parte do DHCP pode ser configurada no seu Windows Server mesmo.

                                        Este link indica que a página seria bloqueada. Aparece mensagem de bloqueio, ou como fica a tela?

                                        Para o problema da porta, configure até a parte que sobe a 2ª instância do nginx e copia o sgerror.php pro diretório nginx-dist.

                                        Tem que funcionar corretamente, mas poste suas configurações do squidguard (General, Common e Target) para analisarmos.

                                        1 Reply Last reply Reply Quote 0
                                        • andrezaomacA
                                          andrezaomac
                                          last edited by

                                          #Dica.

                                          Sei que muitos aqui são especialistas para manipular o servidor pelos Terminais/Putty via SSH, mas sei também que alguns sofrem um bocado quando
                                          tem que alterar algo através das linhas de comando.

                                          Para aqueles menos experientes, aconselho usarem o programa WinSCP.  É perfeito para acesso via SSH, a manipulação do servidor se torna tipo um "FTP",
                                          bem simples, tudo através do bloco de notas para que não conhece vale a pena testar!

                                          **Parabéns pelo tutorial.

                                          Consultoria em Servidores Linux/Windows.
                                          contato@andrenetwork.com.br

                                          Tecnólogo em Redes de Computadores.
                                          Bacharel em Sistemas da Informação.


                                          http://www.andrenetwork.com.br

                                          Limeira - SP

                                          1 Reply Last reply Reply Quote 0
                                          • danilosv.03D
                                            danilosv.03
                                            last edited by

                                            brunok existe algum meio de conversar contigo, por syke exemplo.


                                            :)
                                            |E-mail: danilosv.03@gmail.com
                                            |Skype: danilosv.03


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