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:
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!
Sobre o Autor