Tempo de leitura: 13 minutos
O pfBlockerNG, , é um pacote relativamente novo que bloqueia países e intervalos de IP. Ele foi projetado para combinar os recursos do Countryblock e do IPblocklist. O pfBlocker é um bom pacote para se você estiver executando um servidor de e-mail, já que ele permite bloquear rapidamente os principais países dos quais o spam é originado. Além disso, você nem precisa criar suas próprias listas de bloqueio, pois há várias listas de bloqueio gratuitas disponíveis na Web.
Ele pode atuar como Países diretamente com o GeoIP, Listas IPv4 e IPv6, e bloqueios de domínios através do DNSBL
O processo de instalação é bem simples, basta ir em System | Package Mananger | Avaliable Package e selecionar pfBlockerNG.
Será criado uma nova entrada na guia Firewall, mas ele ainda não está pronto para ser utilizado, é necessária uma atualização do banco de dados GeoIP2. Podemos fazer esse procedimento através da linha de comando, ou através do menu Diagnostics | Command Prompt e executar o seguinte comando :
/usr/local/bin/geoipupdate.sh
Após esse procedimento, o pfBlockerNG estará pronto para uso. Acesse ele através do menu Firewall | pfBlockerNG. Podemos ver abaixo que ele possui várias guias, vejamos suas funções.
- General: é onde habilitamos o uso do pfBlocker, e fazemos as configurações padrões.
- Update: Nesta guia agendamos os Updates, ou executamos Update de nossas Listas.
- Alerts: Está guia nos exibe alertas de bloqueio e acessos de nossas regras.
- Reputation: permite que você ative o pfBlocker para procurar infratores reincidentes em cada intervalo de IP.
- IPv4: é o local onde criamos nossas Listas de endereço IPv4. Essas listas podem ser criadas manualmente ou importadas de URL.
- IPv6: Dá mesma forma que IPv4, é o local onde criamos ou importamos nossas listas de endereços IPv6.
- DNSBL: Está é nossa BlackList de DNS. Nesta guia podemos criar ou importar os lista de domínios prejudiciais, tal como malweres, vírus, entre outros.
- GeoIP: Nesta Guia poderemos bloquear tráfego baseado no País. Existem outras guias dentre desta, onde temos a lista Top 20 países que possuem maior quantidade de Spamers, e temos outras guias distribuídas por continentes.
- Logs: Está guia exibe Logs referente ao pfBlocker.
- Sync: Utilizado para sincronismos entre outro pfSense CARP.
Uma vez conhecido nossa interface, para começarmos as nossas configurações, criações e importação de Listas, devemos habilita-lo na guia General.
Para habilita-lo faça o seguinte:
- Navegue até Firewall | pfBlockerNG.
- Marque o item Enable pfBlockerNG.
- Keep settings, manterá as configurações do pfBlockerNG ao reinstalar ou atualizar esse pacote. Caso não esteja marcado, as configurações serão apagadas em uma instalação, reinstalação ou atualização.
- A opção CRON Settings, permite configurar o intervalo em que a interface MaxMind será atualizada.
- Na caixa de seleção Global Logging, ativará o registro de regras do firewall no LOG.
- Em MaxMind Localized Language, selecionamos a língua no caso Brazilian Portuguese.
- Disable MaxMind Updates, se marcada, desativará a atualização Cron mensal do banco de dados GeoIP da MaxMind. Isso não afeta a tarefa cron binária da MaxMind.
- Download Failure Threshold, define o limite máximo de falha de download diário via CRON. Em uma falha de download, a lista baixada anteriormente é recarregada.
- Logfile Size, define o número de linhas do log.
- Em Inbound Firewall Rules permite selecionar as interfaces às quais as regras de entrada se aplicam. Normalmente a WAN, e por padrão são bloqueadas com a opção Block.
- Em Outbound Firewall Rules, permite selecionar as interfaces as quais o trafego de saída será rejeitado para impedir que os usuários da sua rede se conectem a endereços IP que estão nas listas de bloqueio). Normalmente a interface selecionada será a LAN. É possível selecionar mais de uma interface.
- A opção OpenVPN Interface, se selecionada, adicionará regras automáticas para o OpenVPN. Essas regras serão adicionadas em Floating Rules ou na Guia OpenVPN Rules.
- IPSec Interface, da mesma forma que a opção anterior do OpenVPN, adicionará regras automaticamente para o IPSec.
- Floting Rules, permite que as regras sejam geradas na guia Floting Rules. Isto é útil para garantir que as regras automáticas estejam em um único lugar.
- Em Rule Order, especificar a ordem das regras. Por padrão, as regras do pfBlocker tem precedência sobre todas as outras.
- Em Auto Rule Suffix, define o sufixo de descrição para as regras do pfBlockerNG.
- Kill States, quando ‘Enabled’, após um evento cron ou qualquer comando ‘Force’, qualquer IP bloqueado encontrado nos estados do Firewall será apagado.
- Salve as configurações.
Após todo esse procedimento, estamos prontos para criar nossas Listas de Bloqueio. Através das guias IPv4 e IPv6 poderemos criar ou importar Listar de endereços que serão bloqueados pelo pfSense. Cada entrada deve receber um nome, que é especificado no campo Alias Name. Sua lista pode ser acessada por meio de um URL ou localmente.
Na realidade, é criado um Alias com todos os endereços informados, e uma regra conforme configurado em Floating Rules.
Nesse momento irei usar uma lista localizada em https://www.binarydefense.com/banlist.txt, importando para o nosso pfBlockerNG.
Você poderia fazer manualmente também no próprio pfSense, sem uso do pfBlocker, adicionando um Alias e depois uma regra. Mas no quesito DNSBL e GeoIP não temos como fazer manualmente sem o uso do pfBlocker.
Vamos então a criação da Lista IPv4.
- Navegue para Firewall | PFBlockerNG.
- Selecione a Guia IPV4.
- Clique em +Add para adicionarmos uma nova lista.
- Em Alias Name, informe um nome para a lista, neste caso iremos chamar de BanList.
- Em List Description informe uma descrição para a lista.
- Em IPv4 List, deixa o formato como Auto, State como ON, e por fim informe a URL da lista em Source. Ao final adicione um Label (Etiqueta) no campo Label.
- No campo List Action, devemos informar que tipo de ação iremos executar quando encontrar um IP da lista. Neste caso quero bloquear tanto entrada como saída, para isso deixe como Deny Both.
- Update Frequency informa ao pfBlockerNG, período para atualização. Neste caso deixemos como Once a day, para que seja feita atualização da lista, uma vez por dia.
- Salve a Configuração.
A lista não é atualizada imediatamente, caso tenha a necessidade de atualizar neste momento, basta executar atualização (Run) na Guia Update.
É possível adicionar mais de uma lista por regras por configuração IPv4 ou IPv6, bastando clicar no botão +Add abaixo de IPv4 Lists.
São criados Alias do tipo table para essas listas, que são atualizadas para uma segunda lista diretamente no pfSense. As regras de firewall criadas automaticamente pelo pfBlockerNG, normalmente ficam em Floating Rules. Podemos ver abaixo que foram criadas duas regras, um referente a origem e outra ao destino.
Para visualizar nossa lista de IP basta navegar para Diagnostics | Tables e selecionar a tabela ao qual deseja visualizar.
Com isso temos nosso Lista IPv4 criada, mas como disse anteriormente isso poderia ter sido criado manualmente no pfSense. Mas as próximas listas não teríamos como criar manualmente. Vejamos agora a Lista DNSBL.
No DNSBL podemos criar listas com domínios que serão restringidos pelo pfBlockerNG, evitando entrada ou saída de ou para esses destinos. De fato, o que é feito é uma lista de domínios e esses apontando diretamente para localhost (127.0.0.1). Obviamente isso só ira funcionar se os clientes estiverem usando o pfSense como DNS, e o DNS Resolver estiver habilitado.
Além disso o próprio pfBlockerNG, já traz listas que normalmente já são o suficiente para a maioria dos administradores.
Dentro da Guia DNSBL, existe 3 novas guias, que veremos abaixo:
- DNSBL: Nesta guia habilitamos o uso do DNSBL para bloqueio de domínios.
- DNSBL Feeds: Onde criamos ou importamos nossas listas próprias.
- DNSBL EasyList: Nesta guia podemos escolher as listas prontas do pfBlockerNG.
Vamos a configuração principal:
- Navegue para Firewall | PFBlockerNG | DNSBL.
- Marque a opção Enable DNSBL.
- Em DNSBL Virtual IP deverá ser informado um endereço IP que não faça parte da LAN do PFSense e não esteja sendo usado, por exemplo 10.10.10.1.
- Em DNSBL Listening Port e DNSBL SSL Listening Port pode-se deixar a porta padrão.
- Em DNSBL Listening Interface usaremos a interface LAN, pois serão filtrados a partir da LAN com destino a nossas listas negras de DNS.
- Em List Action devemos utilizar a opção Deny Both, para negar qualquer tipo de solicitação para nossas listas.
- Salve as configurações.
O endereço virtual que configuramos será utilizado para coletar estatísticas, bem como monitorar domínios que estão sendo rejeitados pelo PFBlockerNg.
O pfBlockerNG fornece ao administrador duas opções que podem ser configuradas independentemente ou juntas, dependendo da preferência do administrador. As duas opções são feeds manuais de outras páginas da Web ou EasyLists.
Vamos configurar EasyList, pode ser considerada suficientes e menos onerosa para o pfSense. Os dois EasyLists disponíveis no pfBlockerNG são EasyList w/o Elements e EasyPrivacy . Para usar uma dessas listas, faça o seguinte:
- Navegue para Firewall | PFBlockerNG | DNSBL | DNSBL EasyList.
- Em DNS GROUP Name, informe um nome para esse grupo.
- Em Description forneça uma descrição.
- Em EasyList Feeds, você poderá optar por usar um dos tipos, ou se quiser ambos os tipos. Em nosso exemplo estaremos usando ambas.
- Devemos informar qual categorias vamos selecionar em Categories. Varias categorias podem ser selecionadas usando a tecla Ctrl + categoria.
- Em List Action, devemos selecionar Unbound para que DNSBL bloqueio tais listas.
- Em Update Frequency, podemos deixar uma vez por dia, selecionando Once a day.
- Clique em Save, para salvar.
Novamente é necessário atualizar o pfBlockerNG para que reflita as alterações feitas, para isso para ir na guia Updates e executar o Run.
EasyList é a principal lista de filtros que remove a maioria dos anúncios de páginas da Web internacionais, incluindo quadros, imagens e objetos indesejados. É a lista mais popular usada por muitos bloqueadores de anúncios e forma a base de mais de uma dúzia de listas de filtros combinados e complementares.
O EasyPrivacy é uma lista de filtros suplementar opcional que remove completamente todas as formas de rastreamento da Internet, incluindo bugs da Web, scripts de rastreamento e coletores de informações, protegendo, assim, seus dados pessoais.
Algumas observações de suma importância para que funcione o DNSBL:
- DNS Resolver esteja configurado.
- E a opção Disable DNS Forwarder na Guia System | General Setup.
- Os clientes DHCP deverão usar o próprio pfSense como servidor DNS primário.
Se tudo configurado corretamente, qualquer solicitação para resolução de nomes de qualquer nome em nossas listas, deverá ser devolvido um ip invalido de nosso DNSBL Virtual IP.
Observe no nslookup acima que o url retorna o IP falso configurado anteriormente nas configurações do pfBlockerNG. Este é o resultado desejado. Isso resultaria em qualquer solicitação para o URL ‘ 100pour.com ‘ direcionado para o endereço IP falso de 10.10.10.1.
Agora veremos como criar nossas próprias lista, ou melhor importa-las. Neste exemplo estou usando a lista http://adaway.org/hosts.txt. O procedimento é bem parecido ao visto nas Listas IPv4. Faça o seguinte:
Para configurar faça o seguinte:
- Navegue para Firewall | PFBlockerNG | DNSBL | DNSBL Feeds.
- Clique em +Add para adicionar uma nova lista.
- Em DNS GROUP Name informe um nome para o grupo de listas.
- Em Description informe uma descriçaõ.
- Em DNSBL informe a URL da lista.
- Em List Action marque a opção Unbound.
- Update Frequency selecione Once a day.
- Salve as configurações, clicando em Save.
Novamente deverá ser feito uma atualização forçada na guia Update.
Após atualização, é possível testar como feito anteriormente, tentando acesso, ping ou até resolução de nomes, de um dos domínios cadastrados em nossa lista, como por exemplo lb.usemaxserver.de.
Como podemos ver acima, novamente o domínio em questão foi resolvido para um ip falso 10.10.10.1.
O próximo item que veremos é o bloqueio de tráfego baseado no local ou melhor Pais. Através do GeoIP podemos selecionar quais países podem ou não acessar e ser acessados.
A guia GeoIP (Anteriormente Country) permite bloquear rapidamente qualquer um dos principais países dos quais o spam é originado. Existem duas listas de 20 principais países de spammer: uma para IPv4 e outra para IPv6. Você pode selecionar países pressionando Ctrl (um país) ou Shift (vários países) e clicando em países. A caixa suspensa List Action permite que você selecione o que acontece com o tráfego dos países selecionados.
Vejamos como fazer.
- Navegue para Firewall | PFBlockerNG | GeoIP.
- Selecione a Guia Top 20, para que possamos selecionar os países que estão na lista dos 20 paises que enviam mais spam.
- Selecione os países ao qual deseja bloquear, neste exemplo China e Alemanhã.
- Em List Action, deixa a opção Deny Both.
- Salve as configurações.
Faça a atualização da base de dados através da Guia Update. Após a atualização é possível visualizar a tabela de IPs em Diagnostics | Tables, e ver as regras criadas em Firewall | Rules | Floating Rules. Abaixo a regra com o Alias pfB_Top_v4.
Uma boa forma de utilização, é ao invés de negar vários países, fazer o contrário, liberar apenas alguns países. Da mesma forma que selecionamos os países que queremos bloquear, iriamos selecionar os países que queremos permitir e posteriormente em List Action usar a ação Alias Permit para permitir tal tráfego.
Esta configuração se torna útil por utilizar uma lista menor que a lista de negação, quando no uso da prática.
É possível selecionar países específicos utilizando as outra Guias ao lada de Top 20, tal como Africa, Antartica, Asia, Europa, entre outros continentes.
E é importante lembrar que esse trafego bloqueado está relacionado somente com a WAN, permitindo que a LAN sai para qualquer lugar ainda. Então é interessante criar regras para a LAN a partir dos Alias já criados anteriormente.
Link permanente
Realmente excelente o seu tutorial André, difícil achar conteúdo tão bom e completo e em português ainda.
Implementei aqui na empresa no PFSense e foi efetivo para tentativas de ataque em nosso servidor Zimbra Colaboration Suite.
Um abraço e que Deus te dê cada vez mais sabedoria.
Link permanente
Muito Obrigado Alisson.
Link permanente
Cara, que material massa e com riqueza de detalhes. Parabéns pela iniciativa!
Quero aproveitar e te perguntar o porque do meu pfblocker ta apresentando esses erros na hora do update:
[ adaway ] Downloading update . cURL Error: 6
Could not resolve host: adaway.org Retry in 5 seconds…
. cURL Error: 6
Link permanente
Opa, tudo bem!!!
Bom, pelo retorno do erro, com certeza é resolução de nome.
Ou seu DNS não está resolvendo o nome, ou adaway.org pode não existir mais.
Link permanente
Cara, ótimo tutorial.
Só fiquei com uma dúvida. É possível criar listas separadas para permissão para alguns dominios?
Por exemplo, eu quero que a diretoria passe pela lista de sites de malware mas que nas listas de social ou algo do tipo não ocorra o bloqueio.
É possível?
Grande abraço e sucesso.
Link permanente
Bom, está não seria uma função para o pfblocker. O pfBlocker tem por função facilitar o bloqueio através de Lista.
Neste caso especifico , voc~e poderia usar o squidGuard, para criar uma lista que será bloqueada ou liberada pra determinadas pessoas , ip de origem, etc.
Link permanente
Utilizamos o BIND como DNS Server no PFSense 2.4.X, o DNS Resolver não está habilitado e sim o DNS Forwarder. Temos nosso servidor de e-mails Zimbra e nosso site também fica atrás do PFSense. É possível utilizar o pfBlocker em nosso PFSense com essa configuração que possuimos ou temos que mudar alguma coisa?
Link permanente
A principio não teria nenhum problema em usar o pfBlocker neste ambiente.