TUTORIAL - Web Filter - Bloqueio de sites usando DNS - Pacote NXFILTER + Pfsense



  • Prezados, bom dia
    Estou passando para divulgar nosso grupo de mensagens via Telegram sobre um pacote que já estamos testando e trocando informações e idéias.
    Se trata do Nxfilter.  Para quem não conhece o mesmo, pode acessar o site > http://www.nxfilter.org
    Trata-se de um pacote que instalamos via Console, então muita gente pode se sentir "desconfortável" com essa solução, mas muitos colegas estão testando e aprovam os resultados.
    Muitos vão perguntar de cara (Bloqueia HTTPS?  precisa instalar certificado?  Precisa configurar proxy no navegador?  Integra com o AD?)
    Diferente do Squid (Que é um Proxy Server), o Nxfilter se trata de Um Servidor DNS com integração à listas (shallalist por exemplo) onde podemos configurar ACLS (Em comparação ao squid) permitindo ou negando um determinado Domínio.
    Como praticamente tudo na internet hoje em dia necessita de DNS para funcionar, a solução está se apresentando satisfatória com todos os nossos colegas.  Inclusive lá já temos vídeos feitos por nós demonstrando a instalação e exemplos de configuração.
    Quem quiser trocar idéias, conhecer o projeto e por em prática o nxfilter no Pfsense, acesse o link abaixo pelo telegram para automaticamente entrar no grupo.  Como não existe "pacote oficial" para pfsense, não temos como utilizar (Por enquanto) o fórum como canal principal de comunicação.  Inclusive estamos em contato com os responsáveis pelo projeto para quem sabe futuramente um pacote ser criado exclusivamente para pfsense.

    Link do Grupo
    https://telegram.me/joinchat/BpMjGQb6zc4kQv9c_R0Fvg

    #######À pedido do nosso amigo Marcelo Coutinho#######

    Abaixo o procedimento de instalação no pfsense.

    Considerações:
    Antes de começar, procure o link da versão mais atual do nxfilter em http://www.nxfilter.org/p2/?page_id=93
    O Nxfilter necessariamente necessita rodar nas portas 80, 443 e 53, logo você deverá alterar a porta da interface web do pfsense, caso não utilize a 80 ou 443, desconsidere.  Outro detalhe, por se tratar de um servidor dns, nenhum outro semelhante deverá estar rodando no pfsense (Bind, dnsmasq ou unbound por exemplo).

    Passos:  Toda a instalação é feita no console.
    1 - pkg update
    2 - pkg search ^openjdk
    3 - pkg install openjdk8-jre
    4 - rehash
    5 - mkdir -p /opt/nxfilter/
    6 - cd /opt/nxfilter/
    7 - fetch http://nxfilter.org/download/nxfilter-VERSAO.zip
    8 - unzip nxfilter-VERSAO.zip
    9 - cd /opt/nxfilter/bin
    10 - chmod +x *.sh
    11 - /opt/nxfilter/bin/startup.sh -d

    Para alterar o Timezone do  Nxfilter que costuma estar diferente do brasileiro, edite o arquivo /opt/nxfilter/bin/startup.sh
    nas linhas 8 e 12 adicionar logo após 'java' o parâmetro -Duser.timezone=America/Sao_Paulo

    Para fazer com que o nxfilter inicie junto com o boot do pfsense, baixe o pacote shellcmd e adicione o comando /opt/nxfilter/bin/startup.sh -d

    Para acessar a interface do Nxfilter, acesse:
    http://IP_PFSENSE/admin (Usuario e senha iniciais admin, admin)

    TUTORIAL OFICIAL do nxfilter > http://www.nxfilter.org/tutorial.html

    Vídeos de colegas que já estão testandeo e/ou utilizando o Nxfilter diretamente no pfsense.
    https://www.youtube.com/watch?v=Z4VAEtzYRlY
    https://www.youtube.com/watch?v=3P7AqXW55GM
    https://www.youtube.com/watch?v=ZGCoM0dvvYE



  • Poderia postar o link dos videos?

    Grato!



  • @victorfmaraujo:

    Como não existe "pacote oficial" para pfsense, não temos como utilizar (Por enquanto) o fórum como canal principal de comunicação.

    Pode colocar aqui com o procedimento de instalação como fiz com o contador de regras e o patch da consulta ldap do squidguard.

    @victorfmaraujo:

    Diferente do Squid (Que é um Proxy Server), o Nxfilter se trata de Um Servidor DNS com integração à listas (shallalist por exemplo) onde podemos configurar ACLS (Em comparação ao squid) permitindo ou negando um determinado Domínio.

    Tem uma implementação parecida usando o bind com views + opendns.

    Pessoalmente vejo vantagens nesse tipo de implementação para ambientes controlados mas infelizmente filtro de navegação por dns é facilmente contornado pelos usuários curiosos ou furiosos uma vez que as portas de navegação ficam abertas para acesso direto.



  • @marcelloc:

    @victorfmaraujo:

    Como não existe "pacote oficial" para pfsense, não temos como utilizar (Por enquanto) o fórum como canal principal de comunicação.

    Pode colocar aqui com o procedimento de instalação como fiz com o contador de regras e o patch da consulta ldap do squidguard.

    @victorfmaraujo:

    Diferente do Squid (Que é um Proxy Server), o Nxfilter se trata de Um Servidor DNS com integração à listas (shallalist por exemplo) onde podemos configurar ACLS (Em comparação ao squid) permitindo ou negando um determinado Domínio.

    Tem uma implementação parecida usando o bind com views + opendns.

    Aliás, temos uma aula específica sobre este tema no treinamento pfSense Extranet: http://sys-squad.com/sys/curso/52

    Pessoalmente vejo vantagens nesse tipo de implementação para ambientes controlados mas infelizmente filtro de navegação por dns é facilmente contornado pelos usuários curiosos ou furiosos uma vez que as portas de navegação ficam abertas para acesso direto.

    Além disso, o NxFilter só consegue efetuar bloqueios por expressões/palavras com utilização de agents na ponta - o que está longe de ser prático!

    []`s
    Jack



  • @JackL:

    Além disso, o NxFilter só consegue efetuar bloqueios por expressões/palavras com utilização de agents na ponta - o que está longe de ser prático!

    Não precisa de agente instalado, só se quiser fazer controle de aplicação.
    Posso usar lista como Shallalist da mesma forma que no Squidguard;



  • @marcelloc:

    Pessoalmente vejo vantagens nesse tipo de implementação para ambientes controlados mas infelizmente filtro de navegação por dns é facilmente contornado pelos usuários curiosos ou furiosos uma vez que as portas de navegação ficam abertas para acesso direto.

    Mas impedindo que seja feita qualquer consulta a outros DNS que não seja o NxFilter não resolve o problema?



  • @Tomas:

    Mas impedindo que seja feita qualquer consulta a outros DNS que não seja o NxFilter não resolve o problema?

    Mas as portas TCP/80 e TCP/443 não vão estar abertas? De que adianta 'bloquear apenas consulta DNS' pra fora?

    Qualquer usuário minimamente 'esperto' será capaz de configurar proxys abertos na internet ou locais pra navegar!

    Este é mecanismo de segurança extremamente frágil, na minha opinião.

    []`s
    Jack



  • @Tomas:

    Não precisa de agente instalado, só se quiser fazer controle de aplicação.
    Posso usar lista como Shallalist da mesma forma que no Squidguard;

    Sim, mas se quiseres bloquear/liberar expressões ou partes de URL e não domínios completos?



  • Criando Ruleset e aplicando a expressão regular.
    Ainda estou testando mas me parece bem promissor, principalmente em ambientes com muitos dispositivos moveis, então não tenho todas as respostas! :)



  • @Tomas:

    Não vai ficar aberto, a porta 53 só vai ser permitida para consulta ao IP do pfSense/NxFilter.

    Como não vai ficar aberto?

    Como os usuários vão navegar na web se as portas 80 e 443 não estiverem abertas da LAN para WAN?



  • @JackL:

    @Tomas:

    Não vai ficar aberto, a porta 53 só vai ser permitida para consulta ao IP do pfSense/NxFilter.

    Como não vai ficar aberto?
    Como os usuários vão navegar na web se as portas 80 e 443 não estiverem abertas da LAN para WAN?

    Desculpe, li errado as portas 80 e 443 ficam abertas sim, tinha entendido que a porta 53 iria ficar aberta, mas como te falei ainda estou estudando a ferramenta, quero validar essa questão.



  • @Tomas:

    Desculpe, li errado as portas 80 e 443 ficam abertas sim, tinha entendido que a porta 53 iria ficar aberta, mas como te falei ainda estou estudando a ferramenta, quero validar essa questão.

    Sim, sim.. é uma 'ferramenta útil' para alguns tipos de cenário - mas fica longe de aplicar um controle realmente efetivo de acesso a web numa rede corporativa/crítica.

    Tratar os filtros à web apenas por DNS pode parecer funcionar num primeiro momento (ká entre nós é simples de fazer - o pfSense com Bind que é nativo resolveria o problema), mas é um tratamento bastante frágil e simplista!

    []`s
    Jack



  • Pergunta: É possível usar em conjunto com o Squid? Tipo, somente o Squid teria acesso as porta 80, 443 e etc, configuramos o Squid para consultar somente o DNS do NxFilter, mas o controle de acesso é feito pelo NxFilter integrado com o AD. Resolveria o problema da fragilidade?

    É possível ou viajei?

    Hoje faço algo parecido com o OpenDNS, deixo bloqueado a categoria Porn por DNS e para outras categorias, uso o SquiGuard mesmo. O problema é que não teria como liberar a categoria Porn para um determinado grupo do AD ou user, caso houvesse solicitação.



  • @JackL:

    @marcelloc:

    @victorfmaraujo:

    Como não existe "pacote oficial" para pfsense, não temos como utilizar (Por enquanto) o fórum como canal principal de comunicação.

    Pode colocar aqui com o procedimento de instalação como fiz com o contador de regras e o patch da consulta ldap do squidguard.

    @victorfmaraujo:

    Diferente do Squid (Que é um Proxy Server), o Nxfilter se trata de Um Servidor DNS com integração à listas (shallalist por exemplo) onde podemos configurar ACLS (Em comparação ao squid) permitindo ou negando um determinado Domínio.

    Tem uma implementação parecida usando o bind com views + opendns.

    Aliás, temos uma aula específica sobre este tema no treinamento pfSense Extranet: http://sys-squad.com/sys/curso/52

    Pessoalmente vejo vantagens nesse tipo de implementação para ambientes controlados mas infelizmente filtro de navegação por dns é facilmente contornado pelos usuários curiosos ou furiosos uma vez que as portas de navegação ficam abertas para acesso direto.

    Além disso, o NxFilter só consegue efetuar bloqueios por expressões/palavras com utilização de agents na ponta - o que está longe de ser prático!

    []`s
    Jack

    Com certeza, assim que chegar em casa irei postar aqui tanto os vídeos do pessoal já testando, bem como o passo a passo de implementacao.

    Concordo inclusive com o Jack sobre as portas http e https fixarem abertas, inclusive isso foi questão de uma calorosa discussão ontem no grupo Rsrs.

    Chegamos à conclusão que,  até mesmo com o Squid sem interceptação ssl, não fica totalmente fechado e que o ideal é o conjunto com um ids /ips.

    Creio inclusive que o treinamento de suricata irá me ajudar bastante nessa empreitada.



  • @castrofrota:

    Pergunta: É possível usar em conjunto com o Squid? Tipo, somente o Squid teria acesso as porta 80, 443 e etc, configuramos o Squid para consultar somente o DNS do NxFilter, mas o controle de acesso é feito pelo NxFilter integrado com o AD. Resolveria o problema da fragilidade?

    É possível ou viajei?

    Possível, é, mas não é funcional, nem prático e muito menos performático. Dentro desta configuração, ao meu ver, o NxFilter fica como 'água de salsicha', ou seja, sem muita utilidade! - Já que todo o trabalho vai continuar sendo feito pelo Squid.

    Aliás, foi pensando exatamente neste tipo de cenário, onde se busca controle e auditoria de conexões HTTP/HTTPS - sem abrir mão de alto-desempenho, que desenvolvemos o SSO WMI: http://conexti.com.br/sso_wmi

    []`
    Jack



  • @victorfmaraujo:

    Concordo inclusive com o Jack sobre as portas http e https fixarem abertas, inclusive isso foi questão de uma calorosa discussão ontem no grupo Rsrs.
    Chegamos à conclusão que,  até mesmo com o Squid sem interceptação ssl, não fica totalmente fechado e que o ideal é o conjunto com um ids /ips.

    A questão é que com Squid, as conexões HTTP/HTTPS passam obrigatoriamente por dentro do Proxy. Nada 'fica aberto' da LAN pra WAN sem 'auditoria' ou aplicação de 'webfilter' - mesmo sem intercepção SSL (coisa que aliás, particularmente, não recomendo por questões práticas e de segurança)!

    []`s
    Jack



  • @marcelloc:

    Pode colocar aqui com o procedimento de instalação como fiz com o contador de regras e o patch da consulta ldap do squidguard.

    Editei o primeiro Post e adicionei o passo a passo de implementação e alguns vídeos.



  • Vejo uma grande ajuda para muitos, nada contra mas em redes que se utiliza muitos dispositivos movel como citado pelo Tomas acredito que sim é uma grande ajuda. Mas em questão de segurança dentre mais, sim squid é uma alternativa muito boa mas não vejo total segurança então nada que utilizar IDS/IPS ou pfblock ou ambos poderia sim manter uma boa segurança…
    Esse é meu ponto de vista onde hoje utilizo com dezenas de redes wireless e esta muito bom...



  • Concordo com o Mateus, pois atualmente nosso grande problema é lidar com bloqueios https nos smartphones, e isso o nxfilter trouxe com facilidade.

    Realmente dá pra fazer algo parecido com o Bind, más não teremos a mesma praticidade, com as listas.

    E pra finalizar, essas "facilidades" em burlar a segurança do pfSense em conjunto com o NXFilter, precisa de algum usuário "espertinho", então esse certamente será demitido.



  • @mateus0032:

    Vejo uma grande ajuda para muitos, nada contra mas em redes que se utiliza muitos dispositivos movel como citado pelo Tomas acredito que sim é uma grande ajuda. Mas em questão de segurança dentre mais, sim squid é uma alternativa muito boa mas não vejo total segurança então nada que utilizar IDS/IPS ou pfblock ou ambos poderia sim manter uma boa segurança…
    Esse é meu ponto de vista onde hoje utilizo com dezenas de redes wireless e esta muito bom...

    "Total segurança" é um termo que ninguém usaria em sã consciência - simplesmente porque ela não existe de fato!.

    Contudo, trabalhar com as portas de conexão diretas (80/443 neste exemplo) abertas, é um ato falho consideravelmente grave. O usuário não precisa ser 'muito esperto' para configurar um simples proxy local na sua máquina ou se quer isso. Ele pode usar centenas de opções em vários países do mundo de proxys abertos na Internet. Se você ainda não enfrentou problemas com usuários burlando este frágil esquema de segurança baseado num filtro DNS, logo, logo terá (se é que ainda não o tem e você não percebeu - já que não aplica filtros e auditoria sobre as portas de conexão).

    Quanto a usar um IPS/IDS ou mesmo o pfBlocker pra conexões saintes, realmente não entendo como isso poderia ajudar de fato. Um sistema de análise de intrusão em conjunto com bloqueios por ranges IP com base da região geográfica (pfBlocker) não resolveria nada neste caso. Ao contrário, deixaria todo o processo de análise de conexões muuuuuuiiiittooooo mais lento que um webproxy com webfilter bem configurado. Toda e qualquer eventual vantagem assinalada aqui em relação a performance com o uso do NxFilter, se perderia muito facilmente e ainda por cima sem qualquer resultado prático que aumentasse a segurança. Notem que usar um IDS/IPS ou um "IPv4/v6 List Sources by Country" são técnicas essencialmente de proteção na extranet (proteger a rede interna da Internet e não o oposto).

    Enfim, estas são apenas algumas reflexões que precisam ser feitas. Sei que é 'fácil subir um NxFilter na rede' e parar de filtrar/auditar as portas diretas de configuração. Também pode ser mais performático - mas não se iludam, isso está longe de ser algo eficiente do ponto de vista de segurança. Acho que pode até ser uma técnica complementar, mas não única para proteger redes locais de acesso indevido na web.

    []`s
    Jack



  • Pergunta : É possível instalar o nxfilter no PfSense 2.3.2?



  • @ThoMalverde:

    Pergunta : É possível instalar o nxfilter no PfSense 2.3.2?

    Sim, é possível: http://blog.bemanuel.com.br/post/nxfilter/nxfilter_pfsense_2_3/

    []`s
    Jack



  • @JackL:

    @ThoMalverde:

    Pergunta : É possível instalar o nxfilter no PfSense 2.3.2?

    Sim, é possível: http://blog.bemanuel.com.br/post/nxfilter/nxfilter_pfsense_2_3/

    []`s
    Jack

    Boa tarde, o pacote do java jdk não estão mais disponível no repositório padrão, como efetuaria a instalação dele neste caso?
    Se alguém puder ajudar agradecido! Muito Obrigado por este tutorial!



  • @pliniofelipe:

    @JackL:

    @ThoMalverde:

    Pergunta : É possível instalar o nxfilter no PfSense 2.3.2?

    Sim, é possível: http://blog.bemanuel.com.br/post/nxfilter/nxfilter_pfsense_2_3/

    []`s
    Jack

    Boa tarde, o pacote do java jdk não estão mais disponível no repositório padrão, como efetuaria a instalação dele neste caso?
    Se alguém puder ajudar agradecido! Muito Obrigado por este tutorial!

    Segue esse tutorial do Tacio Andrade : http://pastebin.com/auANUcxk!
    Consegui instalar por ele!



  • @ThoMalverde:

    @pliniofelipe:

    @JackL:

    @ThoMalverde:

    Pergunta : É possível instalar o nxfilter no PfSense 2.3.2?

    Sim, é possível: http://blog.bemanuel.com.br/post/nxfilter/nxfilter_pfsense_2_3/

    []`s
    Jack

    Boa tarde, o pacote do java jdk não estão mais disponível no repositório padrão, como efetuaria a instalação dele neste caso?
    Se alguém puder ajudar agradecido! Muito Obrigado por este tutorial!

    Segue esse tutorial do Tacio Andrade : http://pastebin.com/auANUcxk!
    Consegui instalar por ele!

    Funcionou perfeitamente! Muito Obrigado

    Vou aproveitar e agregar alguns detalhes do passo a passo:

    Segue o Tutorial do Tacio Andrade  http://pastebin.com/auANUcxk!

    ATENÇÃO PARA A LINHA 14 DO TUTORIAL DO TACIO, um pequeno ERRO de digitação na extensão do pacote JDK para instalar

    1 - #!/bin/sh
    2 - # Script: Scritp de instalação do NXFilter no pfSense 2.3 RC
    3 - # Autor: Tácio Andrade
    4 -
    5 - # Instala os pacotes necessários:
    6 - echo "Atualizando a lista de pacotes"
    7 -  pkg update
    8 - echo "Instalando o Cron"
    9 - pkg install pfSense-pkg-Cron
    10 - echo "Baixando o Java"
    11 - fetch http://tacioandrade.com/owncloud/index.php/s/zDW2mtOgpDxT99c/download -o openjdk8-jre.zip
    12 - unzip openjdk8-jre.zip
    13 - echo "Instalando o Java"
    14 - pkg add openjdk8-jre/openjdk8-jre*.xtz  ''TROQUE A EXTENSÃO .XTZ POR .TXZ''  se não não irá instalar!!
    15 - rehash

    16 - # Inicia a instalação do NXFilter
    17 - echo "Criando a pasta do NXFilter"
    17 - mkdir -p /opt/nxfilter/
    18 - cd /opt/nxfilter/
    19 - echo "Baixando a versão 3.1.6 do NXFilter"
    20 - fetch http://nxfilter.org/download/nxfilter-3.1.6.zip
    21 - unzip nxfilter-.zip
    22 - rm -fr nxfilter-
    .zip
    23 - chmod +x /opt/nxfilter/bin/*.sh
    24 - echo "NXFilter instalado com sucesso!"
    25 - read -p "Vá até o dnsforward e desabilite o serviço. Depois disso vá em System -> Advanced e altere o TCP port para 10443. E pressione qualquer tecla para continuar a configuração."

    26 - # Instalando o Shallalist
    27 - echo "Instalando o Shallalist"
    28 - mkdir  /opt/nxfilter/shallalist1
    29 - cd /opt/nxfilter/shallalist1
    30 - fetch http://www.shallalist.de/Downloads/shallalist.tar.gz
    31 - tar -zxf shallalist.tar.gz
    32 - echo "Se prepara pois esta parte demora!!!!!"
    33 - /opt/nxfilter/bin/update_sh.sh /opt/nxfilter/shallalist1/BL

    34 - # Cria Script de auto start caso o serviço caia
    35 - fetch http://tacioandrade.com/owncloud/index.php/s/euft2ruu4StzORM/download -o /root/iniciaNXFilter.sh

    36 - chmod +x /root/iniciaNXFilter.sh
    37 - echo "NXFilter instalado com sucesso. Crie uma regra no Cron para executar o script /root/iniciaNXFilter.sh o tempo todo e sua instalação estara finalizada!!!"

    AGREGANDO

    1 - Você pode instalar a versão mais nova do NXFILTER, basta quando chegar na linha 19 e 20 do tutorial do Tácio vc trocar o nome do arquivo para a versão mais recente do NXFILTER, fiquem atentos a NOVA POLÍTICA DE USO DO NXFILTER, pois a nova versão 3.4  ela foi alterada, antes era possível usar a Blacklist SHALLALIST em ambientes COMERCIAIS sem a licença, mas a SHALLALIST é livre apenas em ambientes para fins NÃO COMERCIAL. A solução que eles fizeram foi uma versão OEM do NXFILTER, no site tem o endereço para download, e quando for instalar em ambiente COMERCIAL use a versão OEM;

    2 - Instale o Pacote ShellCMD para fazer o NXFilter iniciar junto com o REBOOT do PFSense
    Nele adicione o comando : /opt/nxfilter/bin/startup.sh –d

    3 - A Time Zone do NXFilter costuma estar diferente a do Brasil, para corrigir basta editar o arquivo /opt/nxfilter/bin/startup.sh e editar as linhas 8 e 12 logo após ''java'' e acrescentar o parâmetro:  -Duser.timezone=America/Sao_Paulo LEMBRANDO, NAS LINHAS 8 E 12
    O Correto ficará assim:

    #!/bin/sh
    cd $(dirname $0)
    cd ..
    export NX_HOME=$PWD
    export PATH=$PATH:/usr/bin:/usr/local/bin
    case $1 in
    '-d')
    nohup java -Duser.timezone=America/Sao_Paulo -Djava.net.preferIPv4Stack=true -Xmx512m -Djava.security.egd=file:/dev/./urandom -cp $NX_HOME/nxd.jar:$NX_HOME//lib/: nxd.Main > /dev/null 2>&1 &
    ;;
    )
    #java -Xmx512m -cp $NX_HOME/nxd.jar:$NX_HOME//lib/
    : nxd.Main
    java -Duser.timezone=America/Sao_Paulo -Djava.net.preferIPv4Stack=true -Xmx512m -Djava.security.egd=file:/dev/./urandom -cp $NX_HOME/nxd.jar:$NX_HOME//lib/
    : nxd.Main
    ;;
    esac

    4 - Adicione também este comando ao CRON: /root/checknx.sh configure para executar o tempo todo

    5 - Comandos Úteis para o NXFILTER

    opt/nxfilter/bin/startup.sh -d        INICIA O NXFILTER
    opt/nxfilter/bin/shutdown.sh -d    DESLIGA O NXFILTER

    1. Abraço a todos!


  • @thomalverde olá, link quebrado para jdk...alguém conhece algum repositório para baixá-lo???



  • Bom dia o link do openjdk está quebrado, alguém teria outro link para disponibilizar?