[PFSENSE] Proxy Transparente MITM no modo Splice ALL com Squid + E2guardian

Buenas galera, tudo tranquilo?

Hoje venho trazer um tutorial básico de configuração de um proxy transparente com Interceptação SSL no modo Splice ALL com o e2guardian trabalhando no bloqueio através das ACLs.

Esse tutorial é ótimo para:

  • Quem não quer configurar proxy e nem instalar certificado na maquina do usuário;
  • Quem vai utilizar o captiveportal do pfsense para autenticação dos usuários da wifi;

ATENÇÃO: Esse tutorial não funciona na versão 5 do e2guardian!


Versão do pfSense
: 2.3.4-RELEASE (amd64)

INSTALAÇÃO DOS PACOTES

SQUID

Instale o squid através do Packager Manager.

 E2GUARDIAN

A instalação do e2guardian e um pouco diferente, pois o pacote não é oficial. Para isso visite o link abaixo e instale de acordo com sua preferência.
https://github.com/marcelloc/Unofficial-pfSense-packages

CONFIGURAÇÕES DOS PACOTES

SQUID

Vá ate o menu Services e selecione Squid Proxy Server.

Selecione o menu Local Cache e clique em Save.

OBS: Você precisa criar uma CA para ser utilizada no squid. Para isso acesse o menu System > Cert. Manager e na opção Method selecione Create an Internal Certificate Authority. Preencha os campos e salve a CA.

O restante das configurações deixe como mostra as imagens abaixo. Todas são feitas no menu General.

Squid General Settings

pfsense3

Transparent Proxy Settings

pfsense4

SSL Man In the Middle Filtering

pfsense5

Advanced Features

pfsense6

Código utilizado na opção Custon Options (Before Auth):

cache_peer 127.0.0.1 parent 8080 0 login=*:password
always_direct deny all
never_direct allow all

Clique em save.

E2GUARDIAN

Selecione o menu Services > E2guardian Proxy e configure conforme as imagens abaixo.

Aba Daemon

Listening Settings

pfsense7

SSL Verification and Filtering

pfsense8

Clique na opção pfsense10

Advanced Features

pfsense9

Clique em Save.

Aba ACLs

As acls que eu ativei foram nas sub-opção Phrase Lists, Site Lists e Url Lists.

Phrase Lists

pfsense11

Na opção include para incluir mais de uma entrada segure CTRL e selecione a opção. Vá ate o final da pagina e clique em Save.

Site Lists

pfsense12

Na opção include para incluir mais de uma entrada segure CTRL e selecione a opção. Vá ate o final da pagina e clique em Save.

Url Lists

pfsense13

Na opção include para incluir mais de uma entrada segure CTRL e selecione a opção. Vá ate o final da pagina e clique em Save.

O restante das abas eu deixei com as opções default.

No menu Firewall > Rules eu configurei 3 regras apenas para os testes.

pfsense14

Essas configurações já são necessárias para que você tenha seu proxy transparente com Interceptação SSL no modo Splice ALL trabalhando em conjunto com o E2guardian no bloqueio via ACLs.

Agradeço ao Marcello Coutinho (marcelloc) pela ajuda e por disponibilizar grandes ferramentas para facilitar nosso trabalho.

TROUBLESHOOTING

1. Alguns sites/urls não são bloqueados por completo apos a criação de uma regex ou inclusão em outra lista?
R: Experimente apagar o Disk Cache do squid. Para isso vá ate Squid Proxy Server > Local Cache e clique em button_cache.

Grande Abraço,

88 comentários em “[PFSENSE] Proxy Transparente MITM no modo Splice ALL com Squid + E2guardian

  1. Show de bola cara, bombou..
    Também tenho um blog para auxiliar o pessoal da TI/PF Sense. Se importa se eu colocar teu tutorial la? Deixarei propagando do seu Blog e colocarei como fonte da Tutorial.

    Curtir

  2. Elias,

    Bom dia!

    estava lendo este artigo no forum do PFsense. E gostaria de entender melhor. Essa seria uma ferramenta, de filtro de conteudo, tipo o squigard? para funcionar o filtro de ssl, nao teria que estar setado o proxy no navegador?

    Curtir

    1. Buenas Diego,

      Sim, ferramenta de filtro de conteúdo. O squidguard parece estar desatualizado a anos e o e2guardian parece estar mais maduro e possivelmente vai substituir o squidguard. Tu pode utlizar ele com wpad, proxy setado manualmente, etc, mas também pode utilizar ela juntamente com o squid configurado como proxy transparente com Interceptação SSL no modo Splice ALL. Dessa forma não necessita configurar nada no cliente. Dê uma olhada no link abaixo.
      http://wiki.squid-cache.org/Features/SslPeekAndSplice

      Curtido por 1 pessoa

      1. Elias mais uma pergunta, desculpa mas sou novo como PF, como vc fez pra editar a regrade Anti-Lockout Rule?

        Curtir

  3. Elias,

    Bom dia!

    Depois de vários testes, estou muito interessado em colocar em produção, porem meus testes todos foram em laboratório virtual, aqui na empresa se utiliza muito smartphone, você já tem noticia do comportamento dos mesmos com esse filtro?

    abraço!

    Curtir

    1. Olá DIEGOVAZARAUJO,

      Essa é a unica forma que a principio que a comunicação dos smartphones é interceptada. Você pode utilizar essa forma para toda a sua rede ou pode deixar somente habilitado para uma subrede/vlan direcionada aos usuários de smartphones.

      Curtir

  4. Elias, em meus testes, não estava tendo problemas com sites com protocolo HTTPS, coloquei em produção em um ambiente pequeno para ver como iria se comportar. E no proxy transparente, as vezes tenho problema em abrir sites HTTPS, da o velho problema do certificado.
    Você teve este tipo de problema ? Se sim, tem como resolver sem instalar certificado em cada estação ?

    Curtir

    1. Cara, esta acontecendo alguns problemas diferentes pra mim. Notei que as vezes dá esse erro de certificado, mas se dou um refresh na pagina ela abre normal. Vou investigar melhor e edito o tutorial com informações novas.

      Curtir

  5. como faz pra bloquear navegação por ip? por exemplo mesmo com o squid e com o e2guardian, os usuarios conseguem acessar ao youtube no chrome, tenta pesquisar no google youtube… acessa da mesma forma.

    Curtir

  6. Elias

    Parabéns, mas eu fiquei com uma dúvida.
    Em vários sites vejo pessoas perguntando sobre smartphones, para eliminar esse problema, não seria o caso de usar um roteador por exemplo, sem dhcp, em modo bridge, passando o dhcp que vem do PFsense para os smartphones que se conectam a ele e assim todos os aparelhos wifi seriam clientes do Pfsense e se submeteriam as regras do Pfsense, inclusive de Proxy?

    Curtir

  7. Boa noite, implementei o tutorial e rodou muito bem, só analisei que o skype nao esta recebendo as mensagens e verifiquei certa lentidão na internet. Tem alguma configuração que possa auxiliar?

    Curtir

  8. Elias vc já tentou usar Pfsense+ Squid3-dev +Captive portal + Sarg?

    Preciso fazer uma rede wifi onde todo o acesso seja transparente porem seja registrado quando ele loga no portal.

    Curtir

  9. bom dia Elias, fiz exatamente como no tutorial acima, pfsense 2.3.4 release (AMD64) e win 7 ambos em maquinas virtuais.
    Mas ao abrir as paginas no navegador, o seguinte erro é apresentado:

    “ERRO
    A URL requisitada não pôde ser recuperada
    O seguinte erro foi encontrado ao tentar recuperar a URL: http://www.globo.com/
    conexão para 127.0.0.1 falhou.
    O sistema retornou: (60) operation timed out
    O host ou rede remota pode estar fora do ar. Por favor, faça a requisição novamente.”

    No log do Squid apresentam as seguintes informações

    Squid Access Table
    Squid – Access Logs
    Date IP Status Address User Destination
    16.09.2017 09:59:35 192.168.1.101 TAG_NONE/503 update.googleapis.com:443 – –
    16.09.2017 09:59:07 192.168.1.101 TAG_NONE/503 clientservices.googleapis.com:443 – –
    16.09.2017 09:59:05 192.168.1.101 TCP_MISS/503 http://update.googleapis.com/service/update2? – 127.0.0.1
    16.09.2017 09:57:35 192.168.1.101 TAG_NONE/200 172.217.29.35:443 – –
    16.09.2017 09:57:07 192.168.1.101 TAG_NONE/200 172.217.29.35:443 – –
    16.09.2017 09:57:07 192.168.1.101 TAG_NONE/200 172.217.29.42:443 – –
    16.09.2017 09:57:07 192.168.1.101 TAG_NONE/200 172.217.29.35:443 – –
    16.09.2017 09:56:08 192.168.1.101 TAG_NONE/503 http://www.google.com.br:443 – –
    16.09.2017 09:55:48 192.168.1.101 TAG_NONE/409 safebrowsing.googleapis.com:443 – –
    16.09.2017 09:55:48 192.168.1.101 TAG_NONE/200 172.217.29.74:443

    E dessa forma nenhuma pagina está abrindo, apenas as pesquisas do GOOGLE funcionam

    Curtir

  10. outras URLs que tentei abrir

    Squid – Access Logs
    Date IP Status Address User Destination
    16.09.2017 10:28:13 192.168.1.101 TCP_MISS/500 http://www.gstatic.com/generate_204 – –
    16.09.2017 10:28:13 192.168.1.101 TAG_NONE/503 http://www.youtube.com:443 – –
    16.09.2017 10:28:13 192.168.1.101 TAG_NONE/200 172.217.29.46:443 – –
    16.09.2017 10:28:05 192.168.1.101 TCP_MISS/500 http://pt-br.facebook.com/favicon.ico – –
    16.09.2017 10:28:05 192.168.1.101 TCP_MISS/500 http://pt-br.facebook.com/ – –
    16.09.2017 10:28:05 192.168.1.101 TAG_NONE/409 http://www.facebook.com:443 – –
    16.09.2017 10:28:05 192.168.1.101 TAG_NONE/200 157.240.12.35:443 – –
    16.09.2017 10:28:04 192.168.1.101 TAG_NONE/409 http://www.google.com.br:443 – –
    16.09.2017 10:28:04 192.168.1.101 TAG_NONE/200 216.58.202.227:443 – –
    16.09.2017 10:27:42 192.168.1.101 TAG_NONE/409 http://www.terra.com.br:443 – –

    Curtir

  11. Olha, não entendi o lance deste código. que porta 8080 seria ?

    cache_peer 127.0.0.1 parent 8080 0 login=*:password
    always_direct deny all
    never_direct allow all

    Curtir

  12. Olá amigo. Você já obteve algum sucesso bloqueando a Play Store (downloads)?
    Tentei bloqueando play.google.com e play.googleapis.com no firewall, na blacklist do Squid, usando Squidguard no content filter nas categorias downloads, software updates, e agora com o e2guardian. O Google sempre acaba apontando diretamente para um IP para os downloads. Tentei bloquear alguns ranges, mas acaba prejudicando os outros serviços (como Youtube). Tentei bloquear o android.clients.google.com mas também acaba bloqueando tudo. Até pro Snort usando OpenAppID já apelei, mas só consegui os apps de livros e música através de lá (que não era a intenção). Alguma luz?

    Curtir

  13. Elias, boa tarde, fiz o procedimento e bloqueio para sites pornográficos, mas os sites https, como redtube passa de boa, como faço para esse bloqueio seja para ALL SITES.

    Curtir

  14. Elias bom dia.

    Primeiramente obrigado pelo tutorial, funcionou certinho aqui pra mim. Sabe se é possível personalizar a página de bloqueio do e2guardian?

    Curtir

      1. Boa noite
        Criei um grupo que tem redes sociais e youtube bloqueado mas tem acesso a videos especificos e esta aparecendo essa mensagem SSL_ERROR_RX_RECORD_TOO_LONG pra mim mesmo colocando a URL a ser liberada na ACL URL exceptiom->config

        Curtir

  15. esta tudo configurado conforme tutorial CA criado e informado no squid e no e2guardian e o erro ocorre em todos os navegadores mesmo instalando ou não o certificado no navegador.

    Curtir

  16. Saudações Elias,
    Segui o tutorial, funcionou parcialmente pra mim também.
    O erro é o TAG_NONE/409.
    Na tabelas de códigos do squid o erro 409 é sobre conflitos.
    Alguém encontrou alguma solução?

    Curtir

  17. Olá Elias, antes de tudo gostaria de te agradecer pelo post! Tá show de bola, muito didático e direto ao ponto!

    Também tive dificuldade e gostaria de saber se poderia me ajudar, estou com o mesmo problema da Lorena, do Mayk, do Thiago e do Ricardo. Fiz exatamente como no tutorial para a versão 2.4.1 e não funcionou, daí partir para instalar a versão 2.3.5, mas não é permitido mais instalar o squid neste versão sem fazer o upgrade para a versão 2.4.1

    Alguns sites https funcionam como o UOL por exemplo, mas a pesquisa do Google não. E dá este código no Log TAG_NONE/409 e no browser aparece o erro SSL_ERROR_RX_RECORD_TOO_LONG

    talvez alguma coisa na versão mais nova tenha quebrado a configuração, ou alguma alteração das configurações padrão do e2guardian também.

    Você já conseguiu fazer funcionar na versão 2.4.1?

    Para instalar o e2guardian segui a documentação do GitHub https://github.com/marcelloc/Unofficial-pfSense-packages/tree/master/pkg-e2guardian4

    Curtir

    1. Buenas Pablo,

      Ainda não consegui testar na ultima versão. Aparece algo a mais nos logs ou é somente esse erro? Tu já criou esse tópico no forum do pfsense? Se não, cria por lá, pois como os usuários que tu mencionou, mais alguns podem ter os mesmos problemas e ai podemos tentar resolver isso juntos. Lá também tem o marcelloc que é uns dos que mantem o e2guardian e também pode auxiliar.

      Curtir

  18. Elias, tudo bem? Fiz toda a instalação e configuração, porem não está funcionando, o serviço fica UP porem não funciona corretamente… Poderia me da um help ? Tenho algumas duvidas, é possível me informar seu e-mail por favor?

    Curtir

  19. Boa noite Elias, sou novato no pfsense, gostaria de saber se com esse método que fez se é possível fazer cache de https, como facebook,YouTube entre outros.

    Curtir

  20. Ola Elias,
    Primeiramente parabéns pelo post.
    Elias, estou tendo dificuldade em bloquear https, não gera erro e até os grupos coloquei como bloqueio tudo e parece que ele salvou apenas a primeira alteração feita. Ja fiz a limpeza de cache no squid e mesmo assim parece que não aplica as novas alterações.
    Outra dúvida eu consigo manter os logs de acessos baseado no voucher que foi utilizado para autorizar a navegação ou mesmo um usuário interno do pfsense.
    Grato.

    Curtir

  21. Funciona muito bem. Parabéns pelo Post. Gostaria de saber como faço para um HOST (IP) passar direto por ele. Tentei colocar em vários locais dentro do “e2guardian” e nas ACL dentro do proxy server, porém não funcionou, continuou passando e bloqueando os acessos. Obrigado

    Curtir

  22. Olá Elias, tudo certo? Estou com uma dúvida, pois eu apliquei as configurações conforme seu tutorial e, funcionou bem, porém durante os teste de bloqueio o youtube passou normalmente e os sites com HTTPS dão erros de certificado, mesmo dando refresh continua. Existe alguma forma que eu possa forçar o bloqueio do HTTPS com eficiência?

    Desde já agradeço, e parabéns pelo trabalho!!

    Curtir

  23. Boa tarde Elias! Como está?

    Segui seu tutorial e tudo funcionou bem à exceção do acesso à alguns sites HTTPS, como por exemplo, o google.com.br, que não abrem de forma alguma e na tela do usuário é recebida a mensagem abaixo. Consegue me orientar a como proceder nessa situação? Desde já agradeço a ajuda.

    “Não foi possível estabelecer uma conexão segura com este site
    http://www.google.com.br enviou uma resposta inválida.
    Tente executar o Diagnóstico de Rede do Windows.
    ERR_SSL_PROTOCOL_ERROR”

    Curtir

  24. Fala grande Elias, acabei de fazer a instalação do pacote E2Guardian, até agora tudo certo, porém estou aqui lutando pra alterar a página de bloqueio que está em inglês, o que não meu caso não é elegante deixar. Onde exatamente estão alocados os arquivos referente a isso?

    Curtir

  25. Elias tudo bem? parabens!!! Cara, tive inumeros problemas mesmo no spliceall principalmente com google, gmail.. hora funciona / hora não.. você experimentou esses casos?

    Curtir

  26. Elias, estou com problemas na minha configuração o modo transparente não esta funcionado, todos sites HTTPS estão apresentando erro de certificado NET::ERR_CERT_AUTHORITY_INVALID.
    Tem alguma dica do que pode ser?

    Curtir

  27. Boa tarde,

    Excelente tutorial, configurei exatamente igual ao tutorial, mas esta ocorrendo o seguinte problema, quando habilito o squid ele bloqueia todos os sites do Google exe: google, gmail, youtube, mesmo não colocando nenhuma regra de bloqueio, agora os outros sites abrem normalmente.

    Pode me ajudar?

    Curtir

  28. Boa tarde pessoal.

    Fiz o teste com e2guardian5, na esperança de que já funcionasse esse esquema, mas pare que não funciona, correto?

    Podem me dizer se na versão 4 funciona ainda? Conseguiria usar com a versão mais nova do pfSense (2.4.4)?

    Existe outra solução pra isso? Sem usar WPAD, instalar certificados ou qualquer configuração de proxy no navegador?

    Amanhã vou fazer a pergunta no forum da Netgate tbm. 😉

    Elias, obrigado pelo tutorial e parabéns pelo trabalho!!!

    Curtir

  29. Olá, parabéns pelo tutorial!!

    Sou iniciante nesse mundo e gostaria de confirmar se é necessário a instalação de certificados em todas as maquinas da rede para o que o bloqueio funcione ou apenas a emissão dentro do próprio pfsense já é o suficiente, pois tenho muitas maquinas e seria inviável de instalar uma por uma.

    Grato.

    Curtir

Deixe um comentário