Ir para o conteúdo

Filtro de DNS - NXFilter

Há diversas alternativas para filtrar a navegação de internet dos usuários. Apesar de não ser oficial, disponibilizamos aqui o procedimento para instalar o NXFilter no Firewall OPNsense.


Introdução

O NXFilter é uma solução de Filtro DNS compatível com plataformas Windows, Linux e FreeBSD.

Compartilhamos aqui este procedimento como uma alternativa ao filtro de websites com Proxy ou Zenarmor.

Por não ser oficial, a administração (telas) do NXFilter é fora da WebGui do firewall, e requer um login+senha próprio.

Além disso é importante notar que o NXFilter é um servidor DNS, e você deve desativar o DNS (Unbound) do OPNsense para conseguir usar o NXFilter. Neste exemplo, nós não iremos desativar o Unbound, mas sim trocar a porta dele e configurar para o NXFilter usá-lo como upstream (encaminhador). Assim teremos o NXFilter fazendo bloqueios e o Unbound fazendo cache/recursão - que é o melhor dos mundos.

Atenção: Este procedimento é para o uso do NXFilter sozinho, ou seja, SEM INTEGRAÇÃO COM O PROXY.

Se você está buscando a configuração do NXFilter para integração com o Proxy, veja a página Web com Proxy Squid.


Limitações

  • Para que sejam aplicados os bloqueios/liberações, as máquinas da rede precisam usar o Firewall como servidor DNS;
  • A licença Gratuita da lista de bloqueios avançada permite até 30 usuários simultâneos. Mais do que isso é necessário adquirir licenças direto do site;
  • O Agente de Integração com Active Directory não funciona em servidores de domínio Linux.
  • Importante: Para o firewall usar o NXFilter local como servidor DNS, será necessário desabilitar o IPv6.

Pré-Requisitos

  • O firewall NÃO pode estar estar instalado com BIOS e sistema de arquivos ZFS em simultâneo!
    • Verificar se está instalado em BIOS com o comando: sysctl machdep.bootmethod
    • verificar se está com zfs com o comando: gpart list | grep -E '\stype'

Recapitulando:

BOOT FILESYSTEM PODE OU NÃO INSTALAR
UEFI ZFS PODE
UEFI UFS PODE
BIOS UFS PODE
BIOS ZFS NÃO PODE INSTALAR

Instalação

  1. Acesse o firewall via SSH com o usuário root.
  2. Baixar o script instalador para freebsd

    curl -L -O 'https://raw.githubusercontent.com/DeepWoods/nxfilter-pfsense/master/install-nxfilter.sh'
    
  3. Editar o arquivo de script substituindo as ocorrências de "pcregrep" por "pcre2grep".

    vi install-nxfilter.sh
    :%s/pcregrep/pcre2grep/
    :x
    
  4. Executar o script instalador

    sh install-nxfilter.sh
    
  5. Alterar a configuração do NXFilter

    cat << EOF > /usr/local/nxfilter/conf/cfg.properties
    listen_ip = 0.0.0.0
    http_port = 9080
    https_port = 9081
    dns_port = 53
    start_tomcat = 1
    cluster_mode = 0
    master_ip =
    slave_ip =
    blacklist_type = 5
    www_dir = guipack/sandwatch
    EOF
    
  6. Volte na interface web do firewall e acesse o menu Services → Unbound DNS → General.

  7. Altere o campo Listen Port de 53 para 5353 e clique em Apply.
  8. Iniciar o NXFilter na linha de comandos.

    /usr/local/etc/rc.d/nxfilter.sh start
    
  9. Acesse o painel de administração do Web do NXFilter http://ip-do-firewall:9080/admin.

  10. Faça login usando login e senha “admin” e “admin”.
  11. Acesse o menu System → Admin.
  12. Clique na guia “ADMIN PASSWORD”.
  13. Preencha o campo Current Password com “admin”.
  14. Insira uma nova senha no campo New Password e repita no campo Confirm Password.
  15. Clique em Submit.
  16. Acesse o menu DNS → Setup.
  17. Preencha o campo Upstream DNS Server #1 com o endereço: 127.0.0.1:5353
  18. Preencha o campo Upstream DNS Server #2 com o endereço: 1.1.1.3
  19. Preencha o campo Upstream DNS Server #3 com o endereço: 1.0.0.3
  20. Clique no botão Submit ao final da Página.
  21. Acesse o menu Interfaces → Settings. Desmarque a opção “Allow IPv6” e clique em Save ao final da página.
  22. Acesse o menu Interfaces → WAN. Desabilite o endereçamento IPv6 da interface e clique em Save ao final da página, e depois em Apply Changes.

    📌 Repita a etapa acima para cada link de internet adicional.

  23. Acesse o menu System → Settings → General e preencha o primeiro endereço como 127.0.0.1 e clique em Save ao final da página.

  24. Certifique-se de que na configuração do Serviço DHCP o endereço de servidor DNS está preenchido manualmente. Pode apontar para o servidor AD ou para o IP do firewall.
  25. Reinicie o Firewall.

Criando um Bloqueio Geral

  1. Acesse o menu Policy → Policy.
  2. Clique no ícone para editar a política padrão.
  3. Clique na guia “Blocked Categories”.
  4. Selecione as seguintes categorias para serem bloqueadas para todos os usuários:
    • Gambling
    • Phishing/Malware
    • Warez/Torrent
    • Drugs
    • Game
    • Porn
    • Dating
    • Hacking
    • Proxy/Anonymizer
    • Suspicious
  5. Clique no botão Submit ao final da página.
  6. Tente navegar em algum website e confirme que foi bloqueado o acesso.
  7. Confirme que o acesso foi bloqueado devidamente.

Habilitando a Mensagem de Bloqueio

A este ponto, estamos assumindo que você já trocou a porta de administração do firewall (WebGui) e também já desabilitou o redirecionamento da porta 80 padrão.

Caso esteja usando a porta 80 para o serviço do NGINX com o WPAD, e queira exibir a tela de bloqueios do NXFilter, haverá um conflito.

Para resolver, você tem 2 alternativas:

  • Trocar a porta 80 do WPAD/Nginx para 8080 e usar o NXFilter na porta 80 que ficou livre; ou
  • Cadastrar um novo Location no Nginx fazendo apontamento para o servidor web interno do NXFilter.

Para estar de acordo com as configurações anteriormente definidas, iremos cadastrar um novo Location no Nginx para as páginas de bloqueio do NXFilter.

  1. Acesse o menu Services → Nginx → Configuration.
  2. Acesse a guia Upstream → Upstream Server.
  3. Clique no botão “+ Add” para adicionar um novo Upstream Server da seguinte forma:
    • Description: NXFilter
    • Server: 127.0.0.1
    • Port: 9080
    • Server Priority: 1
    • Clique em Save.
  4. Acesse a guia Upstream → Upstream.
  5. Clique no botão “+ Add” para adicionar um novo Upstream da seguinte forma:
    • Description: NXFilter
    • Server Entries: NXFilter
    • Clique em Save
  6. Acesse o menu Services → Nginx → Configuration.
  7. Acesse a guia HTTP(S) → Location.
  8. Clique no botão “+ Add” para adicionar um novo Location com os seguintes dados:
    1. Description: NXFilter
    2. URL Pattern: /
    3. Upstream Servers: NXFilter
    4. Clique em Save.
  9. Acesse a guia HTTP(S) → HTTP Server.
  10. Edite o HTTP Server já existente da porta 80.
    • No campo Locations selecione também o NXFilter.
    • Clique em Save.
  11. Clique no botão de seta circular no canto inferior direito da tela para aplicar.
  12. Volte no Computador e teste novamente o acesso a algum website bloqueado.

Próximos Passos

  • Configure o Serviço de DHCP para enviar para as máquinas o IP do próprio firewall como DNS.
  • Configure a Integração com o Active Directory usando os métodos de Autenticação: https://www.nxfilter.org/tutorial/c-single-sign-on-methods.php.
  • Explore os Relatórios (Logging → DNS Requests e Report → Daily) no NXFilter.
  • Explorar a possibilidade de licenciamento do NXFilter para redes com mais de 30 usuários - https://nxfilter.org/p4/license-shop/.