0

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

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.dathttp://192.168.1.1/wpad.dahttp://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 &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!

plague70

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *