[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;


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://forum.pfsense.org/index.php?topic=128127.msg706536

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 no forum do pfSense 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,

 

Anúncios

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

  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s