Pesquisa de site

Instalar e configurar pfBlockerNg para lista negra de DNS no firewall pfSense


Em um artigo anterior, foi discutida a instalação de uma poderosa solução de firewall baseada em FreeBSD, conhecida como pfSense. O pfSense, conforme mencionado no artigo anterior, é uma solução de firewall muito poderosa e flexível que pode fazer uso de um computador antigo que pode estar parado e sem fazer muita coisa.

Este artigo vai falar sobre um pacote complementar maravilhoso para o pfsense chamado pfBlockerNG.

pfBlockerNG é um pacote que pode ser instalado no pfSense para fornecer ao administrador do firewall a capacidade de estender os recursos do firewall além do tradicional firewall L2/L3/L4 com estado.

À medida que as capacidades dos atacantes e dos criminosos cibernéticos continuam a avançar, o mesmo acontece com as defesas criadas para impedir os seus esforços. Como acontece com qualquer coisa no mundo da computação, não existe uma solução que conserte todos os produtos.

O pfBlockerNG fornece ao pfSense a capacidade do firewall de tomar decisões de permissão/negação com base em itens como a geolocalização de um endereço IP, o nome de domínio de um recurso ou as classificações Alexa de sites específicos.

A capacidade de restringir itens como nomes de domínio é muito vantajosa, pois permite que os administradores frustrem tentativas de máquinas internas que tentam se conectar a domínios mal-intencionados conhecidos (em outras palavras, domínios que podem ser conhecidos por conter malware, conteúdo ilegal ou outros dados insidiosos).

Este guia orientará a configuração de um dispositivo de firewall pfSense para usar o pacote pfBlockerNG, bem como alguns exemplos básicos de listas de bloqueios de domínio que podem ser adicionadas/configuradas na ferramenta pfBlockerNG.

Requisitos

Este artigo fará algumas suposições e será baseado no artigo de instalação anterior sobre o pfSense. As premissas serão as seguintes:

  • O pfSense já está instalado e não possui regras configuradas no momento (slate limpo).
  • O firewall possui apenas uma porta WAN e uma porta LAN (2 portas).
  • O esquema IP usado no lado da LAN é 192.168.0.0/24.

Deve-se observar que o pfBlockerNG pode ser configurado em um firewall pfSense já em execução/configurado. A razão para essas suposições aqui é simplesmente por uma questão de sanidade e muitas das tarefas que serão concluídas ainda podem ser realizadas em uma caixa PfSense não limpa.

Diagrama de Laboratório

A imagem abaixo é o diagrama do laboratório do ambiente pfSense que será usado neste artigo.

Instale o pfBlockerNG para pfSense

Com o laboratório pronto, é hora de começar! O primeiro passo é conectar-se à interface web do firewall pfSense. Novamente, este ambiente de laboratório está usando a rede 192.168.0.0/24 com o firewall atuando como gateway com um endereço 192.168.0.1. Usar um navegador da web e navegar até ‘https://192.168.0.1’ exibirá a página de login do pfSense.

Alguns navegadores podem reclamar do certificado SSL, isso é normal já que o certificado é autoassinado pelo firewall pfSense. Você pode aceitar a mensagem de aviso com segurança e, se desejar, um certificado válido assinado por uma CA legítima pode ser instalado, mas está além do escopo deste artigo.

Após clicar com sucesso em ‘Avançado’ e depois em ‘Adicionar exceção…’, clique para confirmar a exceção de segurança. A página de login do pfSense será exibida e permitirá que o administrador faça login no dispositivo de firewall.

Uma vez logado na página principal do pfSense, clique no menu suspenso ‘Sistema’ e selecione ‘Gerenciador de Pacotes’.

Clicar neste link mudará para a janela do gerenciador de pacotes. A primeira página a carregar conterá todos os pacotes atualmente instalados e estará em branco (novamente, este guia pressupõe uma instalação limpa do pfSense). Clique no texto ‘Pacotes Disponíveis’ para obter uma lista de pacotes instaláveis para o pfSense.

Assim que a página 'Pacotes Disponíveis' for carregada, digite 'pfblocker' na caixa 'Termo de pesquisa' e clique em 'Pesquisar'. O primeiro item retornado deve ser pfBlockerNG. Localize o botão ‘Instalar’ à direita da descrição do pfBlockerNG e clique em ‘+’ para instalar o pacote.

A página será recarregada e solicitará ao administrador que confirme a instalação clicando em ‘Confirmar’.

Uma vez confirmado, o pfSense começará a instalar o pfBlockerNG. Não saia da página do instalador! Aguarde até que a página exiba a instalação bem-sucedida.

Assim que a instalação for concluída, a configuração do pfBlockerNG pode começar. A primeira tarefa que precisa ser concluída são algumas explicações sobre o que acontecerá quando o pfBlockerNG for configurado corretamente.

Depois que o pfBlockerNG estiver configurado, as solicitações de DNS para sites deverão ser interceptadas pelo firewall pfSense executando o software pfBlockerNG. O pfBlockerNG terá então listas atualizadas de domínios inválidos conhecidos que são mapeados para um endereço IP inválido.

O firewall pfSense precisa interceptar solicitações de DNS para poder filtrar domínios ruins e usará um resolvedor de DNS local conhecido como UnBound. Isso significa que os clientes na interface LAN precisam usar o firewall pfSense como resolvedor de DNS.

Se o cliente solicitar um domínio que esteja nas listas de bloqueio do pfBlockerNG, o pfBlockerNG retornará um endereço IP falso para o domínio. Vamos começar o processo!

Configuração pfBlockerNG para pfSense

O primeiro passo é habilitar o resolvedor UnBound DNS no firewall pfSense. Para fazer isso, clique no menu suspenso ‘Serviços’ e selecione ‘Resolvedor DNS’.

Quando a página for recarregada, as configurações gerais do resolvedor DNS serão configuráveis. Esta primeira opção que precisa ser configurada é a caixa de seleção ‘Ativar DNS Resolver’.

As próximas configurações são definir a porta de escuta do DNS (normalmente a porta 53), definir as interfaces de rede nas quais o resolvedor de DNS deve escutar (nesta configuração, deve ser a porta LAN e Localhost) e, em seguida, definir a porta de saída (deve ser WAN nesta configuração).

Depois que as seleções forem feitas, clique em 'Salvar' na parte inferior da página e depois clique no botão 'Aplicar alterações' que aparecerá na parte superior de a página.

A próxima etapa é a primeira etapa na configuração específica do pfBlockerNG. Navegue até a página de configuração do pfBlockerNG no menu ‘Firewall’ e clique em ‘pfBlockerNG’.

Depois que o pfBlockerNG for carregado, clique primeiro na guia ‘DNSBL’ para começar a configurar as listas DNS antes de ativar o pfBlockerNG.

Quando a página ‘DNSBL’ for carregada, haverá um novo conjunto de menus abaixo dos menus do pfBlockerNG (destacados em verde abaixo). O primeiro item que precisa ser abordado é a caixa de seleção ‘Ativar DNSBL’ (destacada em verde abaixo).

Esta caixa de seleção exigirá que o resolvedor UnBound DNS seja usado na caixa pfSense para inspecionar solicitações de DNS de clientes LAN. Não se preocupe, o UnBound foi configurado anteriormente, mas esta caixa precisará ser marcada! O outro item que precisa ser preenchido nesta tela é o ‘DNSBL Virtual IP’.

Este IP precisa estar na faixa de rede privada e não ser um IP válido na rede em que o pfSense está sendo usado. Por exemplo, uma rede LAN em 192.168.0.0/24 poderia usar um IP 10.0.0.1, pois é um IP privado e não faz parte da rede LAN.

Este IP será usado para coletar estatísticas, bem como monitorar domínios que estão sendo rejeitados pelo pfBlockerNG.

Rolando a página para baixo, há mais algumas configurações que vale a pena mencionar. A primeira é a ‘Interface de escuta DNSBL’. Para esta configuração, e para a maioria das configurações, esta configuração deve ser definida como ‘LAN’.

A outra configuração é ‘List Action’ em ‘DNSBL IP Firewall Settings’. Esta configuração determina o que deve acontecer quando um feed DNSBL fornece endereços IP.

As regras do pfBlockerNG podem ser configuradas para realizar qualquer número de ações, mas provavelmente ‘Negar Ambas’ será a opção desejada. Isso impedirá conexões de entrada e saída com o IP/domínio no feed DNSBL.

Depois que os itens forem selecionados, vá até o final da página e clique no botão ‘Salvar’. Assim que a página for recarregada, é hora de configurar as listas de bloqueios de DNS que devem ser usadas.

pfBlockerNG fornece ao administrador duas opções que podem ser configuradas de forma independente ou em conjunto dependendo da preferência do administrador. As duas opções são feeds manuais de outras páginas da web ou EasyLists.

Para ler mais sobre as diferentes EasyLists, visite a página inicial do projeto: https://easylist.to/

Configurar pfBlockerNG EasyList

Vamos discutir e configurar as EasyLists primeiro. A maioria dos utilizadores domésticos considerará estas listas suficientes e menos onerosas do ponto de vista administrativo.

As duas EasyLists disponíveis no pfBlockerNG são ‘EasyList sem ocultação de elemento’ e ‘EasyPrivacy’. Para usar uma dessas listas, primeiro clique em ‘DNSBL EasyList’ na parte superior da página.

Assim que a página for recarregada, a seção de configuração do EasyList será disponibilizada. As seguintes configurações precisarão ser definidas:

  • Nome do grupo DNS – escolha do usuário, mas sem caracteres especiais
  • Descrição – Escolha do usuário, caracteres especiais permitidos
  • EasyList Feeds State – Se a lista configurada é usada
  • EasyList Feed – Qual lista usar (EasyList ou EasyPrivacy) ambas podem ser adicionadas
  • Cabeçalho/Rótulo – Escolha do usuário, mas sem caracteres especiais

A próxima seção é usada para determinar quais partes das listas serão bloqueadas. Novamente, todas essas são preferências do usuário e várias podem ser selecionadas, se desejado. As configurações importantes em ‘DNSBL – Configurações EasyList’ são as seguintes:

  • Categorias – Preferência do usuário e múltiplas podem ser selecionadas
  • List Action – Precisa ser definido como ‘Unbound’ para inspecionar solicitações de DNS
  • Frequência de atualização – Com que frequência o pfSense atualizará a lista de sites ruins

Quando as configurações do EasyList estiverem definidas de acordo com as preferências do usuário, role até o final da página e clique no botão ‘Salvar’. Assim que a página for recarregada, vá até o topo da página e clique na guia ‘Atualizar’.

Uma vez na guia de atualização, marque o botão de opção ‘Recarregar’ e, em seguida, marque o botão de opção ‘Todos’. Isso será executado por meio de uma série de downloads da web para obter as listas de bloqueios selecionadas anteriormente na página de configuração do EasyList.

Isso deve ser feito manualmente, caso contrário as listas não serão baixadas até a tarefa cron agendada. Sempre que forem feitas alterações (listas adicionadas ou removidas), certifique-se de executar esta etapa.

Observe a janela de registro abaixo para detectar quaisquer erros. Se tudo correr conforme o planejado, as máquinas clientes no lado da LAN do firewall deverão ser capazes de consultar o firewall do pfSense em busca de sites maliciosos conhecidos e receber endereços IP incorretos em troca. Novamente, as máquinas clientes devem ser configuradas para usar a caixa pfsense como seu resolvedor de DNS!

Observe no nslookup acima que a url retorna o IP falso configurado anteriormente nas configurações do pfBlockerNG. Este é o resultado desejado. Isso resultaria em qualquer solicitação ao URL ‘100pour.com’ sendo direcionada para o endereço IP falso 10.0.0.1.

Configurar feeds DNSBL para pfSense

Em contraste com as AdBlock EasyLists, também existe a capacidade de usar outras listas negras de DNS dentro do pfBlockerNG. Existem centenas de listas usadas para rastrear comando e controle de malware, spyware, adware, nós tor e todos os tipos de outras listas úteis.

Essas listas geralmente podem ser inseridas no pfBlockerNG e também usadas como outras listas negras de DNS. Existem alguns recursos que fornecem listas úteis:

  • https://forum.pfsense.org/index.php?topic=114499.0
  • https://forum.pfsense.org/index.php?topic=102470.0
  • https://forum.pfsense.org/index.php?topic=86212.0

Os links acima fornecem tópicos no fórum do pfSense onde os membros postaram uma grande coleção de listas que usam. Algumas das listas favoritas do autor incluem o seguinte:

  • http://adaway.org/hosts.txt
  • http://www.malwaredomainlist.com/hostslist/hosts.txt
  • http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext
  • https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
  • https://gist.githubusercontent.com/BBcan177/4a8bf37c131be4803cb2/raw

Novamente, existem inúmeras outras listas e o autor incentiva fortemente que as pessoas procurem mais/outras listas. Vamos continuar com as tarefas de configuração.

O primeiro passo é entrar novamente no menu de configuração do pfBlockerNG através de 'Firewall' -> 'pfBlockerNG' -> 'DSNBL'.

Uma vez na página de configuração DNSBL novamente, clique no texto ‘DNSBL Feeds’ e, em seguida, clique no botão ‘Adicionar’ quando a página for atualizada.

O botão adicionar permitirá ao administrador adicionar mais listas de endereços IP ou nomes DNS incorretos ao software pfBlockerNG (os dois itens já na lista são do autor do teste). O botão adicionar leva o administrador a uma página onde as listas DNSBL podem ser adicionadas ao firewall.

As configurações importantes nesta saída são as seguintes:

  • Nome do grupo DNS – Usuário escolhido
  • Descrição – Útil para manter grupos organizados
  • Configurações DNSBL – Estas são as listas reais
    • Estado – Se essa fonte é usada ou não e como é obtida
    • Fonte – O link/fonte da Lista Negra de DNS
    • Cabeçalho/Rótulo – Escolha do usuário; sem caracteres especiais
  • Ação da lista – definida como não vinculada
  • Frequência de atualização – Com que frequência a lista deve ser atualizada

Depois que essas configurações forem definidas, clique no botão salvar na parte inferior da página. Tal como acontece com qualquer alteração no pfBlockerNG, as alterações entrarão em vigor no próximo intervalo agendado do cron ou o administrador pode forçar manualmente uma recarga navegando até a guia 'Atualizar', clique em 'Recarregar<' e, em seguida, clique no botão de opção 'Todos'. Depois de selecionados, clique no botão ‘Executar’.

Observe a janela de registro abaixo para detectar quaisquer erros. Se tudo correu conforme o planejado, teste se as listas estão funcionando simplesmente tentando fazer um nslookup de um cliente no lado lan para um dos domínios listados em um dos arquivos de texto usados na configuração DNSBL.

Como pode ser visto na saída acima, o dispositivo pfSense está retornando o endereço IP virtual que foi configurado no pfBlockerNG como o IP inválido para os domínios da lista negra.

Neste ponto, o administrador pode continuar ajustando as listas adicionando mais listas ou criando listas personalizadas de domínio/IP. O pfBlockerNG continuará redirecionando esses domínios restritos para um endereço IP falso.

Obrigado por ler este artigo sobre pfBlockerNG. Por favor, mostre seu apreço ou apoio ao software pfSense, bem como ao pfBlockerNG, contribuindo de qualquer maneira possível para o desenvolvimento contínuo de ambos esses produtos maravilhosos. Como sempre, comente abaixo com sugestões ou dúvidas!